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

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


сервис_zabbix

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
сервис_zabbix [2019/04/10 12:04]
val [Debian/Ubuntu]
сервис_zabbix [2019/06/26 11:32] (текущий)
val [Мониторинг по протоколу SNMP]
Строка 15: Строка 15:
  
   * [[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/​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]]
  
 <​code>​ <​code>​
Строка 84: Строка 85:
   * [[Язык программирования PHP#​Модуль php mysql]]   * [[Язык программирования PHP#​Модуль php mysql]]
  
-==== Debian/​Ubuntu ​====+==== Debian ​====
  
 <​code>​ <​code>​
Строка 106: Строка 107:
 </​code>​ </​code>​
  
-  * http://​server.corpX.un/​zabbix/​setup.php+http://​server.corpX.un/​zabbix/​setup.php
  
 <​code>​ <​code>​
Строка 181: Строка 182:
 gate# mysql < zabbix_proxy.sql gate# mysql < zabbix_proxy.sql
  
-gate# zcat /​usr/​share/​zabbix-proxy-mysql/​schema.sql.gz | mysql -uzabbix -zabbix_proxy+gate# zcat /​usr/​share/​zabbix-proxy-mysql/​schema.sql.gz | mysql -uzabbix -pzabbix ​zabbix_proxy
  
 gate# cat /​etc/​zabbix/​zabbix_proxy.conf gate# cat /​etc/​zabbix/​zabbix_proxy.conf
Строка 217: Строка 218:
 Administration->​Media types->​Email Administration->​Media types->​Email
  
-Administration->​Users->​Admin->​Media+Administration->​Users->​Admin ​или userX->Media
  
 Configuration->​Actions->​Event source: Triggers Configuration->​Actions->​Event source: Triggers
Строка 246: Строка 247:
     ​     ​
     Recovery operations     Recovery operations
 +</​code><​code>​
 +Reports -> Action log
 </​code>​ </​code>​
- 
 ==== Простые проверки ==== ==== Простые проверки ====
  
 <​code>​ <​code>​
-Host: ya.ru +Host: ya.ru                         ​или val.bmstu.ru 
-  ЛЮБОЙ ИНТЕРФЕЙС:​ ya.ru+  ЛЮБОЙ ИНТЕРФЕЙС:​ ya.ru            или val.bmstu.ru
   New group: External Hosts   New group: External Hosts
   Items    Items 
-    Name: check perf http ya.ru+    Name: check perf http
     Type: Simple check     Type: Simple check
     Key: net.tcp.service.perf[https]     Key: net.tcp.service.perf[https]
Строка 284: Строка 286:
  
 <​code>​ <​code>​
-server# ​mkdir /​etc/​zabbix/​externalscripts/​+server# ​less /​etc/​zabbix/​zabbix_server.conf 
 +</​code><​code>​ 
 +... 
 +ExternalScripts=... 
 +... 
 +Timeout=... 
 +... 
 +</​code><​code>​ 
 +server# ES=/​etc/​zabbix/​externalscripts 
 +или 
 +server# ES=/usr/​lib/​zabbix/​externalscripts 
 + 
 +server# mkdir $ES 
 + 
 +server# cd $ES
 </​code>​ </​code>​
  
-=== Пример ​===+=== Пример ​простого скрипта ​===
 <​code>​ <​code>​
-server# cat /​etc/​zabbix/​externalscripts/​ping_avg.sh+server# cat 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>​
-Name: Ping AVG +Cofiguration->​Hosts->​gate 
-Type: External Check +  Items 
-Key: ping_avg.sh[3,"​{HOST.CONN}"​] +    ​Name: Ping AVG 
-Type of information:​ Numeric (float)+    Type: External Check 
 +    Key: ping_avg.sh[3,"​{HOST.CONN}"​] 
 +    Type of information:​ Numeric (float)
 </​code>​ </​code>​
  
-=== Пример ​===+=== Пример ​скрипта,​ требующего повышения привилегий ​=== 
 + 
 +!!! Для некоторых хостов (например,​ val.bmstu.ru) не хватит Timeout 
 <​code>​ <​code>​
 server# cat /​etc/​sudoers.d/​zabbix server# cat /​etc/​sudoers.d/​zabbix
- +</​code><​code>​ 
-server# cat /etc/zabbix/externalscripts/​detect_host_nmap.sh+zabbix ALL = (ALL) NOPASSWD: ​/usr/bin/nmap -O * 
 +</code><​code>​ 
 +server# cat detect_host_nmap.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
 sudo /​usr/​bin/​nmap -O $1 | grep -v '​Starting Nmap\|Host is up\|Nmap done' sudo /​usr/​bin/​nmap -O $1 | grep -v '​Starting Nmap\|Host is up\|Nmap done'
 </​code><​code>​ </​code><​code>​
-Name: Detect host operating system +Cofiguration->​Hosts->​gate 
-Type: External Check +  Items 
-Key: detect_host_nmap.sh["​{HOST.CONN}"​] +    ​Name: Detect host operating system ​by nmap 
-Type of information:​ Text+    Type: External Check 
 +    Key: detect_host_nmap.sh["​{HOST.CONN}"​] 
 +    Type of information:​ Text
 </​code>​ </​code>​
  
-=== Пример ​===+=== Пример ​запуска скрипта на удаленной системе ​===
  
 <​code>​ <​code>​
Строка 334: Строка 359:
 $ ssh-copy-id root@gate $ ssh-copy-id root@gate
  
 +$ ssh root@gate hostname
 +</​code>​
 +
 +  * [[Сервис DHCP#​Статистика DHCP сервера]]
 +
 +<​code>​
 $ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh CUR $ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh CUR
  
 $ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh MAX $ ssh root@gate /​usr/​local/​bin/​dhcp_stat.sh MAX
  
-# cat /​etc/​zabbix/​externalscripts/​dhcp_stat.sh+# 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>​
-Key: dhcp_stat.sh["​{HOST.CONN}",​CUR]+/​etc/​zabbix/​externalscripts/​dhcp_stat_ext.sh gate CUR 
 +</​code><​code>​ 
 +gate->​Items 
 +  Name: DHCP stat CUR 
 +  Type: External check 
 +  ​Key: dhcp_stat_ext.sh["​{HOST.CONN}",​CUR]
 </​code>​ </​code>​
  
 ==== Элементы типа trapper ==== ==== Элементы типа trapper ====
 +
 +=== Пример целочисленного элемента ===
 <​code>​ <​code>​
 Name: my item Name: my item
Строка 354: Строка 392:
 </​code><​code>​ </​code><​code>​
 $ zabbix_sender -z 127.0.0.1 -p 10051 -s server -k my.item -o 1 $ zabbix_sender -z 127.0.0.1 -p 10051 -s server -k my.item -o 1
 +</​code>​
 +=== Пример текстового элемента ===
 +<​code>​
 +Name: my nmap
 +Type: Zabbix trapper
 +Key:  my.nmap
 +Type of information:​ Text
 +Allowed hosts: 127.0.0.1
 +</​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)"​
 +
 +  или
 +
 +# 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)"​
 </​code>​ </​code>​
 ==== Вычисляемые элементы ==== ==== Вычисляемые элементы ====
  
 <​code>​ <​code>​
-Name: avg perf http ya.ru +ya.ru->​Items 
-Type: Calculated +  ​Name: avg perf http 
-Key:  avg-perf-http-ya.ru +    Type: Calculated 
-Formula: avg(net.tcp.service.perf[https],​5m) +    Key:  avg.perf.http 
-Type of information:​ Numeric (float)+    Formula: avg(net.tcp.service.perf[https],​5m) 
 +    Type of information:​ Numeric (float)
  
-... 
  
-Name: dhcp.stat.CUR.MAX.percent +gate->​Items 
-Type: Calculated +  ​Name: dhcp stat cur 
-Key:  ​dhcp.stat.CUR.MAX.percent +    Type: Zabbix agent 
-Formula: last(dhcp.stat[CUR])/​last(dhcp.stat[MAX])*100+    Key: dhcp.stat[CUR
 + 
 +  Name: dhcp stat max 
 +    Type: Zabbix agent 
 +    Key: dhcp.stat[MAX] 
 +     
 +  Name: DHCP stat CUR MAX percent 
 +    Type: Calculated 
 +    Key:  ​DHCP.stat.CUR.MAX.percent 
 +    Formula: last(dhcp.stat[CUR])/​last(dhcp.stat[MAX])*100 
 +</​code>​ 
 + 
 +==== Web сценарии ==== 
 + 
 +<​code>​ 
 +Configuratin->​Hosts->​server 
 +  Web scenarios 
 +    Scenario 
 +      Name: call 
 +    Steps 
 +      Name: call 1 
 +      URL: http://​server.corpX.un/​asterisk/​call.php?​phone=301 
 +      Required status codes: 200
 </​code>​ </​code>​
 ==== Настройка триггеров ==== ==== Настройка триггеров ====
Строка 381: Строка 455:
  
     Name: RDP service on client1 is not available     Name: RDP service on client1 is not available
-    Expression: {server:​net.tcp.service[tcp,​192.168.6.101,​3389].last()}=0+    Expression: {server:​net.tcp.service[tcp,​192.168.X.101,​3389].last()}=0
     Severity: Warning     Severity: Warning
  
-Host: ya.ru +Host: ya.ru                                                      или val.bmstu.ru 
-    Name: HTTPS service on ya.ru is not available +    Name: HTTPS service on {HOST.NAME} is not available 
-    Expression: {ya.ru:​net.tcp.service.perf[https].last()}=0+    Expression: {ya.ru:​net.tcp.service.perf[https].last()}=0 ​    или val.bmstu.ru
  
     Dependencies:​ Zabbix server: gate.isp.un is unreachable ​       Dependencies:​ Zabbix server: gate.isp.un is unreachable ​  
Строка 396: Строка 470:
 === Пример триггера основанного на значении элемента в течении периода === === Пример триггера основанного на значении элемента в течении периода ===
 <​code>​ <​code>​
-Host: ya.ru +Host: ya.ru                                                       ​или val.bmstu.ru 
-    Name: HTTP service on ya.ru is slow +    Name: HTTP service on {HOST.NAME} is slow 
-    Expression: {ya.ru:​net.tcp.service.perf[http].avg(5m)}>​0.6 ​  ​!!!Значение подобрать на основе графика+    Expression: {ya.ru:​net.tcp.service.perf[https].avg(5m)}>​0.6 ​   ​или val.bmstu.ru ​!!!Значение подобрать на основе графика
     Severity: Warning     Severity: Warning
 </​code>​ </​code>​
Строка 404: Строка 478:
 === Пример с макросами и Recovery expression === === Пример с макросами и Recovery expression ===
 <​code>​ <​code>​
-    Name: On gate dhcp subnet is full+    Name: On {HOST.NAME} ​dhcp subnet is full
     Problem expression: {Template App DHCP Service:​dhcp.stat[CUR].last()}/​{Template App DHCP Service:​dhcp.stat[MAX].last()}*100>​{$DHCP.POOLS.MAX.PERCENT}     Problem expression: {Template App DHCP Service:​dhcp.stat[CUR].last()}/​{Template App DHCP Service:​dhcp.stat[MAX].last()}*100>​{$DHCP.POOLS.MAX.PERCENT}
     Recovery expression: {Template App DHCP Service:​dhcp.stat[CUR].last()}/​{Template App DHCP Service:​dhcp.stat[MAX].last()}*100<​{$DHCP.POOLS.OK.PERCENT}     Recovery expression: {Template App DHCP Service:​dhcp.stat[CUR].last()}/​{Template App DHCP Service:​dhcp.stat[MAX].last()}*100<​{$DHCP.POOLS.OK.PERCENT}
Строка 411: Строка 485:
       Израсходовано более {$DHCP.POOLS.MAX.PERCENT} процентов.       Израсходовано более {$DHCP.POOLS.MAX.PERCENT} процентов.
 </​code>​ </​code>​
-=== Пример текстовым элементом ​ ===+ 
 +=== Пример ​с текстовым элементом ===
 <​code>​ <​code>​
-Name: Host gate nmap change+Name: Host {HOST.NAME} ​nmap change 
 +Severity: Warning
 Expression: {gate:​detect_host_nmap.sh["​{HOST.CONN}"​].diff()}=1 Expression: {gate:​detect_host_nmap.sh["​{HOST.CONN}"​].diff()}=1
 </​code>​ </​code>​
 +
 +
 ==== Пользовательские графики ==== ==== Пользовательские графики ====
  
 <​code>​ <​code>​
-Configuration->​Hosts->​ya.ru->​Graphs->​Create graph +Configuration->​Hosts->​ya.ru->​Graphs->​Create graph             или val.bmstu.ru 
-  Name: perf http ya.ru+  Name: perf http
   Y axis MIN value: Fixed 0   Y axis MIN value: Fixed 0
   Items   Items
-    ya.ru: avg perf http ya.ru +    ya.ru: avg perf http                                      ​или val.bmstu.ru 
-    ya.ru: check perf http ya.ru+    ya.ru: check perf http                                    ​или val.bmstu.ru
   Draw style: Bold Line   Draw style: Bold Line
 </​code>​ </​code>​
Строка 457: Строка 535:
 ListenPort=10050 ListenPort=10050
  
-# Hostname=server+# Hostname=Zabbix server 
 +# must match hostname as configured on the server
 # Иначе в журнале будут сообщения:​ cannot send list of active checks # Иначе в журнале будут сообщения:​ cannot send list of active checks
  
Строка 470: Строка 549:
  
 gate# scp /​etc/​zabbix/​zabbix_agentd.psk server:​gate.psk gate# scp /​etc/​zabbix/​zabbix_agentd.psk server:​gate.psk
 +
 +gate# service zabbix-agent restart
  
 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
Строка 544: Строка 625:
  
 <​code>​ <​code>​
-gate# cat /​usr/​local/​bin/​dhcp_stat.sh 
-</​code><​code>​ 
-#!/bin/sh 
- 
-CMD='/​usr/​bin/​dhcpd-pools -l /​var/​lib/​dhcp/​dhcpd.leases -c /​etc/​dhcp/​dhcpd.conf -f c | grep 192.168.X'​ 
-MAX=`eval $CMD | cut -d'"'​ -f8` 
-CUR=`eval $CMD | cut -d'"'​ -f10` 
- 
-eval RES=\$$1 
- 
-echo $RES 
-</​code><​code>​ 
-# /​usr/​local/​bin/​dhcp_stat.sh MAX 
- 
-# /​usr/​local/​bin/​dhcp_stat.sh CUR 
- 
 # cat zabbix_agentd.conf # cat zabbix_agentd.conf
 </​code><​code>​ </​code><​code>​
 ... ...
 UserParameter=dhcp.stat[*],/​usr/​local/​bin/​dhcp_stat.sh $1 UserParameter=dhcp.stat[*],/​usr/​local/​bin/​dhcp_stat.sh $1
 +...
 +TLSAccept=unencrypted,​psk ​   #for convenience
 +...
 </​code><​code>​ </​code><​code>​
 server# zabbix_get -s gate -k dhcp.stat[CUR] server# zabbix_get -s gate -k dhcp.stat[CUR]
Строка 592: Строка 660:
  
 <​code>​ <​code>​
 +Configuration->​Discovery
 Discovery rules Discovery rules
   Name: Local network   Name: Local network
-  IP range: ​192.168.1.100-110172.16.1.190-199+  IP range: ​172.16.1.190-199192.168.X.11-20
   Checks: ​   Checks: ​
     Check type: SNMPv2 agent      Check type: SNMPv2 agent 
Строка 605: Строка 674:
   Enabled: yes   Enabled: yes
  
-Actions+Configuration->​Actions
   Event source: Discovery   Event source: Discovery
     Name: Action add snmp device to zabbix     Name: Action add snmp device to zabbix
Строка 614: Строка 683:
     Operations: ​     Operations: ​
       Add to host groups: Discovered hosts       Add to host groups: Discovered hosts
-      Link to templates: Template SNMP Device+      Link to templates: ​ 
 +             ​3.XX ​Template SNMP Device 
 +             4.XX Template Module Generic SNMPv2 
 +             4.XX Template Module Interfaces Simple SNMPv2
     Add     Add
 </​code>​ </​code>​
  
-=== Мониторинг доступности SNMP устройства === 
  
-  * [[https://​serverfault.com/​questions/​575912/​can-zabbix-alert-me-when-an-snmp-device-does-not-respond|Can Zabbix alert me when an SNMP device does not respond?]] 
- 
-<​code>​ 
-Template SNMP Device plus Check 
-  Trigger: 
-    Name: Host {HOST.NAME} Unreachable 
-    Expression: {Template SNMP Device plus Check:​sysUpTime.nodata(5m)}=1 
-</​code>​ 
 ==== Проверки через SSH ==== ==== Проверки через SSH ====
  
Строка 714: Строка 777:
 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[eth1]+server# zabbix_get -s gate -k net.if.in[eth0]
 </​code>​ </​code>​
  
Строка 734: Строка 797:
 echo -n '​]}'​ echo -n '​]}'​
 </​code><​code>​ </​code><​code>​
-cat /​etc/​zabbix/​dhcp-pools-discovery.sh | jq+# /​etc/​zabbix/​dhcp-pools-discovery.sh | jq
  
 # cat /​etc/​zabbix/​dhcp-pools-shared-network.sh # cat /​etc/​zabbix/​dhcp-pools-shared-network.sh
Строка 767: Строка 830:
  
 <​code>​ <​code>​
-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
Строка 1057: Строка 1120:
 </​code>​ </​code>​
  
-==== Работа с объектами host ====+==== Работа с объектами host/​template ​====
  
   * Утилита для обработки JSON   * Утилита для обработки JSON
Строка 1071: Строка 1134:
     "​jsonrpc":​ "​2.0",​     "​jsonrpc":​ "​2.0",​
     "​method":​ "​host.get",​     "​method":​ "​host.get",​
-    "​params":​ { +    "​params":​ {},
-        "​output":​ "​extend"​ +
-    ​},+
     "​auth":​ "​xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",​     "​auth":​ "​xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",​
     "​id":​ 2     "​id":​ 2
 } ' http://​127.0.0.1/​zabbix/​api_jsonrpc.php | jq } ' http://​127.0.0.1/​zabbix/​api_jsonrpc.php | jq
 +...
 +</​code>​
 +
 +  * Варианты параметра "​method"​
 +<​code>​
 +...
 +    "​method":​ "​template.get",​
 ... ...
 </​code>​ </​code>​
Строка 1083: Строка 1151:
 <​code>​ <​code>​
 ... ...
-    "​params":​ {},+    "​params":​ { 
 +       "​output":​ "​extend"​ 
 +    ​},
 ... ...
 </​code><​code>​ </​code><​code>​
 ... ...
     "​params":​ {     "​params":​ {
-        "​output":​ ["​hostid",​ "​host"​]+        "​output":​ ["​hostid",​ "host"], 
 +        "​templateids":​ ["​10299"]
     },     },
 ... ...
 </​code>​ </​code>​
- 
 ==== Оформление запросов в виде BASH скриптов ==== ==== Оформление запросов в виде BASH скриптов ====
  
 <​code>​ <​code>​
-server.corp1.un:~# export AUTH=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx+server:~# export AUTH=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  
-server.corp1.un:~# cat /​root/​zab_get_hosts.sh+server:~# cat /​root/​zab_get_hosts.sh
 </​code><​code>​ </​code><​code>​
 #!/bin/sh #!/bin/sh
Строка 1110: Строка 1180:
     \"​id\":​ 2     \"​id\":​ 2
 } " http://​127.0.0.1/​zabbix/​api_jsonrpc.php } " http://​127.0.0.1/​zabbix/​api_jsonrpc.php
-</​code>​+</​code>​<​code>​ 
 +server:~# /​root/​zab_get_hosts.sh | jq
  
 +Список имен узлов
 +server:~# /​root/​zab_get_hosts.sh | jq '​.result | .[] | { host: .host} | tostring'​ | tr -d '​{}\\'​ | tr '"'​ ' ' | cut -d ' ' -f5
 +</​code>​
 ==== Получение списка карт и их элементов из Zabbix ==== ==== Получение списка карт и их элементов из Zabbix ====
  
сервис_zabbix.1554887040.txt.gz · Последние изменения: 2019/04/10 12:04 (внешнее изменение)