В современных системах модем должен сразу определяться правильно (например, в Ubuntu 20.04), но если он виден как CD-ROM и не виден как USB-устройство, необходимо его переопределение.
# Установить пакет usb-modeswitch apt install usb-modeswitch # Узнать ID lsusb Bus 004 Device 002: ID 12d1:1446 Huawei Technologies Co., Ltd. Broadband stick (modem on) # Переключить usb_modeswitch -v 12d1 -p 1446 -J # Посмотреть, появились ли USB-устройства ls /dev/ttyUSB*
Это нужно сделать в любом случае, иначе в интерфейсе будет писать, что нет прав на устройство:
# Включить Заббикс в группу dialout usermod -aG dialout zabbix # Перезапустить службу systemctl restart zabbix-server
Далее в интерфейсе Заббикса добавить /dev/ttyUSB0 в SMS Media types.
apt install gammu -y gammu-config
Прописать порт (здесь: /dev/ttyUSB0
).
gammu identify Device : /dev/ttyUSB0 Manufacturer : Huawei Model : E150 (E150) Firmware : 11.609.82.02.143 IMEI : 000000000000000 SIM IMSI : 000000000000000 gammu sendsms TEXT '+70000000000' -unicode -report -text 'Test sms' If you want break, press Ctrl+C… Sending SMS 1/1…waiting for network answer..OK, message reference=178
Модем периодически перестаёт слать SMS. Попытка оживить модем с помощью команд диагностики (upd: не помогает):
gammu identify
gammu monitor 1
gammu networkinfo
Следующая попытка - использовать ID вместо TTY:
root@ls-zabbix:~# ls -la /dev/serial/by-id/ total 0 drwxr-xr-x 2 root root 80 Nov 1 17:45 . drwxr-xr-x 4 root root 80 Nov 1 17:45 .. lrwxrwxrwx 1 root root 13 Nov 1 17:45 usb-HUAWEI_Technology_HUAWEI_Mobile-if00-port0 -> ../../ttyUSB0 lrwxrwxrwx 1 root root 13 Nov 1 17:45 usb-HUAWEI_Technology_HUAWEI_Mobile-if01-port0 -> ../../ttyUSB1
Соответствено, в Заббиксе указываем не /dev/ttyUSB0
, а /dev/serial/by-id/usb-HUAWEI_Technology_HUAWEI_Mobile-if00-port0
.
На Windows ставятся из пакетов .msi в %programfiles%\zabbix.
Пакеты для Linux: https://repo.zabbix.com/zabbix
Server=monitoring ServerActive=monitoring AllowKey=system.run[*] LogFile=C:\Program Files\zabbix\zabbix_agent2.log HostnameItem=system.hostname[host] HostMetadataItem=system.uname
PidFile=/var/run/zabbix/zabbix_agent2.pid LogFile=/var/log/zabbix/zabbix_agent2.log LogFileSize=0 ControlSocket=/run/zabbix/agent.sock Server=192.168.1.33 ServerActive=192.168.1.33 HostnameItem=system.hostname # system.hostname[host]? HostMetadataItem=system.uname # Include config files for plugins Include=/etc/zabbix/zabbix_agent2.d/*.conf Include=./zabbix_agent2.d/plugins.d/*.conf
LogFile=C:\Program Files\zabbix\zabbix_agentd.log # Warning: EnableRemoteCommands parameter is deprecated, use AllowKey=system.run[*] or DenyKey=system.run[*] instead # EnableRemoteCommands=1 AllowKey=system.run[*] Server=monitoring ServerActive=monitoring HostnameItem=system.hostname[host] HostMetadataItem=system.uname
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix/zabbix_agentd.log LogFileSize=0 EnableRemoteCommands=1 Server=192.168.1.33 ServerActive=192.168.1.33 HostnameItem=system.hostname Include=/etc/zabbix/zabbix_agentd.d/ HostMetadataItem=system.uname
# Проверка соединения с агентом - на сервере выполнить nc -vz <agent IP address> 10050
https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/
# Чтобы установить агента, выполните yum install zabbix-agent # Чтобы запустить агента, выполните: service zabbix-agent start
# Ubuntu 16.04 wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix/zabbix-agent_4.2.4-1%2Bxenial_amd64.deb # Ubuntu 14.04 wget https://repo.zabbix.com/zabbix/4.2/ubuntu/pool/main/z/zabbix/zabbix-agent_4.2.4-1%2Btrusty_amd64.deb dpkg -i za # TAB rm /etc/zabbix/zabbix_agentd.conf && nano /etc/zabbix/zabbix_agentd.conf # вставить конфиг для Linux, сохранить файл, перезапустить агента service zabbix-agent restart # Иногда система ругается на отсутствие curl, поставить apt-get -f install apt-get install curl # На очень старых системах типа Ubuntu 8.04, Debian 5 Lenny последняя рабочая версия агента - 1.8.3. wget http://old-releases.ubuntu.com/ubuntu/pool/universe/z/zabbix/zabbix-agent_1.8.3-2ubuntu1_i386.deb
https://www.zabbix.com/ru/integrations/telegram
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/media/telegram
Установка:
Настройка получателя:
/getid
для пользователя, /getgroupid
для группы).Настройка группы получателей:
/getgroupid@myidbot
/start@your_bot_name_here
в группу.Ключ system.sw.packages
Ubuntu
https://www.zabbix.com/documentation/current/en/manual/installation/upgrade/packages/debian_ubuntu
CentOS
# Добавить репозиторий (в данном случае версию 3.4) rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm # Обновление репозитория, если уже прописан репозиторий предыдущей версии: yum update http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm yum clean all # Почистить кэш, иначе обновление не увидится # Обновиться (вариант для MySQL) yum upgrade zabbix-server-mysql zabbix-web-mysql zabbix-agent
Zabbix после обновления ругается на версию базы и не запускается. В логах:
2606691:20230412:144648.589 starting automatic database upgrade 2606691:20230412:144648.589 [Z3005] query failed: [1419] You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) [create trigger hosts_insert after insert on hosts for each row insert into changelog (object,objectid,operation,clock) values (1,new.hostid,1,unix_timestamp())] 2606691:20230412:144648.589 database upgrade failed on patch 06010049, exiting in 10 seconds
Решение:
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
# На новом сервере apt install php mysql-server language-pack-ru
mysql CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'password'; GRANT ALL privileges ON zabbix.* TO 'zabbix'@'localhost'; quit;
# На старом сервере mysqldump -u root -p zabbix > zabbix.sql scp zabbix.sql user@192.168.1.10:/home/user # На новом сервере mysql -u zabbix -p zabbix < /home/user/zabbix.sql
Дальше установить новую версию Заббикса по инструкции, но не запускать.
Сначала нужно:
/etc/zabbix/zabbix_server.conf
/etc/zabbix/web/zabbix.conf.php
, скопировав туда конфиг со старого сервера./etc/zabbix/apache.conf
настроить часовой пояс.Затем:
systemctl start zabbix-server systemctl enable zabbix-server # После запуска пойдёт обновление базы # Посмотреть, обновилась ли база: cat /var/log/zabbix/zabbix_server.log |grep database
Если в логе есть сообщение database is not upgraded to use double precision values:
Остановить сервер.
Добавить в /etc/zabbix/web/zabbix.conf.php
параметр $DB['DOUBLE_IEEE754'] = 'true';
Затем обязательно:
mysql USE zabbix; ALTER TABLE trends MODIFY value_min DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_avg DOUBLE PRECISION DEFAULT '0.0000' NOT NULL, MODIFY value_max DOUBLE PRECISION DEFAULT '0.0000' NOT NULL; ALTER TABLE history MODIFY VALUE DOUBLE PRECISION DEFAULT '0.0000' NOT NULL; quit;
Запустить сервер.
https://serveradmin.ru/oshibka-zabbix-database-is-not-upgraded-to-use-double-precision-values/
В данном случае агент установлен на Raspbian.
/etc/zabbix/zabbix-agentd.conf:
PidFile=/var/run/zabbix/zabbix_agentd.pid LogFile=/var/log/zabbix-agent/zabbix_agentd.log EnableRemoteCommands=1 Server=192.168.1.100 ServerActive=192.168.1.100 # Link Quality (здесь шкала в 70 единиц, надо проверять в каждом конкретном случае) UserParameter=wifi.linkquality,iwconfig wlan0 | grep Quality | cut -d '=' -f2 | cut -d '/' -f1 # Signal level (dBm) UserParameter=wifi.signallevel,iwconfig wlan0 | grep level | cut -d '=' -f3 | cut -c1-3 # TX Power (dBm) UserParameter=wifi.txpower,iwconfig wlan0 | grep Tx-Power | cut -d '=' -f3 | cut -c1-2 # Access Point MAC-address - без последнего знака и двоеточий # В Заббиксе преобразовывается в десятичное число и настроен value mapping "Wi-Fi AP MAC addresses", # где десятичные числа, полученные из MAC-адресов, сопоставляются с именами AP. UserParameter=wifi.apmac,iwgetid --ap -r | sed 's/://g' | cut -c1-11 # SSID (Item в Заббиксе - текст) UserParameter=wifi.ssid,iwgetid -r # UserParameter=wifi.ssid,iwconfig wlan0 | grep SSID | cut -d '"' -f2 | cut -d '"' -f1 # Канал UserParameter=wifi.channel,iwgetid --channel -r # Частота (в Item указывать значение Hz для автоматического пересчёта в GHz) UserParameter=wifi.freq,iwgetid --freq -r # Доступность сайтов - код возврата HTTP, в норме 200 (настроить value mapping) UserParameter=wifi.avail.ya,curl --interface wlan0 -sI -w "%{http_code}" https://ya.ru -o /dev/null UserParameter=wifi.avail.google,curl --interface wlan0 -sI -w "%{http_code}" https://www.google.com -o /dev/null # Доступность серверов, если 0 - нет потери пакета, всё ОК (настроить value mapping) UserParameter=wifi.avail.serv4,ping -I wlan0 192.168.1.231 -c 1 | grep packet | cut -d ' ' -f6 | cut -d '%' -f1 UserParameter=wifi.avail.serv5,ping -I wlan0 192.168.1.209 -c 1 | grep packet | cut -d ' ' -f6 | cut -d '%' -f1 UserParameter=wifi.avail.serv9,ping -I wlan0 192.168.1.210 -c 1 | grep packet | cut -d ' ' -f6 | cut -d '%' -f1 # Время отклика (ms) UserParameter=wifi.avail.serv4.time,ping -I wlan0 192.168.1.231 -c 1 | grep time= | cut -d '=' -f4 | cut -d ' ' -f1 UserParameter=wifi.avail.serv5.time,ping -I wlan0 192.168.1.209 -c 1 | grep time= | cut -d '=' -f4 | cut -d ' ' -f1 UserParameter=wifi.avail.serv9.time,ping -I wlan0 192.168.1.210 -c 1 | grep time= | cut -d '=' -f4 | cut -d ' ' -f1
Мониторинг уровня сигнала на Wi-Fi адаптере с помощью Zabbix
Name | Key | Interval | History | Trends | Type | Application | Type of information | Units |
---|---|---|---|---|---|---|---|---|
Wi-Fi Access Point | wifi.apmac | 1m | 7d | 365d | Zabbix agent | wifi | Numeric (insigned) | |
Wi-Fi channel | wifi.channel | 1m | 3d | 365d | Zabbix agent | wifi | Numeric (insigned) | |
Wi-Fi frequency | wifi.freq | 1h | 3d | 365d | Zabbix agent | wifi | Numeric (float) | Hz |
Wi-Fi link quality | wifi.linkquality | 1m | 7d | 365d | Zabbix agent | wifi | Numeric (insigned) | / 70 |
Wi-Fi signal level | wifi.signallevel | 1m | 7d | 365d | Zabbix agent | wifi | Numeric (float) | dBm |
Wi-Fi SSID | wifi.ssid | 1h | 7d | 365d | Zabbix agent | wifi | Text | |
Wi-Fi TX power | wifi.txpower | 1h | 3d | 365d | Zabbix agent | wifi | Numeric (insigned) | dBm |
Время ответа Server4 через wlan0 (ping) | wifi.avail.serv4.time | 1m | 7d | 365d | Zabbix agent | wifi | Numeric (float) | |
Доступность google.com через wlan0 (curl https) | wifi.avail.google | 1m | 7d | 365d | Zabbix agent | web | Numeric (float) | |
Недоступность Server4 через wlan0 (потеря ping) | wifi.avail.serv4 | 1m | 7d | 365d | Zabbix agent | wifi | Numeric (insigned) |
Графики удобно объединять так:
Создать комплексный экран в шаблоне с этими графиками и выводить туда ещё текстом частоту, SSID и имена AP.
Доп. конфиг userparameter_mysql.conf настраивается на чтение /etc/zabbix/.my.cnf, где прописаны учётные данные для входа в MySQL. Перед этим, конечно, пользователя надо завести в MySQL и дать ему права.
mysql
CREATE USER 'zabbix'@'%' IDENTIFIED BY 'password_here'; GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%'; quit;
/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
# For all the following commands HOME should be set to the directory that has .my.cnf file with password information. # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert]. # Key syntax is mysql.status[variable]. UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}' # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data]. # Key syntax is mysql.size[<database>,<table>,<type>]. # Database may be a database name or "all". Default is "all". # Table may be a table name or "all". Default is "all". # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both". # Database is mandatory if a table is specified. Type may be specified always. # Returns value in bytes. # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free";; esac)) from information_schema.tables$([[ $ UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c alive UserParameter=mysql.version,mysql -V
/etc/zabbix/.my.cnf
[client] user=zabbix password=password_here
Перезапустить агента, привязать к хосту на сервере шаблон Template DB MySQL.
Шаблоны: https://github.com/zabbix/community-templates/tree/main/Applications/Firewall/template_fail2ban
Настройка целевой системы для работы мониторинга.
Добавить файл /etc/zabbix/zabbix_agentd.d/fail2ban.conf
(для Zabbix agent 2 - /etc/zabbix/zabbix_agentd2.d/fail2ban.conf
):
UserParameter=fail2ban.status[*],fail2ban-client status '$1' | grep 'Currently banned:' | grep -E -o '[0-9]+' UserParameter=fail2ban.discovery,fail2ban-client status | grep 'Jail list:' | sed -e 's/^.*:\W\+//' -e 's/\(\(\w\|-\)\+\)/{"{#JAIL}":"\1"}/g' -e 's/.*/{"data":[\0]}/'
Добавить группу для fail2ban, добавить туда пользователя zabbix и дать этой группе права к сокету, т. к. изначально права есть только у рута.
groupadd fail2ban usermod -aG fail2ban zabbix chown root:fail2ban /var/run/fail2ban/fail2ban.sock chmod g+rwx /var/run/fail2ban/fail2ban.sock sudo -u zabbix fail2ban-client status # Проверка # Если выдаётся предупреждение warning: cannot change directory to /var/lib/zabbix/: No such file or directory mkdir /var/lib/zabbix chown zabbix:zabbix /var/lib/zabbix # To persist on a system where fail2ban is managed by systemd, add the following to the fail2ban service override file systemctl edit fail2ban [Service] ExecStartPost=/bin/sh -c "while ! [ -S /run/fail2ban/fail2ban.sock ]; do sleep 1; done" ExecStartPost=/bin/chgrp fail2ban /run/fail2ban/fail2ban.sock ExecStartPost=/bin/chmod g+w /run/fail2ban/fail2ban.sock systemctl restart zabbix-agent.service
Создаётся шаблон, например, EventLog. Создать в нём Item под названием 1СUser (надо следить за событиями пользователя 1СUser).
Ключ (справка по ключу eventlog)
eventlog[Security,1СUser,,,,1,skip]
Триггер, например,
# Name {HOST.NAME} - 1CUser has been disabled # Expression logeventid(/EventLog/eventlog[Security,1CUser,,,,1,skip],,4725)=1 # Recovery Expression (по успешному входу) logeventid(/EventLog/eventlog[Security,1CUser,,,,1,skip],,4624)=1
Включить Allow manual close.
События ИБ MS Windows Server Security Log
Описание EventID | 2008 Server | 2003 Server |
---|---|---|
Очистка журнала аудита | 1102 | 517 |
Вход с учётной записью выполнен успешно | 4624 | 528, 540 |
Учётной записи не удалось выполнить вход в систему | 4625 | 529-535, 539 |
Создана учётная запись пользователя | 4720 | 624 |
Попытка сбросить пароль учётной записи | 4724 | 628 |
Отключена учётная запись пользователя | 4725 | 629 |
Удалена учётная запись пользователя | 4726 | 630 |
Создана защищённая локальная группа безопасности | 4731 | 635 |
Добавлен участник в защищённую локальную группу | 4732 | 636 |
Удален участник из защищённой локальной группы | 4733 | 637 |
Удалена защищённая локальная группа безопасности | 4734 | 638 |
Изменена защищённая локальная группа безопасности | 4735 | 639 |
Изменена учётная запись пользователя | 4738 | 642 |
Заблокирована учётная запись пользователя | 4740 | 644 |
Имя учётной записи было изменено | 4781 | 685 |
Добавить в конфиг агента на Windows:
UserParameter=remote.ping[*], powershell -command "if (Test-Connection $1 -Count 1 -quiet) {echo '1'} else {echo '0'}"
На Linux (Zabbix forum):
UserParameter=remote.ping[*], ping -c 1 $1 >/dev/null 2>&1 && echo 1 || echo 0
Перезапустить агента.
Item:
Name: ICMP Ping - important server
Type: Zabbix agent (active)
Key: remote.ping[192.168.21.1]
Update interval: 1m
Zhow value: service state
Applications: Status
iLO4 и новее отлично мониторится через SNMP встроенным шаблоном. Для более старых версий есть самописное решение через скрипт.
Проблемы:
# При проверке: nano /usr/lib/zabbix/externalscripts/ilo_discovery.pl when is experimental at /usr/lib/zabbix/externalscripts/ilo_discovery.pl line 78. when is experimental at /usr/lib/zabbix/externalscripts/ilo_discovery.pl line 81. when is experimental at /usr/lib/zabbix/externalscripts/ilo_discovery.pl line 84. # Решение: sed -i '/use warnings;/c no warnings;' /usr/lib/zabbix/externalscripts/ilo_discovery.pl
https://www.zabbix.com/forum/zabbix-cookbook/37024-hp-servers-monitoring-via-ilo?p=238081#post238081
UserParameter=squid.filedesc.current,squidclient mgr:info |grep 'Number of file desc currently in use:' UserParameter=squid.filedesc.max,squidclient mgr:info |grep 'Maximum number of file descriptors:' UserParameter=squid.filedesc.curlargest,squidclient mgr:info |grep 'Largest file desc currently in use:' UserParameter=squid.filedesc.avail,squidclient mgr:info |grep 'Available number of file descriptors:'
Preprocessing: Regular expression, ([0-9]+)
, \1
key:
# key, чтобы не попадали строки, содержащие unsupported, assuming mismatch и BUG 3556 log[/var/log/squid/cache.log,"^((?:(?![Uu]nsupported|Assuming mismatch|BUG 3556).)*$)"] # log time format yyyy/MM/dd hh:mm:ss # tags Application: Squid
https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/log_items
https://www.zabbix.com/documentation/current/en/manual/regular_expressions#example
SNMP agent - документация.
Найти SNMP под Windows - MIB Browser.
MIB Browser показывает ключи SNMP как, например, hrSystemUptime.0 или, если зайти в свойства этого OID, .1.3.6.1.2.1.25.1.1. В то же время, в линуксе то же самое отображается как iso.3.6.1.2.1.25.1.1.0, т. е., искать OID удобно через программу, но вставлять OID в Zabbix лучше так, как они отображаются в линуксе, иначе item может просто не работать.
Хотя, возможны варианты:
.1.3.6.1.2.1.25.1.1.0
1.3.6.1.2.1.25.1.1.0
Помимо системных, существуют пользовательские, которые удобны для гибкой настройки значений триггеров и т. п. Главное удобство в наследовании - т. е., первый приоритет имеет макрос хоста, потом идёт непосредственно привязанный шаблон, потом шаблон второго уровня, третьего и т. д., и в конце - глобальное значение макроса, если на предыдущих уровнях ничего не нашлось. Это даёт гибкость переопределения значений на нижних уровнях иерархии.
Также имеются макросы низкоуровневого обнаружения, которые позволяют, например, задавать разные значения триггеров для разных дисков на компьютере.
sudo nano /etc/zabbix/zabbix_server.conf StartPingers=5 sudo service zabbix-server restart
https://ixnfo.com/reshenie-problemyi-zabbix-icmp-pinger-processes-more-than-75-busy.html
Причина в кривой версии openssl (1.1.1f), входящей в дистрибутив Ubuntu 20.04 LTS, необходимо обновить её хотя бы до 1.1.1g.
Лучше всего пакетом (.deb), но можно и скомпилировать:
# проверка версии openssl version wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz tar -zxf openssl-1.1.1k.tar.gz && cd openssl-1.1.1k ./config # Может сначала понадобиться apt install make gcc make make test mv /usr/bin/openssl ~/tmp make install. ln -s /usr/local/bin/openssl /usr/bin/openssl ldconfig
https://askubuntu.com/questions/1102803/how-to-upgrade-openssl-1-1-0-to-1-1-1-in-ubuntu-18-04