Содержание
Zabbix
PostgreSQL
Создание пользователя и базы:
CREATE USER zabbix WITH PASSWORD 'zabbixpassword'; CREATE DATABASE zabbix OWNER zabbix TEMPLATE template0;
Docker
Триггеры / Triggers
Zabbix poller processes more than 75% busy
Необходимо увеличить количество запускаемых процессов Zabbix сервером в /etc/zabbix/zabbix_server.conf, например:
StartPollers=20
Увеличение процессов ведет к увеличению потребления ресурсов.
PSK
Генерировать PSK key:
openssl rand -hex 32
https://www.zabbix.com/documentation/6.0/ru/manual/encryption/using_pre_shared_keys
Agent
Тестировать подключение к клиенту с сервера:
zabbix_get -k agent.ping -s zabbix-agent
Windows
Ubuntu
IPMI
Для поддержки IPMI установить OpenIPMI с поддержкой OpenSSL.
Для проверки:
ipmitool -I lanplus -H remote_ip_hostname -U zabbixuser -P zabbixpassword -L USER sensor
ODBC
Пример и docker образ для поддержки MSSQL:
https://github.com/mrlioncub/zabbix-server-mysql
https://github.com/mrlioncub/zabbix-proxy-sqlite3
Web Monitoring
Увеличение уровня журналирования по всем http поллерам:
zabbix_server -R log_level_increase="http poller"
Уменьшить уровень журналирования:
zabbix_server -R log_level_decrease
https://www.zabbix.com/documentation/current/ru/manual/web_monitoring
Ошибки
Get value from agent failed: ZBX_TCP_READ() failed: [4] Interrupted system call
Регистрируется в /var/log/zabbix/zabbix_server.log
Необходимо увеличить Timeout (сек, по умолчанию: 3) в конфигурации агента или на самом сервере.
Unsupported charset or collation for tables / Неподдерживаемая кодовая страница или тип сравнения для таблиц
Решение Создать sql запрос для потабличного изменения кодировки:
SELECT CONCAT( 'ALTER TABLE `', t.`TABLE_SCHEMA` , '`.`', t.`TABLE_NAME` , '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;' ) AS sqlcode FROM `information_schema`.`TABLES` t WHERE 1 AND t.`TABLE_SCHEMA` = 'zabbix' ORDER BY 1 LIMIT 0 , 180;
https://serveradmin.ru/oshibka-v-zabbix-nepodderzhivaemaya-kodovaya-stranicza/
Шаблоны
https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates
Создаем директорию для скриптов на сервере с агентом:
sudo mkdir /etc/zabbix/scripts chown zabbix:zabbix /etc/zabbix/scripts
После права на скрипты должны быть:
chmod 700 /etc/zabbix/scripts/* chown zabbix /etc/zabbix/scripts/*
APC
Добавляем Преобразование значений в Администрирование > Общие
Имя:
APC Battery Replace Indicator
Соответствия:
1 - noBatteryNeedsReplacing
2 - batteryNeedsReplacing
Имя:
APC Battery Output Status
1 - unknown
2 - onLine
3 - onBattery
4 - onSmartBoost
5 - timedSleeping
6 - softwareBypass
7 - off
8 - rebooting
9 - switchedBypass
10 - hardwareFailureBypass
11 - sleepingUntilPowerReturn
12 - onSmartTrim
и импортируем шаблон apc в zabbix.
Добавляем snmp MIB (Стандартные и PowerNet-MIB) в систему.
AD
Устанавливаем шаблон ad в zabbix.
Bind
В /etc/bind/named.conf добавить
statistics-channels {
inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};
На сервере с установленным bind установить:
sudo apt-get install xml2
Проверка:
curl -s http://localhost:8053/ 2>/dev/null | xml2 | grep -A1 -E 'queries|=Qry'
Добавляем в /etc/zabbix/zabbix_agentd.conf:
UserParameter=bind.queries.in[*],curl -s http://localhost:8053/ 2>/dev/null | xml2 | grep -A1 -i "/isc/bind/statistics/server/queries-in/rdtype/name=$1$" | tail -1 | cut -d= -f2 UserParameter=bind.queries.out[*],curl -s http://localhost:8053/ 2>/dev/null | xml2 | grep -A1 -i "/isc/bind/statistics/views/view/rdtype/name=$1$" | tail -1 | cut -d= -f2 UserParameter=bind.stats.query[*],curl -s http://localhost:8053/ 2>/dev/null | xml2 | grep -A1 -i "/isc/bind/statistics/server/nsstat/name=Qry$1" | tail -1 | cut -d= -f2 UserParameter=bind.net.udp,netstat -nua | grep :53 | wc -l UserParameter=bind.net.tcp,netstat -nta | grep :53 | wc -l
Устанавливаем шаблон bind в zabbix.
DHCP
Создаем /etc/zabbix/externalscripts/dhcp_stat.sh:
Создаем /etc/zabbix/zabbix_agentd.d/dhcp.conf:
UserParameter=dhcp.lease,/etc/zabbix/externalscripts/dhcp_stat.sh
Одной командой:
echo "UserParameter=dhcp.lease,/etc/zabbix/externalscripts/dhcp_stat.sh" | sudo tee /etc/zabbix/zabbix_agentd.d/dhcp.conf
Устанавливаем шаблон dhcp в zabbix.
Disk
Устанавливаем sysstat:
sudo apt-get install sysstat
Создаем /etc/zabbix/externalscripts/iostat-collect.sh:
Создаем /etc/zabbix/externalscripts/iostat-parse.sh:
Создаем /etc/zabbix/zabbix_agentd.d/iostat.conf:
UserParameter=iostat.discovery, iostat -d | awk 'BEGIN {check=0;count=0;array[0]=0;} {if(check==1 && $1 != ""){array[count]=$1;count=count+1;}if($1=="Device:"){check=1;}} END {printf("{\n\t\"data\":[\n");for(i=0;i<count;++i){printf("\t\t{\n\t\t\t\"{#HARDDISK}\":\"%s\"}", array[i]); if(i+1<count){printf(",\n");}} printf("]}\n");}'
UserParameter=iostat.collect,/etc/zabbix/externalscripts/iostat-collect.sh /tmp/iostat.out 8 || echo 1
UserParameter=iostat.metric[*],/etc/zabbix/externalscripts/iostat-parse.sh /tmp/iostat.out $1 $2
Увеличиваем Timeout в /etc/zabbix/zabbix_agentd.conf:
Timeout=10
Создаем /etc/zabbix/zabbix_agentd.d/disk.conf:
UserParameter=filesystem.error[*],file -s $1 | grep error | wc -l
Устанавливаем шаблон disk в zabbix.
NTP
Сервер
Создаем /etc/zabbix/zabbix_agentd.d/ntp.conf:
UserParameter=ntp.stratum,ntpdc -c sysinfo -n|grep 'stratum:'|cut -d':' -f2|awk '{print $1}'
Одной командой:
echo "UserParameter=ntp.stratum,ntpdc -c sysinfo -n|grep 'stratum:'|cut -d':' -f2|awk '{print \$1}'" | sudo tee /etc/zabbix/zabbix_agentd.d/ntp.conf
Устанавливаем шаблон ntp в zabbix.
Клиент
Для шаблона Template OS Windows (в Template OS Linux уже существует) создаём Элемент данных:
- Имя: Host local time
- Ключ: system.localtime
- Единица измерени: unixtime
- Интервал обновления (в сек): 60
- Период хранения истории (в днях): 7
- Группы элементов данных: General
Для каждого шаблона Template OS Windows и Template OS Linux создаём по триггеру:
- Имя: Discrepancy in time on {HOST.NAME}
- Выражение (Для Template OS Windows): {Template OS Windows:system.localtime.fuzzytime(30)}=0
- Выражение (Для Template OS Linux): {Template OS Linux:system.localtime.fuzzytime(30)}=0
- Важность: Средняя
Network
Для linux машин работающих в качестве шлюза, роутера.
Создаем /etc/zabbix/zabbix_agentd.d/network.conf:
UserParameter=net.conn.max,sysctl -n fs.aio-max-nr UserParameter=net.conn.cur,netstat -n -t | wc -l UserParameter=net.arp.max,sysctl -n net.ipv4.neigh.default.gc_thresh3 UserParameter=net.arp.cur,arp -n | wc -l UserParameter=net.nf.max,sysctl -n net.netfilter.nf_conntrack_max UserParameter=net.nf.cur,sysctl -n net.netfilter.nf_conntrack_count
Через командную строку:
echo "UserParameter=net.conn.max,sysctl -n fs.aio-max-nr" | sudo tee /etc/zabbix/zabbix_agentd.d/network.conf echo "UserParameter=net.conn.cur,netstat -n -t | wc -l" | sudo tee -a /etc/zabbix/zabbix_agentd.d/network.conf echo "UserParameter=net.arp.max,sysctl -n net.ipv4.neigh.default.gc_thresh3" | sudo tee -a /etc/zabbix/zabbix_agentd.d/network.conf echo "UserParameter=net.arp.cur,arp -n | wc -l" | sudo tee -a /etc/zabbix/zabbix_agentd.d/network.conf echo "UserParameter=net.nf.max,sysctl -n net.netfilter.nf_conntrack_max" | sudo tee -a /etc/zabbix/zabbix_agentd.d/network.conf echo "UserParameter=net.nf.cur,sysctl -n net.netfilter.nf_conntrack_count" | sudo tee -a /etc/zabbix/zabbix_agentd.d/network.conf
Устанавливаем шаблон network в zabbix.
Openfire
Устанавливаем шаблон openfire в zabbix.
RAID & HDD
В /etc/sudoers добавляем:
echo zabbix ALL=NOPASSWD: /etc/zabbix/externalscripts/statraid.pl | sudo tee -a /etc/sudoers
В /etc/zabbix/zabbix_agentd.conf добавляем:
echo UserParameter=statraid,sudo /etc/zabbix/externalscripts/statraid.pl | sudo tee -a /etc/zabbix/zabbix_agentd.conf
Устанавливаем шаблон raidhdd в zabbix.
Создаем /etc/zabbix/externalscripts/statraid.pl:
- Для HP Smart Array с возможностью просмотра с помощью утилиты cciss_vol_status
- Для MD RAID
RAID Adaptec
Создаём /etc/zabbix/externalscripts/adaptecstate.sh или C:\Program Files\zabbix\adaptecstate.ps1:
В /etc/sudoers добавляем:
echo zabbix ALL=NOPASSWD: /usr/sbin/smartctl,/etc/zabbix/scripts/adaptec-raid-controller.sh | sudo tee -a /etc/sudoers
Создаём /etc/zabbix/zabbix_agentd.d/adaptec-raid-controller.conf:
#############SMARTMONTOOLS
###DEPRECATED. USE for 2.x-3.2 templates
UserParameter=adaptec[*],sudo /etc/zabbix/scripts/adaptec-raid-controller.sh $1 $2 $3
UserParameter=adaptec.temperature,sudo /etc/zabbix/scripts/adaptec-raid-controller.sh AD 0 temperature | awk '{print $1}'
UserParameter=adaptec.temperature.status,sudo /etc/zabbix/scripts/adaptec-raid-controller.sh AD 0 temperature | awk -F'(' '{print $2}' | awk -F')' '{print $1}'
UserParameter=adaptec.smart.health[*],sudo smartctl -H $1,$2,$3,$4 /dev/sg | awk -F ': +' 'BEGIN{IGNORECASE=1} $$0 ~ /health/ { print $$2 }'
UserParameter=adaptec.smart.attributes[*],sudo smartctl -A $1 /dev/sg | awk '$$0 ~ /$2/ { print $$10 }'
UserParameter=adaptec.smart.sas[*],sudo smartctl -A -l error $1 /dev/sg | awk -F '[:=]' '/$2/ { print $$2 }' | awk '{ print $$1 }'
UserParameter=adaptec.smart.counter[*],sudo smartctl -l error $1 /dev/sg | awk '/$2:/ { print $$$3 }'
UserParameter=adaptec.smart.ssd[*],sudo smartctl -A $1 /dev/sg | awk '/(177 Wear_Leveling_Count|202 Percent_Lifetime_Used|233 Media_Wearout_Indicator|231 SSD_Life_Left) +0x[0-9a-z]+ +([0-9]+)/ {print $$10}'
#### 3.4
### Discovery
UserParameter=adaptec.discovery[*],sudo /etc/zabbix/scripts/adaptec-raid-controller.sh discovery $1 $2
Для Windows добавляем в C:\Program Files\zabbix\zabbix_agentd.win.conf:
###DEPRECATED. USE for 2.x-3.2 templates
UserParameter=adaptec[*],powershell -file "C:\Program Files\zabbix\adaptec-raid-controller.ps1" $1 $2 $3
UserParameter=adaptec.temperature,for /F "tokens=1 usebackq" %a in (`"powershell -file "C:\Program Files\zabbix\adaptec-raid-controller.ps1" AD 0 temperature"`) do @echo %a
UserParameter=adaptec.temperature.status,for /F "delims=() tokens=2 usebackq" %a in (`"powershell -file "C:\Program Files\zabbix\adaptec-raid-controller.ps1" AD 0 temperature"`) do @echo %a
UserParameter=adaptec.smart.health[*],for /F "delims=:= tokens=2 usebackq" %a in (`""%ProgramFiles%\smartmontools\bin\smartctl.exe" -H $1 /dev/sg | findstr -i "health""`) do @<nul set /p=%a
UserParameter=adaptec.smart.attributes[*],for /F "tokens=10 usebackq" %a in (`""%ProgramFiles%\smartmontools\bin\smartctl.exe" -A $1 /dev/sg | find "$2""`) do @echo %a
UserParameter=adaptec.smart.sas[*],for /F "delims=:= tokens=2 usebackq" %a in (`""%ProgramFiles%\smartmontools\bin\smartctl.exe" -A -l error $1 /dev/sg | find "$2""`) do @for /F "tokens=1" %b in ("%a") do @echo %b
UserParameter=adaptec.smart.counter[*],for /F "tokens=$3 usebackq" %a in (`""%ProgramFiles%\smartmontools\bin\smartctl.exe" -l error $1 /dev/sg | find "$2:""`) do @echo %a
UserParameter=adaptec.smart.ssd[*],for /F "tokens=10 usebackq" %a in (`""%ProgramFiles%\smartmontools\bin\smartctl.exe" -A $1 /dev/sg | findstr "Wear_Leveling_Count Percent_Lifetime_Used Media_Wearout_Indicator SSD_Life_Left""`) do @echo %a
### Discovery
UserParameter=adaptec.discovery[*],powershell -file "C:\Program Files\zabbix\adaptec-raid-controller.ps1" discovery $1 $2
Устанавливаем шаблон RAID Adaptec в zabbix.
Openvpn
На Zabbix сервере нужно создать элемент с именем «Invalid certificate for openvpn»:
- Тип - Zabbix агент
- Ключ - badcertificates
- Тип информации - Числовой
- Тип данных - Десятичный
На openvpn сервере нужно в файл /etc/zabbix/zabbix_agentd.conf добавить:
UserParameter=badcertificates,sudo /etc/zabbix/scripts/bad_certificates_count 2>/dev/null
На openvpn сервере нужно в файле /etc/sudoers
zabbix ALL= NOPASSWD: /etc/zabbix/scripts/bad_certificates_count
На openvpn сервере нужно создать скрипт /etc/zabbix/scripts/bad_certificates_count
Samba
Устанавливаем шаблон samba в zabbix.
Добавляем в /etc/sudoers:
zabbix ALL= NOPASSWD: /usr/bin/wbinfo -t
Проверяем:
sudo -u zabbix sudo /usr/bin/wbinfo -t
Создаем /etc/zabbix/zabbix_agentd.d/samba.conf:
UserParameter=smb.wbinfo.check,timeout --foreground 1 sudo wbinfo -t | grep succeeded | wc -l
Одной командой:
echo "UserParameter=smb.wbinfo.check,timeout --foreground 1 sudo wbinfo -t | grep succeeded | wc -l" | sudo tee /etc/zabbix/zabbix_agentd.d/samba.conf
Устанавливаем шаблон ntp в zabbix.
В папку внешних скриптов на сервере zabbix (/etc/zabbix/externalscripts) добавляем скрипт smb.file.check.sh
На файловом сервере нужно создать файл, содержащий только символ «1». В заббиксе нужно задать параметры для доступа к этому файлу (в разделе Макросы):
* {$SMB.CHECK.FILE.SHARE} - имя службы, которую вы хотите задействовать на сервере. Имя службы вводится в форме //server/service, где server — это NetBIOS имя SMB/CIFS сервера, имеющего необходимую службу, а service – название службы. Например, для доступа к службе "printer" на SMB/CIFS сервере "smbserver", вам нужно использовать servicename в виде //smbserver/printer,
* {$SMB.CHECK.FILE.PATH_TO_FILE} - путь к файлу из службы,
* {$SMB.CHECK.FILE.USERNAME} - имя пользователя для доступа к файлу,
* {$SMB.CHECK.FILE.PASSWORD} - пароль для доступа к файлу
SMART
Мониторинг SMART с помощью smartmontools (smartctl):
Squid
Устанавливаем шаблон squid в zabbix.
Устанавливаем squidclient:
sudo apt-get install squidclient
Создаем /etc/zabbix/scripts/squid_stat.sh
в /etc/zabbix/zabbix_agentd.conf добавляем:
UserParameter=squid[*],/etc/zabbix/scripts/squid_stat.sh $1
WSUS
Устанавливаем шаблон в zabbix.
xDSL
Модемы Zyxel (P792-Hv2)
Устанавливаем шаблон xdsl в zabbix.
Zimbra
Создаем /etc/zabbix/scripts/zimbra.sh:
Создаем /etc/zabbix/zabbix_agentd.d/zimbra.conf:
UserParameter=zimbra.status[*],/etc/zabbix/scripts/zimbra.sh "$1" UserParameter=zimbra.version,/etc/zabbix/scripts/zimbra.sh version UserParameter=zimbra.discovery,/etc/zabbix/scripts/zimbra.sh discover
Разрешаем запускать zmcontrol пользователю zabbix от имени zimbra:
echo zabbix ALL=\(zimbra\) NOPASSWD: /opt/zimbra/bin/zmcontrol | sudo tee -a /etc/sudoers
Устанавливаем шаблон zimbra в zabbix.
https://github.com/YetOpen/zabbix-scripts/tree/master/zabbix-zimbra
Гарант
Изменён шаблон!!! После проверки необходимо обновить!!!
Гарант должен быть установлен в директорию D:\Garant-Server
Устанавливаем шаблон garant в zabbix.
Гостевой WiFi
На zabbix сервер создаём /etc/zabbix/externalscripts/wifi.scan.sh
На zabbix сервер создаём /etc/zabbix/externalscripts/wifi.check.sh
Устанавливаем шаблон wifi_check в zabbix.
Медик+
Устанавливаем шаблон medikplus в zabbix.
Medikprod Flow
На сервере где установлен коллектор flow-tools, добавляем в /etc/flow-tools/flow-capture.conf:
-R /var/flow/netflow.sh -S 60 -z 9 -N 3 -n 1439 -w /var/flow/flow-data -E1G 192.168.10.161/192.168.10.1/8688
где 192.168.10.161 - ip где установлен flow-capture, 192.168.10.1 - ip где собирается flow и отправляется на flow-capture
Создаем /var/flow/netflow.sh:
Устанавливаем шаблон medikprodflow в zabbix.
Температура
Температура процессора
Для определения температуры процессора на нужном хосте создаём файл /etc/zabbix/zabbix_agentd.d/temperature.conf :
UserParameter=sensors.core_avg,sensors|grep 'Core'|cut -c15-19|awk ' { avg += $"'"$1"'" } END { avg=avg/NR; print avg }'
UserParameter=cpu.max_temperature,sensors | grep "ISA" -A 1 | grep "(" | sed "s/,.*//" | sed "s/^.*+//" | sed "s/\..*//" | head -n 1 | awk '{sum+=$1-10} END {print sum}'
Для старых материнских плат:
UserParameter=sensors.core_avg,sensors|grep 'CPU'|grep -v "+127.5"|cut -c15-19|awk ' { avg += $"'"$1"'" } END { avg=avg/NR; print avg }'
UserParameter=cpu.max_temperature,sensors | grep "CPU" -A 1 | grep "(" | sed "s/,.*//" | sed "s/^.*+//" | sed "s/\..*//" | head -n 1 | awk '{sum+=$1-10} END {print sum}'
Температура с датчика MP707
Для датчика MP707 (необходим bmcontrol) в /etc/zabbix/zabbix_agentd.conf добавляем:
UserParameter=temp.mp707,sudo /etc/zabbix/externalscripts/bmcontrol temp 99000002a8bd1728
На сервере редактируем /etc/zabbix/zabbix_server.conf параметр ExternalScripts:
ExternalScripts=/etc/zabbix/externalscripts
Устанавливаем шаблон temperature в zabbix.
Тестирование канала
Создаем /etc/zabbix/zabbix_agentd.conf.d/accesslink.conf на узле с которого будет тестироваться канал:
UserParameter=connection[*], ping -c 2 -i 0.4 -w 1 $1 | grep received | cut -d',' -f2 | cut -d' ' -f2
Одной командой:
echo "UserParameter=connection[*], ping -c 2 -i 0.4 -w 1 \$1 | grep received | cut -d',' -f2 | cut -d' ' -f2" | sudo tee /etc/zabbix/zabbix_agentd.d/accesslink.conf
Для проверки каждого канала (IP) заводить Элементы данных и Триггер в ручную на узле сети!
На zabbix сервере добавляем для узла:
Элемент данных:
Имя: Access Link ПРОВАЙДЕР to ОБЪЕКТ
Ключ: connection[ИП.АДРЕС]
Группы элементов данных: Network
Триггер:
Имя: Connection ПРОВАЙДЕР to ОБЪЕКТ is DOWN
Выражение: {выбираем созданный элемент данных.last()}<1
Важность: какая требуется
Стэк
Устанавливаем шаблон stek в zabbix.
Коммутаторы
Dlink 3120
Устанавливаем шаблон dlink3120 в zabbix.
Dlink 3100
Устанавливаем шаблон dlink3100 в zabbix.
Dlink 3600
Устанавливаем шаблон dlink3600 в zabbix.
Срок регистрации домена
Создаём скрипт /etc/zabbix/scripts/domainregistration.sh, показывающий сколько осталось дней до окончания регистрации на узле с которого будет на узле с котрого будет запрашиваться информация (должен быть прямой интернет).
Делаем его исполняемым:
sudo chmod +x /etc/zabbix/scripts/domainregistration.sh
и создаём файл конфигурации /etc/zabbix/zabbix_agentd.d/domainregistration.conf
UserParameter=domainregistration[*],/etc/zabbix/scripts/domainregistration.sh $1
или одной командой:
echo "UserParameter=domainregistration[*],/etc/zabbix/scripts/domainregistration.sh \$1" | sudo tee /etc/zabbix/zabbix_agentd.d/domainregistration.conf
На zabbix сервере добавляем для узла на примере проверки домена domain.ru:
Элемент данных:
Имя: Remaining days domain registration domain.ru
Ключ: connection[domain.ru]
Интервал обновления (в сек): 86400
Период хранения истории (в днях): 7
Группы элементов данных: Domain
Триггер:
Имя: Expires domain registration period domain.ru
Выражение: {zimbra:domainregistration[domain.ru].last()}<30
Важность: какая требуется
