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=[],
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 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=