Инструменты пользователя

Инструменты сайта


сервис_zabbix

Различия

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

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервис_zabbix [2019/06/26 11:32]
val [Мониторинг по протоколу SNMP]
сервис_zabbix [2020/07/30 14:10] (текущий)
val [Low-Level Discovery (LLD)]
Строка 11: Строка 11:
  
   * Поставится,​ как зависимость:​ [[Сервис MySQL]]   * Поставится,​ как зависимость:​ [[Сервис MySQL]]
 +  * [[https://​ma.ttias.be/​finding-biggest-data-storage-consumers-zabbix/​|Finding the biggest data (storage) consumers in Zabbix]]
 ==== Debian/​Ubuntu ==== ==== Debian/​Ubuntu ====
  
-  * [[https://​www.zabbix.com/​documentation/​3.0/​ru/​manual/​installation/​install_from_packages/​server_installation_with_mysql|Zabbix Documentation 3.0. Установка сервера с базой данных MySQL]] 
   * [[https://​www.zabbix.com/​download|Download and install Zabbix]]   * [[https://​www.zabbix.com/​download|Download and install Zabbix]]
 +  * Сервис MySQL [[Сервис MySQL#​Управление параметрами сервера]] innodb_strict_mode=OFF
 <​code>​ <​code>​
 # apt install zabbix-server-mysql ​  #2m # apt install zabbix-server-mysql ​  #2m
-</​code><​code>​+
 # cat zabbix.sql # cat zabbix.sql
 </​code><​code>​ </​code><​code>​
Строка 41: Строка 40:
 DBUser=zabbix DBUser=zabbix
 DBPassword=zabbix DBPassword=zabbix
 +#end newline!!!
 </​code><​code>​ </​code><​code>​
 # systemctl enable zabbix-server # systemctl enable zabbix-server
Строка 85: Строка 85:
   * [[Язык программирования PHP#​Модуль php mysql]]   * [[Язык программирования PHP#​Модуль php mysql]]
  
-==== Debian ​====+==== Debian ====
  
 <​code>​ <​code>​
Строка 105: Строка 105:
  
 # chown www-data /​etc/​zabbix/​zabbix.conf.php # chown www-data /​etc/​zabbix/​zabbix.conf.php
-</​code>​+</code><​code>
  
 http://​server.corpX.un/​zabbix/​setup.php http://​server.corpX.un/​zabbix/​setup.php
  
-<​code>​+</​code>​<​code>​
 # less /​etc/​zabbix/​zabbix.conf.php # less /​etc/​zabbix/​zabbix.conf.php
 </​code><​code>​ </​code><​code>​
Строка 170: Строка 170:
  
 ===== Установка и запуск proxy ===== ===== Установка и запуск proxy =====
 +
 +  * Сервис MySQL [[Сервис MySQL#​Управление параметрами сервера]] innodb_strict_mode=OFF
  
 <​code>​ <​code>​
Строка 206: Строка 208:
 ===== Настройка мониторинга ===== ===== Настройка мониторинга =====
  
-  * [[https://​www.zabbix.com/​documentation/​3.0/​ru/​manual/​quickstart|Zabbix Documentation ​3.0. Быстрый старт]] +  * [[https://​www.zabbix.com/​documentation/​4.0/​ru/​manual/​quickstart|Zabbix Documentation ​4.0. Быстрый старт]] 
-  * [[http://​server.corpX.un/​zabbix/​]] Login: Admin; Pass: zabbix +  * Login: Admin; Pass: zabbix 
 +<​code>​ 
 +http://​server.corpX.un/​zabbix/​ 
 +</​code>​
 ==== Настройка уведомлений о событиях ==== ==== Настройка уведомлений о событиях ====
  
Строка 215: Строка 219:
   * [[https://​www.zabbix.com/​forum/​zabbix-help/​43643-how-to-switch-back-from-problem-to-ok|How to switch back from PROBLEM to OK ?]]   * [[https://​www.zabbix.com/​forum/​zabbix-help/​43643-how-to-switch-back-from-problem-to-ok|How to switch back from PROBLEM to OK ?]]
  
 +=== Настройка подсистемы Email ===
 <​code>​ <​code>​
 Administration->​Media types->​Email Administration->​Media types->​Email
 +  SMTP server: mail.isp.un
 +  SMTP helo: server.corpX.un
 +  SMTP email: zabbix@server.corpX.un
  
 Administration->​Users->​Admin или userX->​Media Administration->​Users->​Admin или userX->​Media
 +  Type: email 
 +  Send to: userX@isp.un 
 +</​code>​ 
 +=== Настройка уведомлений о срабатывании триггеров по Email === 
 +<​code>​
 Configuration->​Actions->​Event source: Triggers Configuration->​Actions->​Event source: Triggers
   Report problems to Zabbix administrators->​Enable   Report problems to Zabbix administrators->​Enable
 +  ...
 +</​code>​
  
-    Actions+=== Отчет об отправленных сообщениях === 
 +<​code>​ 
 +Reports -> Action log 
 +</​code>​
  
 +=== Добавление информации о значении элемента в сообщение ===
 +<​code>​
 +Configuration->​Actions->​Event source: Triggers
 +  Report problems to Zabbix administrators
 +
 +    Operations:
 +      Default message
 +</​code><​code>​
 ... ...
-1. {ITEM.NAME1} ({HOST.NAME1}:​{ITEM.KEY1}): ​+{ITEM.NAME1} ({HOST.NAME1}:​{ITEM.KEY1}): ​
  
 Current: Current:
Строка 235: Строка 260:
  
 {{HOSTNAME}:​{TRIGGER.KEY}.last(#​2)} {{HOSTNAME}:​{TRIGGER.KEY}.last(#​2)}
-...+</​code>​
  
  
-    Operations: 
-      Default message 
-        ... 
-        Trigger Description: ​ 
- 
-        {TRIGGER.DESCRIPTION} 
-        ... 
-    ​ 
-    Recovery operations 
-</​code><​code>​ 
-Reports -> Action log 
-</​code>​ 
 ==== Простые проверки ==== ==== Простые проверки ====
  
Строка 275: Строка 288:
 ... ...
   Items   Items
-    Name: check rdp client1+    Name: check rdp admin/host windows
     Type: Simple check     Type: Simple check
-    Key: net.tcp.service[tcp,​192.168.6.101,3389]+    Key: net.tcp.service[tcp,​192.168.X.5,3389]
     Applications:​ Service check     Applications:​ Service check
 </​code>​ </​code>​
- 
 ==== Внешние проверки ==== ==== Внешние проверки ====
  
-  * [[https://​www.zabbix.com/​documentation/​2.4/​ru/​manual/​config/​items/​itemtypes/​external|Zabbix Documentation Внешние проверки]]+  * [[https://​www.zabbix.com/​documentation/​4.0/​ru/​manual/​config/​items/​itemtypes/​external|Zabbix Documentation Внешние проверки]]
  
 <​code>​ <​code>​
 +server# zabbix_server --help | grep ExternalScripts
 +
 server# less /​etc/​zabbix/​zabbix_server.conf server# less /​etc/​zabbix/​zabbix_server.conf
 </​code><​code>​ </​code><​code>​
-... 
-ExternalScripts=... 
 ... ...
 Timeout=... Timeout=...
 ... ...
 </​code><​code>​ </​code><​code>​
-server# ​ES=/​etc/​zabbix/​externalscripts +server# ​mkdir /​etc/​zabbix/​externalscripts
-или +
-server# ES=/​usr/​lib/​zabbix/​externalscripts +
- +
-server# mkdir $ES +
- +
-server# cd $ES+
 </​code>​ </​code>​
  
 === Пример простого скрипта === === Пример простого скрипта ===
 <​code>​ <​code>​
-server# cat ping_avg.sh+server# cat /​etc/​zabbix/​externalscripts/​ping_avg.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
 ping -c"​$1"​ "​$2"​ | tail -n1 | cut -d'/'​ -f5 ping -c"​$1"​ "​$2"​ | tail -n1 | cut -d'/'​ -f5
 </​code><​code>​ </​code><​code>​
-Cofiguration->​Hosts->​gate+server# /​etc/​zabbix/​externalscripts/​ping_avg.sh 3 ya.ru 
 +</​code><​code>​ 
 +Cofiguration->​Hosts->​ya.ru или val.bmstu.ru
   Items   Items
     Name: Ping AVG     Name: Ping AVG
Строка 316: Строка 324:
     Key: ping_avg.sh[3,"​{HOST.CONN}"​]     Key: ping_avg.sh[3,"​{HOST.CONN}"​]
     Type of information:​ Numeric (float)     Type of information:​ Numeric (float)
 +    Units: ms
 </​code>​ </​code>​
  
Строка 323: Строка 332:
  
 <​code>​ <​code>​
-server# ​cat /​etc/​sudoers.d/​zabbix+server# ​less /​etc/​sudoers.d/​zabbix
 </​code><​code>​ </​code><​code>​
 zabbix ALL = (ALL) NOPASSWD: /​usr/​bin/​nmap -O * zabbix ALL = (ALL) NOPASSWD: /​usr/​bin/​nmap -O *
 </​code><​code>​ </​code><​code>​
-server# cat detect_host_nmap.sh+server# cat /​etc/​zabbix/​externalscripts/​detect_host_nmap.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Строка 355: Строка 364:
 server# sudo -u zabbix bash server# sudo -u zabbix bash
  
-$ ssh-keygen+zabbix@server:​~$ ssh-keygen
  
-$ ssh-copy-id root@gate+zabbix@server:​~$ ssh-copy-id root@gate
  
-$ ssh root@gate hostname+zabbix@server:​~$ ssh root@gate hostname
 </​code>​ </​code>​
  
Строка 365: Строка 374:
  
 <​code>​ <​code>​
-$ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh CUR+zabbix@server:​~$ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh CUR
  
-$ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh MAX+zabbix@server:​~$ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh MAX
  
-# cat /​etc/​zabbix/​externalscripts/​dhcp_stat_ext.sh+server# cat /​etc/​zabbix/​externalscripts/​dhcp_stat_ext.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
 ssh root@$1 /​usr/​local/​bin/​dhcp_stat.sh $2 ssh root@$1 /​usr/​local/​bin/​dhcp_stat.sh $2
 </​code><​code>​ </​code><​code>​
-/​etc/​zabbix/​externalscripts/​dhcp_stat_ext.sh gate CUR+zabbix@server:​~$ ​/​etc/​zabbix/​externalscripts/​dhcp_stat_ext.sh gate CUR
 </​code><​code>​ </​code><​code>​
 gate->​Items gate->​Items
Строка 381: Строка 390:
   Key: dhcp_stat_ext.sh["​{HOST.CONN}",​CUR]   Key: dhcp_stat_ext.sh["​{HOST.CONN}",​CUR]
 </​code>​ </​code>​
- 
 ==== Элементы типа trapper ==== ==== Элементы типа trapper ====
  
 === Пример целочисленного элемента === === Пример целочисленного элемента ===
 <​code>​ <​code>​
-Name: my item +hostN->​Items 
-Type: Zabbix trapper +  ​Name: my item 
-Key:  my.item +    Type: Zabbix trapper 
-Allowed hosts: 127.0.0.1+    Key:  my.item 
 +    Allowed hosts: 127.0.0.1, 192.168.X.0/​24
 </​code><​code>​ </​code><​code>​
-$ zabbix_sender -z 127.0.0.1 ​-p 10051 -s server ​-k my.item -o 1+$ zabbix_sender -z server ​-p 10051 -s hostN -k my.item -o 1
 </​code>​ </​code>​
 === Пример текстового элемента === === Пример текстового элемента ===
 <​code>​ <​code>​
-Name: my nmap +val.bmstu.ru->​Items 
-Type: Zabbix trapper +  ​Name: my nmap 
-Key:  my.nmap +    Type: Zabbix trapper 
-Type of information:​ Text +    Key:  my.nmap 
-Allowed hosts: 127.0.0.1+    Type of information:​ Text 
 +    Allowed hosts: 127.0.0.1
 </​code><​code>​ </​code><​code>​
-# zabbix_sender -z 127.0.0.1 -p 10051 -s val.bmstu.ru -k my.nmap -o "$(/​etc/​zabbix/​externalscripts/​detect_host_nmap.sh ​val.bmstu.ru)"​ +server# zabbix_sender -z 127.0.0.1 -p 10051 -s val.bmstu.ru -k my.nmap -o "$(nmap -O val.bmstu.ru)"​ 
- +</​code><​code>​ 
-  ​или +server# cat /​root/​detect_host_nmap.sh 
- +</​code><​code>​ 
-# zabbix_sender -z 127.0.0.1 -p 10051 -s val.bmstu.ru -k my.nmap -o "$(/usr/​lib/​zabbix/​externalscripts/​detect_host_nmap.sh val.bmstu.ru)"​+#!/bin/sh 
 +/​usr/​bin/​nmap -O $1 | grep -v '​Starting Nmap\|Host is up\|Nmap done\|Network Distance'​ 
 +</​code><​code>​ 
 +server# chmod +x /​root/​detect_host_nmap.sh 
 +</​code><​code>​ 
 +server# zabbix_sender -z 127.0.0.1 -p 10051 -s val.bmstu.ru -k my.nmap -o "$(/root/​detect_host_nmap.sh val.bmstu.ru)"​
 </​code>​ </​code>​
 ==== Вычисляемые элементы ==== ==== Вычисляемые элементы ====
Строка 413: Строка 428:
   Name: avg perf http   Name: avg perf http
     Type: Calculated     Type: Calculated
-    Key:  avg.perf.http+    Key:  ​my.avg.perf.http
     Formula: avg(net.tcp.service.perf[https],​5m)     Formula: avg(net.tcp.service.perf[https],​5m)
     Type of information:​ Numeric (float)     Type of information:​ Numeric (float)
  
 +#​---------------------
  
-gate->​Items +gate.corpX.un->​Items 
-  Name: dhcp stat cur+  Name: DHCP stat CUR
     Type: Zabbix agent     Type: Zabbix agent
     Key: dhcp.stat[CUR]     Key: dhcp.stat[CUR]
  
-  Name: dhcp stat max+  Name: DHCP stat MAX
     Type: Zabbix agent     Type: Zabbix agent
     Key: dhcp.stat[MAX]     Key: dhcp.stat[MAX]
Строка 431: Строка 447:
     Key:  DHCP.stat.CUR.MAX.percent     Key:  DHCP.stat.CUR.MAX.percent
     Formula: last(dhcp.stat[CUR])/​last(dhcp.stat[MAX])*100     Formula: last(dhcp.stat[CUR])/​last(dhcp.stat[MAX])*100
-</​code>​+     
 +#​---------------------
  
 +last(openvpn1:​openvpn.server.clients)+last(openvpn2:​openvpn.server.clients)+last(openvpn2:​openvpn.server.clients)
 +</​code>​
 ==== Web сценарии ==== ==== Web сценарии ====
 +
 +  * [[https://​www.zabbix.com/​documentation/​4.0/​ru/​manual/​web_monitoring/​example|Сценарий из реальной жизни]]
 +
 +  * [[Asterisk. Интеграция]]
 +  * [[Сервис Asterisk#​Настройка базового функционала IP PBX]]
 +  * [[Asterisk. Интеграция#​Модуль 5. Интеграция c web приложениями]]
 +или просто:​
 +  * [[Язык программирования PHP#​Обработка полей формы и вызов внешних программ]]
 +
 +  * [[Сервис Zabbix#Web сценарии]] (обзор значений в Latest data позволит создать соответствующие триггеры)
 +
 +<​code>​
 +# tail -f /​var/​log/​apache2/​access.log ​ | grep ast
 +</​code>​
  
 <​code>​ <​code>​
Строка 458: Строка 491:
     Severity: Warning     Severity: Warning
  
-Host: ya.ru                                                      или val.bmstu.ru+Host: ya.ru 
     Name: HTTPS service on {HOST.NAME} is not available     Name: HTTPS service on {HOST.NAME} is not available
-    Expression: {ya.ru:​net.tcp.service.perf[https].last()}=0 ​    или val.bmstu.ru+    Expression: {ya.ru:​net.tcp.service.perf[https].last(#2)}=0
  
     Dependencies:​ Zabbix server: gate.isp.un is unreachable ​       Dependencies:​ Zabbix server: gate.isp.un is unreachable ​  
Строка 470: Строка 503:
 === Пример триггера основанного на значении элемента в течении периода === === Пример триггера основанного на значении элемента в течении периода ===
 <​code>​ <​code>​
-Host: ya.ru                                                       или val.bmstu.ru+Host: ya.ru                                       ​
     Name: HTTP service on {HOST.NAME} is slow     Name: HTTP service on {HOST.NAME} is slow
-    Expression: {ya.ru:​net.tcp.service.perf[https].avg(5m)}>​0.   или val.bmstu.ru !!!Значение подобрать на основе графика+    Expression: {ya.ru:​net.tcp.service.perf[https].avg(5m)}>​0.4   
 + 
 + 
 +    Expression: {ya.ru:​my.avg.perf.http.last()}>​0.4 
 + 
 +    ​Значение подобрать на основе графика
     Severity: Warning     Severity: Warning
 </​code>​ </​code>​
Строка 490: Строка 528:
 Name: Host {HOST.NAME} nmap change Name: Host {HOST.NAME} nmap change
 Severity: Warning Severity: Warning
-Expression: {gate:​detect_host_nmap.sh["​{HOST.CONN}"​].diff()}=1+ 
 +Expression: {gate.corpX.un:​detect_host_nmap.sh["​{HOST.CONN}"​].diff()}=1 
 +  или 
 +Expression: {val.bmstu.ru:​my.nmap.diff()}=1
 </​code>​ </​code>​
  
Строка 512: Строка 553:
 # apt install zabbix-agent # apt install zabbix-agent
 </​code>​ </​code>​
 +
 +=== Установка агента в Windows ===
 +
 +  * [[https://​www.zabbix.com/​download_agents|Download and install pre-compiled Zabbix agents]]
  
 === Пассивный режим === === Пассивный режим ===
Строка 523: Строка 568:
 <​code>​ <​code>​
 # zabbix_agentd -p # zabbix_agentd -p
 +
 +# zabbix_agentd -p | grep vfs.fs.size
 </​code>​ </​code>​
  
Строка 553: Строка 600:
  
 server# zabbix_get -s gate -k agent.version --tls-connect=psk --tls-psk-identity="​gate"​ --tls-psk-file=gate.psk server# zabbix_get -s gate -k agent.version --tls-connect=psk --tls-psk-identity="​gate"​ --tls-psk-file=gate.psk
-</​code>​ 
- 
-Установка агента в Freebsd 
-<​code>​ 
-gate# pkg install zabbix3-agent 
- 
-gate# cat /​usr/​local/​etc/​zabbix3/​zabbix_agentd.conf 
-</​code><​code>​ 
-LogFile=/​tmp/​zabbix_agentd.log 
-Server=server 
-#​UserParameter=dhcp.stat,​rsh router show ip dhcp binding | grep 192.168 | wc -l 
 </​code>​ </​code>​
  
 === Активный режим === === Активный режим ===
  
-Установка агента в Windows 
- 
-  * [[https://​www.zabbix.com/​download_agents|Download and install pre-compiled Zabbix agents]] 
-  * [[https://​support.zabbix.com/​browse/​ZBXNEXT-3047|Windows Zabbix Agent Binary is not compiled with TLS Support]] 
-  * [[http://​val.bmstu.ru/​unix/​zabbix/​zabbix_agents_3.0.10.win.zip]] 
-  * [[https://​www.zabbix.com/​documentation/​3.0/​ru/​manual/​appendix/​install/​windows_agent|Zabbix агент на Microsoft Windows]] 
- 
-  * [[https://​www.fontenay-ronan.fr/​zabbix-monitor-a-device-behind-a-nat-firewall/​|Zabbix – Monitor a device behind a NAT / firewall]] 
-  * [[https://​www.zabbix.com/​documentation/​3.0/​ru/​manual/​discovery/​auto_registration|Авторегистрация активных агентов]] 
   * [[https://​docs.linuxconsulting.mn.it/​notes/​zabbix-active-agent|How to configure an Active Agent in Zabbix 2.2]]   * [[https://​docs.linuxconsulting.mn.it/​notes/​zabbix-active-agent|How to configure an Active Agent in Zabbix 2.2]]
 +
 +== Клонирование шаблона для Windows систем и подготовка его для агентов,​ работающих а активном режиме ==
  
 <​code>​ <​code>​
Строка 591: Строка 620:
   Network interface discovery - Type - Zabbix agent (active)   Network interface discovery - Type - Zabbix agent (active)
     ...     ...
 +</​code>​
  
-Configuration - Create ​Actions - Auto registration ​+== Настройка авторегистрации систем с агентами,​ работающими в активном режиме == 
 + 
 +<​code>​ 
 +Configuration - Actions - Auto registration ​
   Name: Add windows clients   Name: Add windows clients
-  Conditions: Host name like CLIENT+  Conditions: Host name contains ​CLIENT
   Action operations: Add to host groups: windows clients   Action operations: Add to host groups: windows clients
   Link to templates: Template OS Windows Active   Link to templates: Template OS Windows Active
 +                     ​Template OS Windows list installed soft Active
 +  Set host inventory mode: Automatic
 </​code>​ </​code>​
  
-  * [[http://​val.bmstu.ru/​unix/​npp.6.4.2.Installer.exe]]+== Настройка агента на активный режим ==
  
 <​code>​ <​code>​
-adminshell>​ nodepad++ C:​\zabbix\zabbix_agentd.conf +...
-</​code><​code>​ +
-LogFile=C:​\zabbix\zabbix_agentd.log +
 #​Server=server #​Server=server
- +... 
-#ListenIP=0.0.0.0 +ListenIP=0.0.0.0 
-#StartAgents=0 +... 
-#​ServerActive=server +StartAgents=0 
-</​code><​code>​ +... 
-adminshell>​ C:​\zabbix\bin\win32\zabbix_agentd.exe -h +ServerActive=server 
- +...
-adminshell>​ C:​\zabbix\bin\win32\zabbix_agentd.exe -c C:​\zabbix\zabbix_agentd.conf -f +
- +
-adminshell>​ C:​\zabbix\bin\win32\zabbix_agentd.exe -c C:​\zabbix\zabbix_agentd.conf -i+
 </​code>​ </​code>​
  
Строка 625: Строка 654:
  
 <​code>​ <​code>​
-# cat zabbix_agentd.conf+gate# cat /​etc/​zabbix/​zabbix_agentd.conf
 </​code><​code>​ </​code><​code>​
 ... ...
Строка 643: Строка 672:
 </​code><​code>​ </​code><​code>​
 ... ...
 +Timeout=30
 +
 +UserParameter=listinstalledsoft,​powershell -Command Get-ChildItem HKLM:​\Software\Microsoft\Windows\CurrentVersion\Uninstall;​ powershell -Command Get-ChildItem HKLM:​\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
 +
 UnsafeUserParameters=1 UnsafeUserParameters=1
 UserParameter=dir[*],​dir $1 UserParameter=dir[*],​dir $1
Строка 671: Строка 704:
              ​SNMPv2-MIB::​sysName.0              ​SNMPv2-MIB::​sysName.0
     Add     Add
-  Device uniqueness criteria: IP address+  ​Update interval: 5m 
 +  ​Device uniqueness criteria: IP address ​ 
   Enabled: yes   Enabled: yes
  
Строка 678: Строка 712:
     Name: Action add snmp device to zabbix     Name: Action add snmp device to zabbix
     Conditions: ​     Conditions: ​
-      Received value: like switch +      Received value: like или contains router 
-      ​Received valuelike router+      ​Discovery statusequals Up                 ​без этого появляются ghost hosts :)
       Add       Add
     Operations: ​     Operations: ​
Строка 687: Строка 721:
              4.XX Template Module Generic SNMPv2              4.XX Template Module Generic SNMPv2
              4.XX Template Module Interfaces Simple SNMPv2              4.XX Template Module Interfaces Simple SNMPv2
 +      Set host inventory mode: Automatic
     Add     Add
 </​code>​ </​code>​
- 
- 
 ==== Проверки через SSH ==== ==== Проверки через SSH ====
  
Строка 759: Строка 792:
         SSH service is running         SSH service is running
           Key: net.tcp.service[ssh,,​{$SSH_PORT}]           Key: net.tcp.service[ssh,,​{$SSH_PORT}]
 +          Update interval: 30s
       Macros       Macros
         {$SSH_PORT}=22         {$SSH_PORT}=22
Строка 768: Строка 802:
   * [[https://​www.zabbix.com/​forum/​in-russian/​44171-perl-script-%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8-%D1%81%D0%B5%D1%82%D0%B8-%D0%B2-zabbix|Perl script Авторисования топологии сети в Zabbix]]   * [[https://​www.zabbix.com/​forum/​in-russian/​44171-perl-script-%D0%90%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%81%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8-%D1%81%D0%B5%D1%82%D0%B8-%D0%B2-zabbix|Perl script Авторисования топологии сети в Zabbix]]
   * [[Утилита jq]]   * [[Утилита jq]]
 +
 +=== Штатные примеры ===
  
 <​code>​ <​code>​
 server# zabbix_get -s gate -k vfs.fs.discovery | jq server# zabbix_get -s gate -k vfs.fs.discovery | jq
 +...
  
 server# zabbix_get -s gate -k vfs.fs.size[/,​free] server# zabbix_get -s gate -k vfs.fs.size[/,​free]
 +server# zabbix_get -s gate -k vfs.fs.size[/,​total] 
 +server# zabbix_get -s gate -k vfs.fs.size[/,​used] 
 +...
  
 server# zabbix_get -s gate -k net.if.discovery | jq server# zabbix_get -s gate -k net.if.discovery | jq
 +...
  
 server# zabbix_get -s gate -k net.if.in[eth0] server# zabbix_get -s gate -k net.if.in[eth0]
 +...
 </​code>​ </​code>​
  
 +=== Статистика дискового ввода/​вывода ===
 +
 +  * Пример использования встроенных средств для LLD
 +
 +<​code>​
 +agent# zabbix_agentd -p | grep vfs.dev
 +...
 +
 +server# zabbix_get -s agent -k "​vfs.dev.read[sda,​sps]"​
 +...
 +
 +agent# cat /​etc/​zabbix/​zabbix_agentd.conf.d/​my.linux.disk.discovery.conf
 +</​code><​code>​
 +UserParameter=my.disks.discovery,/​bin/​lsblk -dJ | /bin/sed -e '​s/​blockdevices/​data/'​ -e '​s/​name/​{#​NAME}/​g'​ -e '​s/​type/​{#​TYPE}/​g'​
 +</​code><​code>​
 +server# zabbix_get -s agent -k my.disks.discovery | jq
 +...
 +</​code><​code>​
 +Configuration->​Templates->​Create template
 +  Template name: My Template Linux disks utilization
 +  Groups: Templates/​Server hardware
 +
 +  Discovery rules->
 +    Name: my disks discovery
 +    Key: my.disks.discovery
 +    Filters->​
 +      {#TYPE} matches disk
 +    Item prototypes->​
 +      Name: disk {#NAME} read bytes
 +      Key: vfs.dev.read[{#​NAME},​sps]
 +      Type of information:​ Numeric (float)
 +      Units: Байт
 +      Preprocessing->​
 +        Preprocessing steps
 +        Custom multiplier 512
 +
 +      Name: disk {#NAME} write bytes
 +      ...  ​
 +</​code>​
 +
 +=== Статистика DHCP сервера ===
 +
 +  * Пример разработки собственного скрипта для LLD
   * [[Обработка XML файлов]]   * [[Обработка XML файлов]]
  
Строка 797: Строка 881:
 echo -n '​]}'​ echo -n '​]}'​
 </​code><​code>​ </​code><​code>​
-# /​etc/​zabbix/​dhcp-pools-discovery.sh | jq+gate# /​etc/​zabbix/​dhcp-pools-discovery.sh | jq
  
-# cat /​etc/​zabbix/​dhcp-pools-shared-network.sh+gate# cat /​etc/​zabbix/​dhcp-pools-shared-network.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Строка 832: Строка 916:
 Configuration->​Templates->​Create template Configuration->​Templates->​Create template
   Template name: Template App DHCP Pools   Template name: Template App DHCP Pools
-  Groups In groups: Templates+  Groups In groups: Templates/​Applications
  
   Macros: {$DHCP.POOLS.MAX.PERCENT}=90   Macros: {$DHCP.POOLS.MAX.PERCENT}=90
Строка 845: Строка 929:
   Add   Add
     Item prototypes     Item prototypes
-      Name: DHCP Pool $1 max addr+      Name: DHCP Pool $1 max addr      или DHCP Pool {#​POOLNAME} ​max addr
       Type: Zabbix Agent       Type: Zabbix Agent
       Key: dhcp.pools.shared-network[{#​POOLNAME},​defined]       Key: dhcp.pools.shared-network[{#​POOLNAME},​defined]
Строка 876: Строка 960:
     Export/​Import     Export/​Import
 </​code>​ </​code>​
-<​code>​ +
-<?xml version="​1.0"​ encoding="​UTF-8"?>​ +
-<​zabbix_export>​ +
-    <​version>​3.0</​version>​ +
-    <​date>​2018-07-26T11:​10:​12Z</​date>​ +
-    <​groups>​ +
-        <​group>​ +
-            <​name>​Templates</​name>​ +
-        </​group>​ +
-    </​groups>​ +
-    <​templates>​ +
-        <​template>​ +
-            <​template>​Template App DHCP Pools</​template>​ +
-            <​name>​Template App DHCP Pools</​name>​ +
-            <​description/>​ +
-            <​groups>​ +
-                <​group>​ +
-                    <​name>​Templates</​name>​ +
-                </​group>​ +
-            </​groups>​ +
-            <​applications>​ +
-                <​application>​ +
-                    <​name>​DHCP</​name>​ +
-                </​application>​ +
-            </​applications>​ +
-            <​items/>​ +
-            <​discovery_rules>​ +
-                <​discovery_rule>​ +
-                    <​name>​Search DHCP Pools</​name>​ +
-                    <​type>​0</​type>​ +
-                    <​snmp_community/>​ +
-                    <​snmp_oid/>​ +
-                    <​key>​dhcp.pools.discovery</​key>​ +
-                    <​delay>​30</​delay>​ +
-                    <​status>​0</​status>​ +
-                    <​allowed_hosts/>​ +
-                    <​snmpv3_contextname/>​ +
-                    <​snmpv3_securityname/>​ +
-                    <​snmpv3_securitylevel>​0</​snmpv3_securitylevel>​ +
-                    <​snmpv3_authprotocol>​0</​snmpv3_authprotocol>​ +
-                    <​snmpv3_authpassphrase/>​ +
-                    <​snmpv3_privprotocol>​0</​snmpv3_privprotocol>​ +
-                    <​snmpv3_privpassphrase/>​ +
-                    <​delay_flex/>​ +
-                    <​params/>​ +
-                    <​ipmi_sensor/>​ +
-                    <​authtype>​0</​authtype>​ +
-                    <​username/>​ +
-                    <​password/>​ +
-                    <​publickey/>​ +
-                    <​privatekey/>​ +
-                    <​port/>​ +
-                    <​filter>​ +
-                        <​evaltype>​0</​evaltype>​ +
-                        <​formula/>​ +
-                        <​conditions/>​ +
-                    </​filter>​ +
-                    <​lifetime>​30</​lifetime>​ +
-                    <​description/>​ +
-                    <​item_prototypes>​ +
-                        <​item_prototype>​ +
-                            <​name>​DHCP Pool $1 max addr</​name>​ +
-                            <​type>​0</​type>​ +
-                            <​snmp_community/>​ +
-                            <​multiplier>​0</​multiplier>​ +
-                            <​snmp_oid/>​ +
-                            <​key>​dhcp.pools.shared-network[{#​POOLNAME},​defined]</​key>​ +
-                            <​delay>​30</​delay>​ +
-                            <​history>​90</​history>​ +
-                            <​trends>​365</​trends>​ +
-                            <​status>​0</​status>​ +
-                            <​value_type>​3</​value_type>​ +
-                            <​allowed_hosts/>​ +
-                            <​units/>​ +
-                            <​delta>​0</​delta>​ +
-                            <​snmpv3_contextname/>​ +
-                            <​snmpv3_securityname/>​ +
-                            <​snmpv3_securitylevel>​0</​snmpv3_securitylevel>​ +
-                            <​snmpv3_authprotocol>​0</​snmpv3_authprotocol>​ +
-                            <​snmpv3_authpassphrase/>​ +
-                            <​snmpv3_privprotocol>​0</​snmpv3_privprotocol>​ +
-                            <​snmpv3_privpassphrase/>​ +
-                            <​formula>​1</​formula>​ +
-                            <​delay_flex/>​ +
-                            <​params/>​ +
-                            <​ipmi_sensor/>​ +
-                            <​data_type>​0</​data_type>​ +
-                            <​authtype>​0</​authtype>​ +
-                            <​username/>​ +
-                            <​password/>​ +
-                            <​publickey/>​ +
-                            <​privatekey/>​ +
-                            <​port/>​ +
-                            <​description/>​ +
-                            <​inventory_link>​0</​inventory_link>​ +
-                            <​applications>​ +
-                                <​application>​ +
-                                    <​name>​DHCP</​name>​ +
-                                </​application>​ +
-                            </​applications>​ +
-                            <​valuemap/>​ +
-                            <​logtimefmt/>​ +
-                            <​application_prototypes/>​ +
-                        </​item_prototype>​ +
-                        <​item_prototype>​ +
-                            <​name>​DHCP Pool $1 cur addr</​name>​ +
-                            <​type>​0</​type>​ +
-                            <​snmp_community/>​ +
-                            <​multiplier>​0</​multiplier>​ +
-                            <​snmp_oid/>​ +
-                            <​key>​dhcp.pools.shared-network[{#​POOLNAME},​used]</​key>​ +
-                            <​delay>​30</​delay>​ +
-                            <​history>​90</​history>​ +
-                            <​trends>​365</​trends>​ +
-                            <​status>​0</​status>​ +
-                            <​value_type>​3</​value_type>​ +
-                            <​allowed_hosts/>​ +
-                            <​units/>​ +
-                            <​delta>​0</​delta>​ +
-                            <​snmpv3_contextname/>​ +
-                            <​snmpv3_securityname/>​ +
-                            <​snmpv3_securitylevel>​0</​snmpv3_securitylevel>​ +
-                            <​snmpv3_authprotocol>​0</​snmpv3_authprotocol>​ +
-                            <​snmpv3_authpassphrase/>​ +
-                            <​snmpv3_privprotocol>​0</​snmpv3_privprotocol>​ +
-                            <​snmpv3_privpassphrase/>​ +
-                            <​formula>​1</​formula>​ +
-                            <​delay_flex/>​ +
-                            <​params/>​ +
-                            <​ipmi_sensor/>​ +
-                            <​data_type>​0</​data_type>​ +
-                            <​authtype>​0</​authtype>​ +
-                            <​username/>​ +
-                            <​password/>​ +
-                            <​publickey/>​ +
-                            <​privatekey/>​ +
-                            <​port/>​ +
-                            <​description/>​ +
-                            <​inventory_link>​0</​inventory_link>​ +
-                            <​applications>​ +
-                                <​application>​ +
-                                    <​name>​DHCP</​name>​ +
-                                </​application>​ +
-                            </​applications>​ +
-                            <​valuemap/>​ +
-                            <​logtimefmt/>​ +
-                            <​application_prototypes/>​ +
-                        </​item_prototype>​ +
-                    </​item_prototypes>​ +
-                    <​trigger_prototypes>​ +
-                        <​trigger_prototype>​ +
-                            <​expression>​{Template App DHCP Pools:​dhcp.pools.shared-network[{#​POOLNAME},​used].last()}/​{Template App DHCP Pools:​dhcp.pools.shared-network[{#​POOLNAME},​defined].last()}*100 &gt; {$DHCP.POOLS.MAX.PERCENT}</​expression>​ +
-                            <​name>​On {HOST.NAME} in the DHCP pool {#​POOLNAME}</​name>​ +
-                            <​url/>​ +
-                            <​status>​0</​status>​ +
-                            <​priority>​2</​priority>​ +
-                            <​description/>​ +
-                            <​type>​0</​type>​ +
-                            <​dependencies/>​ +
-                        </​trigger_prototype>​ +
-                    </​trigger_prototypes>​ +
-                    <​graph_prototypes>​ +
-                        <​graph_prototype>​ +
-                            <​name>​DHCP Pool {#POOLNAME} max cur</​name>​ +
-                            <​width>​900</​width>​ +
-                            <​height>​200</​height>​ +
-                            <​yaxismin>​0.0000</​yaxismin>​ +
-                            <​yaxismax>​100.0000</​yaxismax>​ +
-                            <​show_work_period>​1</​show_work_period>​ +
-                            <​show_triggers>​1</​show_triggers>​ +
-                            <​type>​0</​type>​ +
-                            <​show_legend>​1</​show_legend>​ +
-                            <​show_3d>​0</​show_3d>​ +
-                            <​percent_left>​0.0000</​percent_left>​ +
-                            <​percent_right>​0.0000</​percent_right>​ +
-                            <​ymin_type_1>​1</​ymin_type_1>​ +
-                            <​ymax_type_1>​0</​ymax_type_1>​ +
-                            <​ymin_item_1>​0</​ymin_item_1>​ +
-                            <​ymax_item_1>​0</​ymax_item_1>​ +
-                            <​graph_items>​ +
-                                <​graph_item>​ +
-                                    <​sortorder>​0</​sortorder>​ +
-                                    <​drawtype>​0</​drawtype>​ +
-                                    <​color>​1A7C11</​color>​ +
-                                    <​yaxisside>​0</​yaxisside>​ +
-                                    <​calc_fnc>​2</​calc_fnc>​ +
-                                    <​type>​0</​type>​ +
-                                    <​item>​ +
-                                        <​host>​Template App DHCP Pools</​host>​ +
-                                        <​key>​dhcp.pools.shared-network[{#​POOLNAME},​used]</​key>​ +
-                                    </​item>​ +
-                                </​graph_item>​ +
-                                <​graph_item>​ +
-                                    <​sortorder>​1</​sortorder>​ +
-                                    <​drawtype>​0</​drawtype>​ +
-                                    <​color>​F63100</​color>​ +
-                                    <​yaxisside>​0</​yaxisside>​ +
-                                    <​calc_fnc>​2</​calc_fnc>​ +
-                                    <​type>​0</​type>​ +
-                                    <​item>​ +
-                                        <​host>​Template App DHCP Pools</​host>​ +
-                                        <​key>​dhcp.pools.shared-network[{#​POOLNAME},​defined]</​key>​ +
-                                    </​item>​ +
-                                </​graph_item>​ +
-                            </​graph_items>​ +
-                        </​graph_prototype>​ +
-                    </​graph_prototypes>​ +
-                    <​host_prototypes/>​ +
-                </​discovery_rule>​ +
-            </​discovery_rules>​ +
-            <​macros/>​ +
-            <​templates/>​ +
-            <​screens/>​ +
-        </​template>​ +
-    </​templates>​ +
-</​zabbix_export>​ +
-</​code>​+
  
 ===== API ===== ===== API =====
Строка 1104: Строка 972:
  
 <​code>​ <​code>​
-server.corp1.un:~# apt install curl+server:~# apt install curl
  
-server.corp1.un:~# curl -s -k -X POST -H '​Content-Type:​ application/​json-rpc'​ -d '+server:~# curl -s -k -X POST -H '​Content-Type:​ application/​json-rpc'​ -d '
 { {
    "​jsonrpc":​ "​2.0",​    "​jsonrpc":​ "​2.0",​
Строка 1124: Строка 992:
   * Утилита для обработки JSON   * Утилита для обработки JSON
 <​code>​ <​code>​
-server.corp1.un:~# apt install jq+server:~# apt install jq
 </​code>​ </​code>​
  
-  * Получение списка ​идентификаторов и имен коммутаторов из Zabbix+  * Получение списка ​узлов и шаблонов из Zabbix
  
 <​code>​ <​code>​
-server.corp1.un:~# curl -s -k -X POST -H '​Content-Type:​ application/​json-rpc'​ -d '+server:~# curl -s -k -X POST -H '​Content-Type:​ application/​json-rpc'​ -d '
 { {
     "​jsonrpc":​ "​2.0",​     "​jsonrpc":​ "​2.0",​
Строка 1140: Строка 1008:
 ... ...
 </​code>​ </​code>​
- 
-  * Варианты параметра "​method"​ 
 <​code>​ <​code>​
 ... ...
Строка 1148: Строка 1014:
 </​code>​ </​code>​
  
-  * Варианты оформления "​params"​ ([[https://​www.zabbix.com/​forum/​zabbix-troubleshooting-and-problems/​25384-zabbix-json-api-output-parameter|Zabbix JSON API output parameter]]):+  * [[https://​www.zabbix.com/​forum/​zabbix-troubleshooting-and-problems/​25384-zabbix-json-api-output-parameter|Zabbix JSON API output parameter]] 
 +  * Пример запроса определенных атрибутов и с фильтром
 <​code>​ <​code>​
-... 
-    "​params":​ { 
-       "​output":​ "​extend"​ 
-    }, 
-... 
-</​code><​code>​ 
 ... ...
     "​params":​ {     "​params":​ {
         "​output":​ ["​hostid",​ "​host"​],​         "​output":​ ["​hostid",​ "​host"​],​
-        "​templateids":​ ["10299"]+        "​templateids":​ ["10NNN"]
     },     },
 ... ...
 </​code>​ </​code>​
 +
 +
 ==== Оформление запросов в виде BASH скриптов ==== ==== Оформление запросов в виде BASH скриптов ====
  
сервис_zabbix.1561537930.txt.gz · Последние изменения: 2019/06/26 11:32 — val