вторник, июля 24, 2012

Установка zabbix agent на synology

Работу сетевого хранилища можно контролировать через SNMP протокол. Параметры, которые можно контролировать, великое множество. Но это проще сказать, чем сделать. Если учесть, что производители еще и сами добавляют свои MIB в устройства, то разобираться в выдаваемых параметрах можно очень долго.

Но славо богу есть системы мониторинга. Я пользуюсь Zabbix. В нутри сетевых хранилищ Synology установлен linux. В систему можно установить менеджер пакетов - ipkg. С помощью этого менеджера можно установить различные пакеты. Zabbix среди пакетов нет. Потому будем устанавливать из исходников.

# ipkg install gcc make bison flex gconv-modules adduser
(...)
# cd
# mkdir soft
# cd soft/
# wget http://citylan.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.0.1/zabbix-2.0.1.tar.gz
# tar zxf zabbix-2.0.1.tar.gz
# cd zabbix-2.0.1
# ./configure --enable-agent

Скорее всего выскочит ошибка:

checking for ICONV support... no
configure: error: Unable to find iconv.h "no"

Делаем так:

# ln -s /opt/include/ /usr/include

Можете еще убедится что файл iconv.h находится именно в /opt/include/:

# find / -name iconv.h

Собираем и устанавливаем:

# make
# make install

Сразу создадим группу и пользователя для работы сервиса:

# addgroup zabbix
# adduser -G zabbix zabbix

И создадим каталог для логов:

# mkdir /var/log/zabbix/
# msk-soft-srv> chown zabbix:zabbix /var/log/zabbix/

Редактируем конфиг /usr/local/etc/zabbix_agentd.conf:

PidFile=/tmp/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=192.168.42.4
ListenIP=192.168.41.32
ListenPort=10050
SourceIP=192.168.41.32

(Некоторые параметры не обязательны.)

Пришлось написать init скрипт. Создать файл /usr/local/etc/rc.d/zabbix_agentd.sh со след. содержимым:

#!/bin/sh

# author: Konstantin Kruglov
# email: kruglovk@gmail.com
# www: k0st1an.blogspot.com
# description: init script for use on synology devices
# version: 0.1, 07/24/2012
# usage:
# cp zabbix_agend.sh /usr/local/etc/rc.d/
# chmod +x /usr/local/etc/rc.d/zabbix_agend.sh
########################################################

ConfFile="/usr/local/etc/zabbix_agentd.conf"

if [ -e ${ConfFile} ]; then
 if [ -r ${ConfFile} ]; then
  source ${ConfFile}
 else
  echo "Config file (${ConfFile}: problem read)"
  exit 1
 fi
else
 echo "Config file (${ConfFile} not found)"
 exit 1
fi


Status=`pidof zabbix_agentd > /dev/null && echo $?`

case "$1" in

start)
 echo -n "Start zabbix_agentd..."

 if [ -z "${Status}" ]; then
  /usr/local/sbin/zabbix_agentd -c ${ConfFile}

  if [ "${?}" = "0" ]; then
   sleep 1
   echo " ok"
   exit 0
  else
   sleep 1
   echo " false"
   exit 1
  fi
 else
  echo "Zabbix already run"
  exit 1;
 fi
 ;;
stop)
 echo -n "Stop zabbix_agentd..."

 if [ -z ${Status} ]; then
  echo " not runing"
  exit 1
 fi

 if [ -e "${PidFile}" ]; then
  kill `cat ${PidFile}`
  
  if [ "${?}" = "0" ]; then
   sleep 1
   echo " ok"
   exit 0
  else
   sleep 1
   echo " false"
   exit 1
  fi
 fi
 ;;
status)
 echo -n "Status zabbix_agentd..."

 if [ -z ${Status} ]; then
  echo " not runing"
 else
  echo " runing"
 fi

 exit 0
 ;;
*)
 echo "Usage: ${0} {start|stop|status}"
 exit 1
 ;;
esac

(версия поновее)

На сервере мониторинга:

# zabbix_get -s 192.168.41.32 -k system.cpu.util[,system,]
0.938541

P.S.
Скрипт не доделан. Есть желание сделать перезапуск сервиса и дотестировать до конца. Пока проблем не замечено. У вас есть право использовать такие прифексы при компиляции как --prefix, --sysconfdir (дока)

среда, июля 04, 2012

Установка php-fpm + mysql + phpMyAdmin

Все действия проводились на системе centos 5.8, с последними обновлениями:

# uname -a
Linux mska-ats-srv4 2.6.18-308.8.2.el5PAE #1 SMP Tue Jun 12 10:37:15 EDT 2012 i686 athlon i386 GNU/Linux

Предположим у вас уже есть настроенный и рабочий nginx.

# yum --enablerepo=remi install mysql-server php-fpm php-mysql php-mcrypt php-mbstring


mysql

Указываем чтоб mysqld запускался автоматически при загрузки системы:

# chkconfig mysqld on

При первом запуске:

# /etc/init.d/mysqld start

Выдается информация как прописать пароль root'а:

# mysqladmin -u root password


php-fpm

После установки php-fpm в конфигурационном файле /etc/php-fpm.d/www.conf изменить след. значения вот так:

user = nginx
group = nginx

Теперь php-fpm будет запускаться от имени пользователя nginx. Далее:

# chkconfig php-fpm on
# /etc/init.d/php-fpm start

Первая команда указывает, что нужно запускать php-fpm при запуске системы. Вторая стартует php-fpm.


nginx

Конфигурационный файл для сайта phpMyAdmin:

server {
    listen       80;
    server_name  db.domain.ru;
    root         /var/local/httpd/domain.ru/db/public_html;

    location / {
        index  index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        include        fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }
}

Рестартнем nginx:

# /etc/init.d/nginx restart


phpMyAdmin

Далее надо загрузить последную версию phpMyAdmin и распаковать:

# cd /var/local/httpd/domain.ru/db/public_html/
# wget http://citylan.dl.sourceforge.net/project/phpmyadmin/phpMyAdmin/3.5.1/phpMyAdmin-3.5.1-all-languages.tar.gz
# tar zxf phpMyAdmin-3.5.1-all-languages.tar.gz
# mv phpMyAdmin-3.5.1-all-languages/* ./
# rm -fr phpMyAdmin-3.5.1-all-languages*
# mv config.sample.inc.php config.inc.php

Рекомендуется в конфигурационном файле config.inc.php исправить значение параметра $cfg['blowfish_secret'] на свое. Что нить длиной на 16 - 20 цифр и букв.

Теперь пробуем зайти на db.domain.ru, должно появиться окно Welcome to phpMyAdmin с вводом логина и пароля.


Errors

Если при заходе на страницу показывается сообщение - file not found, добавить в /etc/nginx/fastcgi_params:

fastcgi_param   SCRIPT_FILENAME         $request_filename;

Или проверить есть ли такая запись. При заходе на странцу может появляется сообщение:

phpMyAdmin - Error
Cannot start session without errors, please check errors given
in your PHP and/or webserver log file and configure your PHP
installation properly.

Надо проверить в /etc/php.ini значение параметра session.save_path и передать права на каталог nginx:

# cat /etc/php.ini | grep session.save_path
;     session.save_path = "N;/path"
;     session.save_path = "N;MODE;/path"
session.save_path = "/var/lib/php/session"
;       (see session.save_path above), then garbage collection does *not*
# mkdir /var/lib/php/session
# chown nginx:nginx /var/lib/php/session

UP: 09/26/2012
phpMyAdmin
После захода в админку phpmyadmin, снизу будет красная надпись, что-то там про blowfish_secret. Это важный параметр, отвечающий за сохранность сессии. В каталоге с phpmyadmin надо найти файл config.sample.inc.php, открыть его и отредактировать параметр $cfg['blowfish_secret']:

$cfg['blowfish_secret'] = 'kdsfjffjl2j294h1o4hfiyf892';

Как-то так. И переименовать файл:

mv config.sample.inc.php config.inc.php

mysql

Можно немного обезопасить сервер mysql если повесить его на интерфейс lo:

# echo bind-address=127.0.0.1 >> /etc/my.cnf

Тогда запросы mysql будет обслуживать только от локальных приложений.