SkillAgentSearch skills...

Zabbix

Zabbix scripts & templates for Apache, Asterisk, Elasticsearch, Disk IO, MongoDB, MySQL, Nginx, Oracle, Php-fpm, Postfix, RabbitMQ, Redis, Sphinx, PostgreSQL

Install / Use

/learn @RuslanMahotkin/Zabbix
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

zabbix

Набор сценариев и шаблонов для мониторинга различных сервисов.

Основные принципы написания сценариев:

  • простота: небольшой объем кода;
  • единообразие: одинаковые подходы к получению. обработке и отправке на сервер статистики;
  • штатные средства: использование идущих в дистрибутиве и устанавливаемых по умолчанию утилит(в основном);
  • данные типа траппер;
  • данные получаются одним запросом к сервису;
  • данные отправляются на сервер одним пакетом;
  • сбор/отправка всех данных и обнаружение в одном сценарии.

Сценарии собирают не все доступные данные - фильтрация осуществляется или в самом сценарии, или из-за отсутствия их описания в шаблоне сервером Zabbix.

Версии сервисов:

  • Apache 2.2.15;
  • Asterisk 16.3;
  • Elasticsearch 1.7.1;
  • Mongodb 4.0.9;
  • MySQL 8.0.15;
  • Nginx 1.16.0;
  • Oracle 10g;
  • PHP-FPM 7.3.4;
  • RabbitMQ 3.6.6(erlang 19.2);
  • Redis 5.0.4;
  • Sphinx 2.2.11.

Общее описание работы сценария:

  1. Сценарий вызывается Zabbix-сервером для получения значения описанной в шаблоне переменной типа zabbix-агент Status.
  2. Сценарий получает, фильтрует, обрабатывает и отправляет на сервер zabbix_sender-ом все данные за один раз.

Linux (CentOS 6.X)

Сценарии:

  • написаны на bash;
  • получают данные curl-ом или штатным клиентом сервиса;
  • фильтруют/обрабатывают данные с помощью awk;
  • отправляют данные zabbix_sender-ом;
  • размещаются в каталоге /etc/zabbix.

Порядок установки:

  • Установка пакетов агента и утилиты отправки данных: zabbix, zabbix-agent, zabbix-sender.

  • Запуск агента при старте системы и права на каталог/файл конфигурации:

 chmod 700 /etc/rc.d/init.d/zabbix-agent; chkconfig zabbix-agent on
 chmod 2750 /etc/zabbix; chgrp -R zabbix /etc/zabbix
 chmod 640 /etc/zabbix/zabbix_agentd.conf
  • Разрешение портов в файерволе:
 # IP адрес сервера Zabbix
 $ZabbServIP='X.X.X.X'
 # Агент
 /sbin/iptables -A INPUT  -p tcp --dport 10050 -s $ZabbServIP -j ACCEPT
 /sbin/iptables -A OUTPUT -p tcp --sport 10050 -d $ZabbServIP -j ACCEPT
 # Сервер
 /sbin/iptables -A OUTPUT -p tcp --dport 10051 -d $ZabbServIP -j ACCEPT
 /sbin/iptables -A INPUT  -p tcp --sport 10051 -s $ZabbServIP -j ACCEPT
  • Настройка агента в файле /etc/zabbix/zabbix_agentd.conf:
 SourceIP		= IP.адрес.zabbix.агента
 Server			= IP.адрес.zabbix.сервера
 ListenIP		= IP.адрес.zabbix.агента
 ServerActive		= IP.адрес.zabbix.сервера
 Timeout		= >5
  • Установка требуемых сценариев.

Для обработки JSON данных в мониторинге Elasticsearch, MongoDB и RabbitMQ используется исправленный JSON.sh (http://github.com/dominictarr/JSON.sh).

Apache, шаблон mytemplate-apache-trap.xml

Предполагается, что Apache работает за nginx-ом.

Сценарий отправки статистики сервера Apache на сервер Zabbix

chmod 750 /etc/zabbix/apache_stat.sh
chgrp zabbix /etc/zabbix/apache_stat.sh

/etc/nginx/nginx.conf - добавить в сервер мониторинга (описан в разделе nginx)

  # Статистика apache
  location = /as {
   # Адрес проксируемоего сервера
   proxy_pass		http://127.0.0.1;
  }

В httpd.conf установить параметры:

  • ServerName - возвращаемое hostname имя хоста;
  • Allow from - IP адрес сервера.

/etc/https/conf/httpd.conf - создание сервера мониторинга

# Модуль статуса
LoadModule		status_module modules/mod_status.so
...
# Сохранение расширенной информации о каждом запросе
ExtendedStatus		On
...
# Мониторинг ----------------------------------------------
<VirtualHost 127.0.0.1:80>
 # Имя сервера
 ServerName		DNS.имя.сервера.
 # Отключение журнализации
 CustomLog		/dev/null combined

 <Location /as>
  SetHandler		server-status
  Order			allow,deny
  Allow			from	IP.адрес.сер.вера
 </Location>
</VirtualHost>

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= apache_status,/etc/zabbix/apache_stat.sh

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

service nginx reload; service httpd restart; service zabbix-agent restart

Asterisk, шаблон mytemplate-asterisk-trap.xml

Установить утилиту Netcat - пакет nc(в CentOS 7 - nmap-ncat).

В файле настройки модуля AMI и сценарии в подстроке

... Username: Пользователь_мониторинга\r\nSecret: Пароль_мониторинга\r\n ...

установить свои значения 'Пользователь_мониторинга' и 'Пароль_мониторинга'.

/etc/asterisk/manager.conf - настроить модуль AMI и задать пользователя

[general]
enabled = yes
bindaddr = 127.0.0.1
allowmultiplelogin = no
displayconnects = no
authtimeout = 5
authlimit = 3

[Пользователь_мониторинга]
secret = Пароль_мониторинга
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
write = command,reporting

Перезапустить модуль AMI

asterisk -rx 'manager reload'

Сценарий отправки статистики сервера Asterisk на сервер Zabbix

chmod 750 /etc/zabbix/asterisk_stat.sh
chgrp zabbix /etc/zabbix/asterisk_stat.sh

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= asterisk_status,/etc/zabbix/asterisk_stat.sh

Перезапуск агента

service zabbix-agent restart

Elasticsearch, шаблон mytemplate-elasticsearch-trap.xml

Сценарий отправки статистики сервера Elasticsearch на сервер Zabbix

chmod 750 /etc/zabbix/{elasticsearch_stat.sh,JSON.sh}
chgrp zabbix /etc/zabbix/{elasticsearch_stat.sh,JSON.sh}

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= elasticsearch_status,/etc/zabbix/elasticsearch_stat.sh

Перезапуск агента

service zabbix-agent restart

IO - дисковый ввод/вывод, шаблон mytemplate-io-trap.xml

Так как сценарий выполняет вызов iostat с 5 секундным замером, то параметр Timeout в zabbix_agentd.conf должен быть больше 5.

Установить пакет sysstat (версии не ниже 9.0.4-27). Удалить сбор статистики по cron

rm -f /etc/cron.d/sysstat

Сценарий отправки статистики дискового ввода-вывода на сервер Zabbix

chmod 750 /etc/zabbix/io_stat.sh
chgrp zabbix /etc/zabbix/io_stat.sh

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= iostat_status,/etc/zabbix/io_stat.sh
UserParameter		= iostat.discovery_disks,/etc/zabbix/io_stat.sh disks

Перезапуск агента

service zabbix-agent restart

MongoDB, шаблон mytemplate-mongodb-trap.xml

Сценарий отправки статистики сервера MongoDB на сервер Zabbix

chmod 750 /etc/zabbix/{JSON.sh,mongodb_stat.sh}
chgrp zabbix /etc/zabbix/{JSON.sh,mongodb_stat.sh}

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= mongodb_status,/etc/zabbix/mongodb_stat.sh
UserParameter		= mongodb.discovery_db,/etc/zabbix/mongodb_stat.sh db

Перезапуск агента

service zabbix-agent restart

MySQL, шаблон mytemplate-mysql-trap.xml

В сценарии в подстроке

... --user=Пользователь_мониторинга --password=Пароль_мониторинга ...

установить свои значения 'Пользователь_мониторинга' и 'Пароль_мониторинга'.

Сценарий отправки статистики сервера MySQL на сервер Zabbix

chmod 750 /etc/zabbix/mysql_stat.sh
chgrp zabbix /etc/zabbix/mysql_stat.sh

Mysql-пользователь мониторинга

mysql -p
mysql> GRANT USAGE ON *.* TO 'Пользователь_мониторинга'@'localhost' IDENTIFIED BY 'Пароль_мониторинга';
mysql> FLUSH PRIVILEGES;
mysql> \q

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= mysql_status,/etc/zabbix/mysql_stat.sh

Перезапуск агента

service zabbix-agent restart

MySQL репликация, шаблон mytemplate-mysql-slave-trap.xml

Сценарий отправки статистики репликации сервера MySQL на сервер Zabbix

chmod 750 /etc/zabbix/mysql_slave_stat.sh
chgrp zabbix /etc/zabbix/mysql_slave_stat.sh

Привилегия клиента репликации Mysql-пользователю мониторинга

mysql -p
mysql> GRANT REPLICATION CLIENT ON *.* TO 'Пользователь_мониторинга'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> \q

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= mysql_slave_status,/etc/zabbix/mysql_slave_stat.sh

Перезапуск агента

service zabbix-agent restart

Nginx, шаблон mytemplate-nginx-trap.xml

Сценарий отправки статистики сервера Nginx на сервер Zabbix

chmod 750 /etc/zabbix/nginx_stat.sh
chgrp zabbix /etc/zabbix/nginx_stat.sh

В httpd.conf установить параметры:

  • server_name - возвращаемое hostname имя хоста;
  • listen и allow - IP адрес сервера.

/etc/nginx/nginx.conf - создание сервера мониторинга

 # Сервер мониторинга -------------------------------------
 server {
  # Прослушиваемые адрес:порт(*:80|*:8000)
  listen		ip.адрес.сер.вера:80;
  # Имя и псевдонимы виртуального сервера(_)
  server_name		DNS.имя.сервера;

  # Отключение журнализации
  access_log		off;
  # Таймаут закрытия keep-alive соединения со стороны сервера в секундах(75)
  keepalive_timeout	0;

  ### Доступ к серверу
  # Локальный
  allow			ip.адрес.сер.вера;
  # Запрет доступа остальным
  deny			all;

  # Статистика nginx
  location = /ns {
   # Включение обработчика статуса
   stub_status		on;
  }
 }

/etc/zabbix/zabbix_agentd.conf - подключение сценария к zabbix-агенту

UserParameter		= nginx_status,/etc/zabbix/nginx_stat.sh

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

service nginx reload; service zabbix-agent restart

Oracle, шаблон mytemplate-oracle-trap.xml

Сценарий отправки статистики сервера Oracle на сервер Zabbix

chmod 750 /etc/zabbix/{oracle_stat.sh,oraenv}
chgrp zabbix /etc/zabbix/{oracle_stat.sh,oraenv}

Добавление пользователя, под которым запущен агент zabbix, в группу для доступа к SQL Plus

usermod --append --groups oinstall zabbix

/etc/zabbix/oraenv - задать переменные окружения Oracle

export ORACLE_HOME=
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=
export TZ=

В сценарии в строке

conn Пользователь_мониторинга/Пароль_мониторинга

установить свои значения 'Пользователь_мониторинга' и 'Пароль_мониторинга'.

Создание Oracle-пользователя и присвоение ему прав для всех БД. БД задается установкой переменной ORACLE_SID в ее SID перед запуском sqlplus

su - oracle
View on GitHub
GitHub Stars127
CategoryData
Updated6d ago
Forks68

Languages

Shell

Security Score

80/100

Audited on Mar 26, 2026

No findings