1、定義action爲腳本通知
2、宏(macros)
3、模板(Templates)
4、自定義items
5、網絡發現功能
6、web監控
7、監控方式
8、JMX的監控
9、代理分佈式監控
定義action爲腳本通知
1、自定義腳本
vim /usr/lib/zabbix/alertscripts/test.sh
#!/bin/bash
to="$1"
subject="$2"
body="$3"
echo "test script" | mail -s "$subject" "$to"
2、添加執行權限
chmod +x /usr/lib/zabbix/alertscripts/test.sh
3、定義Media types爲script
<監控系統zabbix> 128
4、action中定義動作爲執行腳本
注意:
需要重新啓動zabbix-server服務,讀取通知腳本
宏(macros)
1、可以理解成宏是”保存值的變量”。
zabbix內置的宏調用格式:{HOST.NAME}
2、用戶自定義宏
zabbix支持在全局、模板或主機級別使用用戶自定義宏。
使用格式:{$MACRO}
使用範圍:item kets、descriptions、trigger名稱及表達式、主機接口IP/DNS及端口、
discovery機制的SNMP協議的相關聲明中。
3、宏的生效範圍順序
主機級別的宏
一級模板中的宏,多個一級模板時按器ID排序
二級模板中的宏
全局宏
模板(Templates)
1、模板是一系列配置的集合,它可以方便的快速部署在某監控對象上,並支持重讀應用。
可以將模板應用到某一個主機上。應用模板可以實現快速的部署
及修改模板內容的配置項。
2、模板內容包括:
items
triggers
graphs
applications
screens
low-level discoverty rules
自定義items
1、語法格式
UserParameter=<key>[],<command>
UserParameter=mem.used,free -m | awk '/^Mem/{print $3}'
UserParameter=mem.stats[*], cat /proc/meminfo | grep '^$1'
UserParameter=mem.stats[*], cat /proc/meminfo | awk '/^$1/{print $$2}'
# $$2表示逃逸字符,以免被識別爲key傳遞來的參數
UserParameter=fpm.stats[*],curl -s http://127.0.0.1/fpm-status | awk
'/^$1/{print $$NF}'
[] # 參數。例如 [*] 表示傳遞的參數都給後面的command。可以將參數傳遞給後面的命令
2、配置文件定義定義的tiems放置路徑 {在agent端使用}
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
在此路徑下新創建一個文件,並將自定義的item寫入此文件
3、示例
UserParameter=Mysql.dml[*], /usr/local/mysql/bin/mysql -h$1 -u$2 -p$3 -e 'SHOW GLOBAL STATUS' | awk '/Com_$4\>/{print $$2}'
UserParameter=Nginx.active[*], /usr/bin/curl -s "http://$1:$2/status" | awk
'/^Active/ {print $NF}'
UserParameter=Nginx.reading[*], /usr/bin/curl -s "http://$1:$2/status" | grep
'Reading' | cut -d" " -f2
UserParameter=Nginx.writing[*], /usr/bin/curl -s "http://$1:$2/status" | grep
'Writing' | cut -d" " -f4
UserParameter=Nginx.waiting[*], /usr/bin/curl -s "http://$1:$2/status" | grep
'Waiting' | cut -d" " -f6
UserParameter=Nginx.accepted[*], /usr/bin/curl -s "http://$1:$2/status" | awk
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$1}'
UserParameter=Nginx.handled[*], /usr/bin/curl -s "http://$1:$2/status" | awk
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$2}'
UserParameter=Nginx.requests[*], /usr/bin/curl -s "http://$1:$2/status" | awk
'/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $$3}'
UserParameter=nginx.access_countaccess, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog totalaccess
UserParameter=nginx.access_count200, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 200access
UserParameter=nginx.access_count202, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 202access
UserParameter=nginx.access_count4xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 4xxaccess
UserParameter=nginx.access_count3xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 3xxaccess
UserParameter=nginx.access_count5xx, /usr/lib/zabbix/externalscripts/logcheck_nginx.accesslog 5xxaccess
UserParameter=varnish.stat[*], /usr/lib/zabbix/externalscripts/varnishstatus
varnish_stat $1
UserParameter=varnish.count[*], /usr/lib/zabbix/externalscripts/varnishstatus
varnish_count $1
UserParameter=varnish.hitrate, /usr/lib/zabbix/externalscripts/varnishstatus
varnish_hitrate
網絡發現功能
1、發現包括兩個階段:discovery 和 actions。
發現網絡的主機後,將主機添加到zabbix的監控中,並自定鏈接至指定的模板。可判定發現
的主機的服務角色。
2、發現主機的方式
IP範圍
主機上特定的服務
zabbix agent
SNMP agent
3、發現事件
Service Up #服務持續 'up'
Service Down #服務持續 'down'
Service Lost #服務由 'up' 變 'down'
Service Discovered #服務首次被發現或者由'down'變'up'
Host Up #主機至少有一個服務是 'up' 狀態
Host Down #所有服務都持續 'down'
Host Lost #主機的所有服務在至少一個是 'up' 之後全部是 'down'。
Host Discovered #在主機的所有服務都 'down' 之後,至少一個服務是'up'。
4、
動作
zabbix 所有動作都是基於發現事件,例如:
發送通知
添加/刪除主機
啓用/禁用主機
添加主機到組
從組中刪除主機
將主機鏈接到模板/從模板中取消鏈接
執行遠程腳本命令
基於事件的網絡發現動作,可以根據設備類型,IP地址,狀態,運行時間/停機時間等進行
配置,查看動作操作和條件頁面。
5、網絡發現的主機會自動創建interface。
1.檢測到服務 - 例如,如果SNMP檢查成功,那麼將會創建一個SNMP接口;
2.如果主機響應Zabbix agent和SNMP的請求,那麼這兩種類型的接口都會被創建;
3.如果唯一性準則是是Zabbix agent鍵值或是SNMP OID返回的數據, 這第一個接口發現的
主機將會被創建,而這個接口將會被作爲默認接口,其他IP地址將會作爲附加接口被添加。
4.如果主機只響應agent檢查,則只能使用agent接口來創建。如果稍後開始響應SNMP的檢
查,那麼將添加SNMP接口爲附加接口。
5.如果最初創建了3個獨立的主機,他們都被自動發現的唯一性準則“IP”發現,然後修改自
動發現規則,爲了使A、B和C自動發現的唯一性準則結果是相同的,那麼接口B和C作爲接口
A的附加接口來創建第一個主機。主機B和C作爲個體主機仍然存在。在監控中 → 自動發現中,
添加的接口將以黑色字體和縮進形式顯示在“已發現的設備”這一列中,但在“已監測的主
機”這一列將只顯示第一個創建的主機A。由於被認爲附加接口的IP,所以不測量主機B和C
的“在線時間/斷線時間”。
6、主機發現後的action
web監控
1、監控指定站點資源下載速度,及響應時間,響應代碼。
****** 每一個站點稱爲一個:Scenario
內建key:
web.test.in[Scenario,Step,bps] # 傳輸速率
web.test.time[Scenario,Step] # 響應時間
web.test.rspcode[Scenario,Step] # 響應碼
監控方式
1、主動監控
相對於Agent而言,Agent主動報告數據給Server端。agent向server請求與自己先關的
監控項配置,
配置文件abbix_agent.conf:
ServerActive=
Hostname=
# HostnameItem=system.hostname
web界面接口配置item:
zabbix agent(active)
2、agent手動發送給server監控數據
web界面接口配置item:
items類型爲"zabbix trapper"
agent端手動發送數據:
zabbix_sender -z 172.18.26.1 -p 10051 -s node2 -k "send.test.data" -o
"10240"
-s HOSTNAME # 要與配置items配置的主機名一致
-z ServerIP # 服務器IP地址
-o value # 要發送的數據
3、被動監控
相對於Agent而言,server向Agent發起數據請求,Agent收集數據併發送給server端。
Linux啓用snmp的方法:
# yum install net-snmp net-snmp-utils
配置文件:
/etc/snmp/snmpd.conf
常用的一些snmp的ACL
定義ACL
.1.3.6.1.2.1.1.1.0:系統描述基本信息,SysDesc
.1.3.6.1.2.1.1.3.0:監控時間,SysUptime
.1.3.6.1.2.1.1.5.0:主機名,SysName
.1.3.6.1.2.1.1.7.0:主機提供的服務,SysService
.1.3.6.1.2.1.25.1.1:系統正常運行時間
.1.3.6.1.2.1.2.1.0:網絡接口數目
.1.3.6.1.2.1.2.2.1.2:網絡接口的描述信息
.1.3.6.1.2.1.2.2.1.3:網絡接口類型
.1.3.6.1.2.1.2:網絡接口的相關數據
.1.3.6.1.4.1.2021:系統資料負載,memory,disk io,cpu load
....
啓動服務:
systemctl start snmpd.service
測試工具:
# snmpget -v 2c -c public HOST OID
# snmpwalk -v 2c -c public HOST OID
Key <Unique string to be used as reference to triggers> For example, “my_param”.
JMX的監控
1、在Server端安裝額外組件
zabbix-java-gateway-3.4.0-1.el7.x86_64.rpm
2、zabbix server配置
javaGateway=
javaGatewatPort=10052
StartJavaPollers=5
3、被監控的JVM配置
/etc/sysconfig/tomcat
CATALINA_OPTS="-Djava.rmi.server.hostname=【TOMCAT_SERVER_IP】 -
Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -
Dcom.sun.management.jmxremote.port=12345 -
Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.authenticate=false"
【TOMCAT_SERVER_IP】修改
4、web界面配置示例
JMX interfaces 172.18.25.2
key:
jmx[java.lang:type=Memory,HeapMemoryUsage.used]
代理分佈式監控
1、代理服務器安裝配置
1、安裝數據庫
MariaDB [(none)]> create database zbxproxydb character set 'utf8';
MariaDB [(none)]> grant all on zbxproxydb.* to 'zbxproxyuser'@'172.18.%.%'
IDENTIFIED by 'zbxproxypass';
MariaDB [(none)]> flush privileges;
2、導入數據庫
##zcat /usr/share/doc/zabbix-proxy-mysql-3.4.0/schema.sql.gz |
mysql zabbixproxydb
[ root@ygl ~ ]# mysql -uzbxproxyuser -pzbxproxypass -h172.18.1.1
zbxproxydb < schema.sql
3、安裝包
yum install zabbix-proxy-mysql-3.4.0-1.el7.x86_64.rpm
zabbix-agent-3.4.0-1.el7.x86_64.rpm
zabbix-get-3.4.0-1.el7.x86_64.rpm
zabbix-sender-3.4.0-1.el7.x86_64.rpm
4、配置/etc/zabbix/zabbix_proxy.conf
Server=
zabbix server主機地址;
Hostname=
當前代理服務器的名稱;在server添加proxy時,必須使用此處指定的名稱;
需要事先確保server能解析此名稱;
DBHost=
DBName=
DBUser=
DBPassword=
ConfigFrequency=10
DataSenderFrequency=1
3、在server端添加此Porxy
Administration –> Proxies
4、在Server端配置通過此Proxy監控的主機;
注意:zabbix agent端要允許zabbix proxy主機執行數據採集操作:
Server=