Мониторинг приложений с New Relic в Unix/Linux

Мониторинг приложений с New Relic в Unix/Linux

Недавно познакомился с замечательным инструментом для мониторинга New Relic. И в своей статье «Мониторинг приложений с New Relic в Unix/Linux» я расскажу о мониторинге приложений с New Relic в Unix/Linux и приведу готовый скрипт для установки данной утилиты на своем сервере с минимальными усилиями.

Установка New Relic в Unix/Linux

По мере возможностей, я буду дописывать данную статью и наполнять ее полезной информацией. Но сейчас, я расскажу как выполнить установку New Relic на rpm’s системы, на примере CentOS 6/7.

ВНИМАНИЕ! Чтобы использовать New Relic, необходимо зарегистрироваться на официальном сайте и получить (в админ панели) регистрационный ключ.

Установка New Relic на Debian/Ubuntu

Для Debian/Ubuntu серверов, необходимо добавить репозиторий:

# echo deb http://apt.newrelic.com/debian/ newrelic non-free | sudo tee /etc/apt/sources.list.d/newrelic.list && wget -O- https://download.newrelic.com/548C16BF.gpg | sudo apt-key add -

Обновляем репозитории:

# apt-get update

И выполняем установку:

# apt-get install newrelic-sysmond

Настройка лицензии:

# nrsysmond-config --set license_key=06753c88cf98ef22a1b5d97147026fe7c6482fcb

PS: 06753c88cf98ef22a1b5d97147026fe7c6482fcb — это мой регистрационный ключ, его нужно сменить на свой!

Запускаем службу:

# service newrelic-sysmond start

Настройка New Relic

Выполняем команду (чтобы получить свое доменное имя -хостнейм):

# hostname

Идем далее, открываем конфигурационный файл:

# vim /etc/newrelic/nrsysmond.cfg

И вносим небольшие изменения:

[...]
license_key=06753c88cf98ef22a1b5d97147026fe7c6482fcb
[...]

Так же, меняем (прописываем) хостнейм:

[...]
hostname=linux-notes
[...]

И перезапускаем демон с new relic:

# service newrelic-sysmond restart

Установка New Relic на CentOS

И так, я буду использовать CentOS 6/7 и сейчас я установлю new relic.

Для начала, обновим все ПО:

# yum update -y && yum upgrade -y

Далее, подключим репозиторий с  new relic:

Если используете 32-битную ОС:

# rpm -Uvh https://yum.newrelic.com/pub/newrelic/el5/i386/newrelic-repo-5-3.noarch.rpm

Если используете 64-битную ОС:

# rpm -Uvh https://yum.newrelic.com/pub/newrelic/el5/x86_64/newrelic-repo-5-3.noarch.rpm

Обновим список:

# yum repolist

И выполняем установку new relic:

# yum install newrelic-sysmond newrelic-php5 -y

Сейчас, необходимо прописать лицензионный ключ чтобы new relic заработал, имеется 2 способа:

  1. Использовать утилиту:
    # nrsysmond-config --set license_key=YOUR_LICENSE_KEY
  2. Отредактировать конфигурационный файл вручную:
    # vim /etc/newrelic/nrsysmond.cfg

    И привести к такому виду:

    license_key=REPLACE_WITH_REAL_KEY
    loglevel=info
    logfile=/var/log/newrelic/nrsysmond.log

Т.к я установил поддержку php, то нужно подключить ее:

# vim /etc/php.d/newrelic.ini

И приводим к такому виду:

extension = "newrelic.so"
[newrelic]
newrelic.license = "REPLACE_WITH_REAL_KEY"
newrelic.logfile = "/var/log/newrelic/php_agent.log"
newrelic.loglevel = "info"
newrelic.appname = "PHP Application" # Note: this is the name that will appear in the New Relic site monitoring page
newrelic.daemon.logfile = "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.loglevel = "info"
newrelic.transaction_tracer.record_sql = "off"

Это еще не все, следующим действием будет конфигурирование newrelic.cfg, но для начала скопируем конфиг:

# cp -p /etc/newrelic/newrelic.cfg.template /etc/newrelic/newrelic.cfg

Приводим к виду:

#  cat /etc/newrelic/newrelic.cfg|grep -Ev "(#|^$)"

logfile=/var/log/newrelic/newrelic-daemon.log
loglevel=info
auditlog=/var/log/newrelic/audit.log

Последним действием будет перезапуск служб.

Если используете веб-сервер nginx:

# service nginx restart;  tail -f /var/log/nginx/error.log

Проверяем запустился ли он:

# ps -ef | grep nginx

Если используете веб-сервер apache:

# service httpd restart; tail -f /var/log/httpd/error_log

Проверяем запустился ли он:

# ps -ef | grep apache

И, собственно, запускаем (перезапускаем) сам New Relic:

# /etc/init.d/newrelic-sysmond restart;

Смотрим чтобы не было никаких ошибок:

# tail -f /var/log/newrelic/nrsysmond.log

И тоже самое проделываем для демона:

# /etc/init.d/newrelic-daemon restart; tail -f /var/log/newrelic/newrelic-daemon.log

Проверяем запустился ли он:

# ps -ef | grep newrelic

ГОТОВО!

PS: Как и обещал, вот готовый скрипт по установке New Relic для CentOS 6/7.

# cd /usr/local/src && vim Install_New_Relic_CentOS.sh

Вот сам скрипт:

#!/bin/bash -x

# CREATED:
# vitaliy.natarov@yahoo.com
#
# Unix/Linux blog:
# http://linux-notes.org
# Vitaliy Natarov
#

#Update OS 
yum update -y yum upgrade -y

Check_Newrelic_User=$(grep newrelic /etc/passwd)
Check_Newrelic_Group=$(grep newrelic /etc/group)


if [ -z "$Check_Newrelic_User" ]; then
	if [ -z "$Check_Newrelic_Group" ]; then
		# create newrelic group
		 groupadd -g 495 newrelic
		# create newrelic user and assign to newrelic group
		 useradd -c "New Relic daemons" -s /sbin/nologin -m -d /home/newrelic -g 495 -u 495 newrelic 
		#  Note: do not set a password
	fi
fi	

echo "$Check_Newrelic_User"
echo "$Check_Newrelic_Group"

# Add REPOS
Arch=$(uname -m)
echo "$Arch";
if [ "$Arch" == "x86_64" ]; then
       Arch="x86_64"
elif [ "$Arch" == "i386|i686" ]; then
       Arch="i386"
else 
	  echo "$Arch";	          
fi           

if [ ! -f /etc/yum.repos.d/newrelic.repo ]; then 
	  rpm -Uvh https://yum.newrelic.com/pub/newrelic/el5/$Arch/newrelic-repo-5-3.noarch.rpm 
	  # Package installation
	  yum install newrelic-sysmond newrelic-php5 -y
else
	  Check_Newrelic_Package=$(rpm -qa | grep -E "(newrelic-sysmond|newrelic-php5)")
	  if [ -z "$Check_Newrelic_Package" ]; then
	  		yum install newrelic-sysmond newrelic-php5 -y
	  fi		
fi 

#
# nrsysmond-config --set license_key=YOUR_LICENSE_KEY
#

YOUR_LICENSE_KEY="06753c88cf98ef22a1b5d97147026fe7c6482fcb"

# Complete nrsysmond.cfg
#cp /etc/newrelic/nrsysmond.cfg /etc/newrelic/nrsysmond.cfg_bk
cp /etc/newrelic/nrsysmond.cfg{,_bk}

echo -e 'license_key=YOUR_LICENSE_KEY
loglevel=info 
logfile=/var/log/newrelic/nrsysmond.log' > /etc/newrelic/nrsysmond.cfg

sed -i -e "s/license_key=YOUR_LICENSE_KEY/license_key=$YOUR_LICENSE_KEY/g" /etc/newrelic/nrsysmond.cfg
#cat /etc/newrelic/nrsysmond.cfg | grep -Ev "(#|^$)"
 #license_key=REPLACE_WITH_REAL_KEY
 #loglevel=info
 #logfile=/var/log/newrelic/nrsysmond.log

# Lines to be uncommented
cp /etc/php.d/newrelic.ini /etc/php.d/newrelic.ini_bk
echo -e 'extension = "newrelic.so"
[newrelic]
newrelic.license = "YOUR_LICENSE_KEY"
newrelic.logfile = "/var/log/newrelic/php_agent.log"
newrelic.loglevel = "info"
newrelic.appname = "PHP Application" #  Note: this is the name that will appear in the New Relic site monitoring page
newrelic.daemon.logfile = "/var/log/newrelic/newrelic-daemon.log"
newrelic.daemon.loglevel = "info"
newrelic.transaction_tracer.record_sql = "off"' > /etc/php.d/newrelic.ini

sed -i -e "s/YOUR_LICENSE_KEY/$YOUR_LICENSE_KEY/g" /etc/php.d/newrelic.ini

# cat /etc/php.d/newrelic.ini | grep -Ev "(;|^$)"
 #extension = "newrelic.so"
 #[newrelic]
 #newrelic.license = "REPLACE_WITH_REAL_KEY"
 #newrelic.logfile = "/var/log/newrelic/php_agent.log"
 #newrelic.loglevel = "info"
 #newrelic.appname = "PHP Application" #  Note: this is the name that will appear in the New Relic site monitoring page
 #newrelic.daemon.logfile = "/var/log/newrelic/newrelic-daemon.log"
 #newrelic.daemon.loglevel = "info"
 #newrelic.transaction_tracer.record_sql = "off"


#Complete newrelic.cfg configuration
cp -p /etc/newrelic/newrelic.cfg.template /etc/newrelic/newrelic.cfg
echo -e 'logfile=/var/log/newrelic/newrelic-daemon.log
loglevel=info
auditlog=/var/log/newrelic/audit.log' > /etc/newrelic/newrelic.cfg

 #cat /etc/newrelic/newrelic.cfg|grep -Ev "(#|^$)"
  #logfile=/var/log/newrelic/newrelic-daemon.log
  #loglevel=info
  #auditlog=/var/log/newrelic/audit.log

#Restart Web services
if  type -path "nginx" > /dev/null 2>&1; then			 
    service nginx restart 
    #tail -f /var/log/nginx/error.log 
    ps -ef | grep nginx
elif type -path "httpd" > /dev/null 2>&1; then      
 	service httpd restart 
    #tail -f /var/log/httpd/error_log
    ps -ef | grep apache
else
     echo "Please check which web-server installed on `hostname`";         
fi 
#Restart New Relic services
 chown newrelic:newrelic /etc/newrelic/*
 /etc/init.d/newrelic-sysmond restart 
 #tail -f /var/log/newrelic/nrsysmond.log  
 /etc/init.d/newrelic-daemon restart
 #tail -f /var/log/newrelic/newrelic-daemon.log
 ps -ef | grep newrelic

echo "|---------------------------------------------------|";
echo "|--------------------FINISHED-----------------------|";
echo "|---------------------------------------------------|";

Вы можете скачать и использовать его так:

# cd /usr/local/src && wget http://linux-notes.org/wp-content/uploads/scripts/newrelic/Install_New_Relic_CentOS.sh

В данном скрипте прописан мой регистрационный ключ, по этому, нужно отредактировать и заменить его на свой. Открываем скрипт и ищем строку (вроде бы 57 строка):

[...]
YOUR_LICENSE_KEY="06753c88cf98ef22a1b5d97147026fe7c6482fcb"
[...]

И прописываем свой ключ, после чего, сохраняем и запускаем скрипт:

# bash /usr/local/src/Install_New_Relic_CentOS.sh

Удаление new relic

# yum remove newrelic-sysmond newrelic-php5

Установка New Relic на другие Unix/Linux ОС

Не было нужды устанавливать на другие Unix/LInux ОС. Если интересно, могу дополнить данный материал.

Установка плагинов для New Relic

Существует довольно много плагинов для New Relic, при необходимости, можно установить их. Я думаю скоро я напишу и для этого скрипт.

А на этом у меня все, тема «Мониторинг приложений с New Relic в Unix/Linux» завершена.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.