Zabbix: различия между версиями

Материал из support.qbpro.ru
imported>Vix
 
(не показано 29 промежуточных версий 2 участников)
Строка 1: Строка 1:
[[Файл:Zabbix2.png]]
[[Файл:Zabbix2.png|60px]]
<hr>
<hr>
== Установка и настройка ==
== '''Установка и настройка''' ==
'''''- Система Debian Jessie (8)'''''
'''''- Система Debian Jessie (8)'''''


Строка 12: Строка 12:
  wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591" | apt-key add -
  wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591" | apt-key add -
  wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591-EL5" | apt-key add -
  wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591-EL5" | apt-key add -
* для Debian 10
apt-key adv --keyserver keys.gnupg.net --recv-keys D13D58E479EA5ED4


  apt-get update
  apt-get update
Строка 82: Строка 85:
* При первичной регистрации '''login:Admin password:zabbix'''
* При первичной регистрации '''login:Admin password:zabbix'''


==Zabbix-Proxy==
=='''Zabbix-Proxy'''==
* Устновка:
apt install zabbix-proxy-sqlite3 zabbix-sql-scripts
* Создаем базу данных:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
cat /usr/share/zabbix-sql-scripts/sqlite3/proxy.sql|sqlite3 /var/lib/zabbix/zabbix.db
* Пример zabbix_proxy.conf для Sqlite3
* Пример zabbix_proxy.conf для Sqlite3
  ProxyMode=0
  ProxyMode=0
  Server=IP do zabbix server (master)
  Server='''IP-адрес сервера zabbix (master)'''
  ServerPort=10051
  ServerPort=10051
  Hostname=Nome do proxy que foi criado no Zabbix server, tem quer ser igual
  Hostname='''Имя прокси-сервера, который был создан на сервере Zabbix, оно должно быть одинаковым'''
  LogFile=/var/log/zabbix/zabbix_proxy.log
  LogFile=/var/log/zabbix/zabbix_proxy.log
  LogFileSize=100
  LogFileSize=100
  DebugLevel=3
  DebugLevel=3
  PidFile=/var/log/zabbix/zabbix_proxy.pid
  PidFile=/var/log/zabbix/zabbix_proxy.pid
  DBName=/var/lib/sqlite/zabbix.db # SQLite não vai pedir usuário ou senha
  DBName='''/var/lib/zabbix/zabbix.db # SQLite не будет запрашивать пользователя или пароль'''
  DBSocket=/var/lib/mysql/mysql.sock
  DBSocket=/var/lib/mysql/mysql.sock
  ProxyLocalBuffer=1
  ProxyLocalBuffer=1
Строка 123: Строка 132:


=='''Полезные советы'''==
=='''Полезные советы'''==
* '''Если zabbix server - не один:'''
* '''В агенте прописать так:'''
...
Server=192.168.0.1,192.168.0.2
ServerActive=192.168.0.1,192.168.0.2
...
* '''Проблема:''' Триггер с элементом vm.memory.size
* '''Проблема:''' Триггер с элементом vm.memory.size
  Пытаюсь мониторить переполнение RAM (если меньше 10% свободной RAM в течении 5 минут) и создаю триггер:
  Пытаюсь мониторить переполнение RAM (если меньше 10% свободной RAM в течении 5 минут) и создаю триггер:
Строка 166: Строка 182:
   chmod 710 /usr/bin/fping   
   chmod 710 /usr/bin/fping   
   chmod ug+s /usr/bin/fping
   chmod ug+s /usr/bin/fping
* взято [https://ip-connection.blogspot.com/2016/11/zabbix-fping-cant-create-socket-must.html тут]
<hr>
'''* Проблема: : [111] Connection refused'''
'''* Решение:''' commented out the line #ServerActive=127.0.0.1 from the agent configuration file /etc/zabbix/zabbix_agentd.conf.
или закомментируйте строку активного сервера и укажите только просто ip сервера.


* взято [https://ip-connection.blogspot.com/2016/11/zabbix-fping-cant-create-socket-must.html тут]
* [https://bobcares.com/blog/zabbix-111-connection-refused/ источник]
<hr>
<hr>
* [[Zabbix ping: socket: Операция не позволена Не удалось выполнить скрипт]]


==Использование SpeedTest-Cli вместе с Zabbix==
=='''Использование SpeedTest-Cli вместе с Zabbix'''==
В этой статье я продемонстрирую, как мы можем использовать скрипты в Zabbix через UserParameter. Я буду использовать SpeedTest-cli в качестве примера, для выполнения тестов скорости загрузки интернет канала.
В этой статье я продемонстрирую, как мы можем использовать скрипты в Zabbix через UserParameter. Я буду использовать SpeedTest-cli в качестве примера, для выполнения тестов скорости загрузки интернет канала.
Мы будем использовать UserParameter, он используется, когда нам нужна информация, которую сам zabbix не предоставляет, мы можем использовать команды и скрипты, не беспокоясь о том, поддерживает ли их zabbix, мы можем создавать собственные ключи.
Мы будем использовать UserParameter, он используется, когда нам нужна информация, которую сам zabbix не предоставляет, мы можем использовать команды и скрипты, не беспокоясь о том, поддерживает ли их zabbix, мы можем создавать собственные ключи.
Строка 220: Строка 242:
В ключе определяем ключ, который мы создали в агенте.<br>
В ключе определяем ключ, который мы создали в агенте.<br>
В окне Интервал обновления укажите 20-30мин<br>
В окне Интервал обновления укажите 20-30мин<br>
Вы можете найти больше о пользовательских интервалах [https://www.zabbix.com/documentation/3.4/ru/manual/config/items/item/custom_intervals здесь].
Вы можете найти больше о пользовательских интервалах <br>[https://www.zabbix.com/documentation/3.4/ru/manual/config/items/item/custom_intervals здесь].


Повторяем действия для upload:
Повторяем действия для upload:
Строка 227: Строка 249:
В ключе определяем ключ, который мы создали в агенте.
В ключе определяем ключ, который мы создали в агенте.
В окне Интервал обновления укажите 20-30мин
В окне Интервал обновления укажите 20-30мин
Вы можете найти больше о пользовательских интервалах здесь.
Вы можете найти больше о пользовательских интервалах [https://www.zabbix.com/documentation/3.4/ru/manual/config/items/item/custom_intervals здесь].<br>
[[Файл:Снимок-экрана-2017-11-27-в-10.32.53.png]]


Повторяем действия для upload<br>
Повторяем действия для upload<br>
Дождитесь появления запланированного обновления в Zabbix.<br>
[[Файл:Снимок-экрана-2017-11-27-в-10.33.29-370x340.png]]
[[%D0%A4%D0%B0%D0%B9%D0%BB:%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-2017-11-27-%D0%B2-10.36.37-1024x278.png]
* Дождитесь появления запланированного обновления в Zabbix.<br>
[[Файл:Снимок-экрана-2017-11-27-в-10.36.37-1024x278.png]]


*[https://xakinfo.ru/os/speedtest-cli-zabbix/ взято тут]
* Пример команды из консоли - получение нагрузки CPU:
zabbix_get -s 10.0.0.143 -p 10050 -k "system.cpu.load[all,avg15]"


'''ИСТОЧНИКИ:'''
=='''ИСТОЧНИКИ'''==
<hr>
<hr>
* [http://it.rdcm.com/archives/category/monitoring Рубрика: Monitoring]
* [http://it.rdcm.com/archives/category/monitoring Рубрика: Monitoring]
Строка 249: Строка 276:
* [http://linux-notes.org/optimizatsiya-nastroek-zabbix/ Оптимизация настроек Zabbix]
* [http://linux-notes.org/optimizatsiya-nastroek-zabbix/ Оптимизация настроек Zabbix]
* [https://glaber.io/ '''Fork Zabbix - оптимизированный для снижения нагрузки CPU и повышения кластеризации''']
* [https://glaber.io/ '''Fork Zabbix - оптимизированный для снижения нагрузки CPU и повышения кластеризации''']
=='''ПОЛЕЗНОЕ'''==
* [https://github.com/burner1024/zabbix-sql/blob/master/delete-old-data.pg.sql Скрипты чистки базы zabbix]
* [https://github.com/burner1024/zabbix-sql/blob/master/delete-old-data.pg.sql Скрипты чистки базы zabbix]
* [https://habr.com/ru/post/223365/ Мониторинг транков Asterisk с помощью низкоуровнего обнаружения Zabbix]
* [https://www.zabbix.com/documentation/current/manual/installation/install_from_packages/debian_ubuntu Zabbix Documentation 5.2]
* [https://github.com/kvaps/zabbix-linux-container-template Zabbix: solve memory monitoring issue inside LXC containers]
* [https://internet-lab.ru/zabbix_mdadm_linux Zabbix — мониторинг программных RAID массивов в Linux]
* [https://habr.com/ru/companies/first/articles/681522/ Мониторинг дисков и программных RAID-массивов с помощью Zabbix]
* [https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/app/haproxy_agent?at=refs%2Fheads%2Ffeature%2FZBX-23818-6.0 готовые шаблоны для разных релизов zabbix]

Текущая версия от 19:57, 7 февраля 2024

Zabbix2.png


Установка и настройка

- Система Debian Jessie (8)

  • устанавливаем postgresql, читать тут PostgreSQL
  • устанавливаем необходимые пакеты:
echo "deb-src http://repo.zabbix.com/zabbix/3.4/debian stretch main" > /etc/apt/sources.list.d/zabbix.list
wget -O - "http://repo.zabbix.com/zabbix-official-repo.key" | apt-key add -
wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-79EA5ED4" | apt-key add -
wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591" | apt-key add -
wget -O - "https://repo.zabbix.com/RPM-GPG-KEY-ZABBIX-A14FE591-EL5" | apt-key add -
  • для Debian 10
apt-key adv --keyserver keys.gnupg.net --recv-keys D13D58E479EA5ED4
apt-get update
apt-get install zabbix-agent zabbix-frontend-php zabbix-proxy-pgsql zabbix-server-pgsql php-fpm nginx
  • создаем администратора базы zabbix
CREATE USER zabbixadmin WITH PASSWORD 'mypassword';
  • создаем базу данных для zabbix
CREATE DATABASE "zabbix"
 WITH OWNER "zabbixadmin"
 ENCODING 'UTF8'
 LC_COLLATE = 'ru_RU.UTF-8'
 LC_CTYPE = 'ru_RU.UTF-8';
  • даем права на базу администратору
GRANT ALL PRIVILEGES ON DATABASE "zabbix" to zabbixadmin;
  • теперь необходимо в эту базу загрузить шаблоны и схему (для postgresql)
zcat /usr/share/zabbix-server-pgsql/{schema,images,data}.sql.gz|psql -h 127.0.0.1 zabbix zabbixadmin

{!} - для версии 3.4:

zcat /usr/share/doc/zabbix-server-pgsql/create.sql.gz|psql -h 127.0.0.1 zabbix zabbixadmin
  • настраиваем php-fpm
cat /etc/php5/fpm/pool.d/www.conf
....
;listen = /var/run/php5-fpm.sock
listen = 127.0.0.1:9000

....

cat /etc/php5/fpm/php.ini
....
disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,
pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,
pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, .... date.timezone = Europe/Moscow .... max_execution_time = 300 .... post_max_size = 16M .... always_populate_raw_post_data = -1 ....
  • (!) - возможно zabbix при первом запуске еще что-то попросит, измените как будет указано.
  • nginx - пример наcтройки для zabbix:
 server {
    listen      10.0.1.40:88;
    server_name zabbix;
    root /home/www/zabbix;
    location / {
        index   index.html index.php;
    }

    location ~* \.(gif|jpg|png)$ {
        expires 30d;
    }

    location ~ \.php$ {
        fastcgi_pass  localhost:9000;
        fastcgi_param SCRIPT_FILENAME
                      $document_root$fastcgi_script_name;
        include       fastcgi_params;
    } 
}
  • После успешного прохождения первичных настроек Zabbix, сохраните файл настроек в /etc/zabbix/web/zabbix.conf.php
  • При первичной регистрации login:Admin password:zabbix

Zabbix-Proxy

  • Устновка:
apt install zabbix-proxy-sqlite3 zabbix-sql-scripts
  • Создаем базу данных:
mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
cat /usr/share/zabbix-sql-scripts/sqlite3/proxy.sql|sqlite3 /var/lib/zabbix/zabbix.db
  • Пример zabbix_proxy.conf для Sqlite3
ProxyMode=0
Server=IP-адрес сервера zabbix (master)
ServerPort=10051
Hostname=Имя прокси-сервера, который был создан на сервере Zabbix, оно должно быть одинаковым
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=100
DebugLevel=3
PidFile=/var/log/zabbix/zabbix_proxy.pid
DBName=/var/lib/zabbix/zabbix.db # SQLite не будет запрашивать пользователя или пароль
DBSocket=/var/lib/mysql/mysql.sock
ProxyLocalBuffer=1
ProxyOfflineBuffer=1
HeartbeatFrequency=60
ConfigFrequency=60
DataSenderFrequency=60
StartPollers=65
StartPollersUnreachable=15
StartPingers=60
StartDiscoverers=35
StartHTTPPollers=5
HousekeepingFrequency=1
CacheSize=20M
StartDBSyncers=8
HistoryCacheSize=20M
HistoryTextCacheSize=32M
Timeout=15
UnreachablePeriod=45
UnavailableDelay=60
UnreachableDelay=15
FpingLocation=/usr/sbin/fping
LogSlowQueries=2
StartIPMIPollers=0
StartJavaPollers=0
StartVMwareCollectors=0
VMwareFrequency=60
StartSNMPTrapper=0 

Полезные советы

  • Если zabbix server - не один:
  • В агенте прописать так:
...
Server=192.168.0.1,192.168.0.2
ServerActive=192.168.0.1,192.168.0.2
...
  • Проблема: Триггер с элементом vm.memory.size
Пытаюсь мониторить переполнение RAM (если меньше 10% свободной RAM в течении 5 минут) и создаю триггер:
{hostname:vm.memory.size[available].last(5m)}<10
Однако ничего не происходит.
  • Решение:
Вам для вашей задачи лучше использовать функцию max()
{hostname:vm.memory.size[pavailable].max(5m)}<10
 Пример: {Zabbix server:vm.memory.size[available].max(5m)}<10

  • Проблема: Если постоянно выскакивает предупреждение на триггер Disk I/O is overloaded on
{Zabbix server:system.cpu.util[,iowait].last(0)}>20
Получается, что ожидает операции ввода.вывода более 20 сек ?
  • Решение: Cоветую увеличить интервал и также путем увелечинеия памяти!
Вот здесь совет
Пример: {Zabbix server:system.cpu.util[,iowait].avg(5m)}>30

  • Проблема: Zabbix discoverer processes more than 75% busy
  • Решение: Этот процесс используется при обнаружении устройств в сети.
Проверьте и в случае необходимости, подправьте настройки правил обнаружения или увеличьте количество процессов которые
занимаются обнаружением новых устройств (параметр StartDiscoverers в конфиг файле zabbix сервера).
К пингу этот процесс и триггер отношения не имеют.
Если не нужен, то и не запускайте обнаружения. Если нужен, то поставьте 2. Посмотрите на графике динамику изменения.
Если всё равно нагрузка будет большая, поставьте 3. Ну и так далее.

  • Проблема: zabbix win 7 cannot make counterpath for "\\": [0xC0000BBD] Обязательный аргумент пропущен или указан неправильно.
  • Решение:
cmd
lodctr /r

* Проблема: fping failed: /usr/bin/fping: can't create socket (must run as root?) : Permission denied
* Решение:

 chown root:zabbix /usr/bin/fping  
 chmod 710 /usr/bin/fping   
 chmod ug+s /usr/bin/fping

* Проблема: : [111] Connection refused * Решение: commented out the line #ServerActive=127.0.0.1 from the agent configuration file /etc/zabbix/zabbix_agentd.conf.

или закомментируйте строку активного сервера и укажите только просто ip сервера.

Использование SpeedTest-Cli вместе с Zabbix

В этой статье я продемонстрирую, как мы можем использовать скрипты в Zabbix через UserParameter. Я буду использовать SpeedTest-cli в качестве примера, для выполнения тестов скорости загрузки интернет канала. Мы будем использовать UserParameter, он используется, когда нам нужна информация, которую сам zabbix не предоставляет, мы можем использовать команды и скрипты, не беспокоясь о том, поддерживает ли их zabbix, мы можем создавать собственные ключи.

Выполнение установки SpeedTest-Cli

   sudo apt-get install speetest-cli

Выполним простой тест, показывающий только пинг, скорость загрузки и отдачи, а также сохраним в файл TXT.
Для этого выполним:

speedtest-cli ---bytes ---simple > /tmp/speed.txt
xak@zabbix-new:~$ speedtest-cli ---bytes ---simple > /tmp/speed.txt
xak@zabbix-new:~$ cat /tmp/speed.txt
Ping: 1.692 ms
Download: 10.56 Mbyte/s
Upload: 11.46 Mbyte/s

В данном примере скорость измеряется с ближайшим сервером, вызвав справку

speedtest –help

Вы можете сменить сервер для проверки на нужный.

  • Создание графика выполнения скриптов:

Поскольку сценарий имеет довольно большую задержку, около 50 секунд для генерации результатов, мы не могли просто запустить его с zabbix и получить результаты. Zabbix имеет 30-секундный тайм-аут для внешних скриптов. Таким образом, один из способов, который я нашел, заключается в том, чтобы запланировать выполнение скрипта через Crontab. Я рекомендую прочитать немного больше о Crontab или тут.

/etc/crontab: system-wide crontab
Unlike any other crontab you don’t have to run the `crontab’
command to install the new version when you edit this file
and files in /etc/cron.d. These files also have username fields,
that none of the other crontabs do.SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user command
17 * * * * root cd / && run-parts ---report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts ---report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts ---report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts ---report /etc/cron.monthly )
*/20 * * * * root /usr/bin/speedtest-cli ---simple > /tmp/speed.txt

Поскольку speedtest использует пропускную способность интернета для выполнения тестов, не стоит его запускать сильно часто, в данном примере я настроил запуск каждые 20мин.

  • Создание UserParameter

Поскольку скрипт speedtest устанавливается на самом zabbix, нам нужно будет настроить UserParameter в собственном агенте Zabbix Server. Добавьте следующие строки в

/etc/zabbix/zabbix-agentd.conf:
UserParameter=upload[*],cat /tmp/speed.txt | grep «Upload:» | cut -d » » -f2
UserParameter=download[*],cat /tmp/speed.txt | grep «Download:» | cut -d » » -f2

Выполните описанную выше процедуру, перезапустите агент zabbix
Используйте zabbixget, чтобы проверить, работает ли ключ.

xak@zabbix-new:~$ zabbix_get -s 127.0.0.1 -p 10050 -k «download» && zabbix_get -s 127.0.0.1 -p 10050 -k «upload»
87.31
33.98

Наш UserParameter работает правильно.

  • Создание элемента данных в Zabbix

В ключе определяем ключ, который мы создали в агенте.
В окне Интервал обновления укажите 20-30мин
Вы можете найти больше о пользовательских интервалах
здесь.

Повторяем действия для upload:

Создание элемента данных в Zabbix В ключе определяем ключ, который мы создали в агенте. В окне Интервал обновления укажите 20-30мин Вы можете найти больше о пользовательских интервалах здесь.
Снимок-экрана-2017-11-27-в-10.32.53.png

Повторяем действия для upload
Снимок-экрана-2017-11-27-в-10.33.29-370x340.png

  • Дождитесь появления запланированного обновления в Zabbix.

Снимок-экрана-2017-11-27-в-10.36.37-1024x278.png

  • взято тут
  • Пример команды из консоли - получение нагрузки CPU:
zabbix_get -s 10.0.0.143 -p 10050 -k "system.cpu.load[all,avg15]"

ИСТОЧНИКИ


ПОЛЕЗНОЕ