第六章
6.10 User Parameter
有Agent的用户自定义参数,定义所需要的监控项,从而收集想要的数据
用户自定义参数.
前提条件: 被监控设备 安装并正确配置zabbix agent ,添加自定义监控的配置文件和命令脚本
(既可以是主动模式 又可以是被动模式)
语法(在Zabbix Agent的配置文件中)
UserParameter=<key>,<command>
#vim /etc/zabbix/zabbix_agentd.conf
需要确认启动zabbix-agent的用户是否可以启动脚本
可以在zabbix_agent.conf中添加如下配置(一般放在文件中的Include的zabbix_agentd.d下面)
定义用户的数量和进程的数量
UserParameter=user.count,who|wc -l
UserParameter=process.count,ps aux|wc -l
#UserParameter=processcount[*],ps aux |grep $1|grep -v grep|wc -l #这样可以传递参数并监控
重启
systemctl restart zabbix-agent.service
如何保证UserParameter配置是正确的?
在server端可以通过zabbix_get 获取监控项的值
查看是否安装 yum list all |grep zabbix
yum install zabbix-get.x86_64
#zabbix get -h
#zabbix_get -s 192.168.93.147 -p 10050 -k user.count
#zabbix_get -s 192.168.93.147 -p 10050 -k process.count
#zabbix_get -s 192.168.93.147 -p 10050 -k process.count[zabbix_agent]
第一步:创建监控项
第二步:验证结果
用户自定义参数在使用过程中的技巧,规范
(一般放在zabbix_agent.conf配置中的Include的zabbix_agentd.d下面)
[root@localhost zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@localhost zabbix_agentd.d]# vim userparameter_process_count.conf
UserParameter=process.count,ps aux|wc -l
重启zabbix agent
查看数据是否依然能收到最新的
如何往用户自定义参数中配置参数
客户端Zabbix Agent
[root@localhost zabbix_agentd.d]# vim userparameter_process_count_new.conf
UserParameter=processcount[*],ps aux|grep $1|grep -v grep|wc -l
这样可以看到指定的进程中的进程数量,比如监控zabbix agent的进程数量
重启zabbix agent,通过服务端Zabbix Server的zabbix_get测试
[root@localhost data]# zabbix_get -s 192.168.93.147 -p 10050 -k processcount[zabbix_agentd]
13
同样的,可以配置到监控项当中
6.11 Zabbix Trapper
无需安装Zabbix Agent
使用场景:只要可以将数据发送给zabbix-server即可
前提条件:
- zabbix-server端配置zabbix trapper类型的监控项
- 被监控设备使用zabbix_sender命令或其他客户端发送监控数据
语法
zabbix_sender -z <zabbix server ip> -p <port> -s <host> -k <item key> -o <value>.
数据收集流程
创建两个监控项
创建完成之后登陆到zabbix-agent端发送监控数据
yum -y install zabbix-sender
#zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
#zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k log.content -o "warning:test"
[root@localhost ~]# zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000059"
sent: 1; skipped: 0; total: 1
可以将zabbix_sender和user_parameter结合起来
配合脚本
[root@localhost ~]# cd /etc/zabbix/
[root@localhost zabbix]# ls
web zabbix_agentd.conf zabbix_agentd.d
[root@localhost zabbix]# mkdir lldscripts
[root@localhost zabbix]# vim /lldscripts/zabbix_trapper_script.sh
[root@localhost zabbix]# cat /lldscripts/zabbix_trapper_script.sh
zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k process.cpu -o 70.9
zabbix_sender -z 192.168.93.145 -p 10051 -s "findsec_linux" -k log.content -o "warning:test"
[root@localhost zabbix]# chmod a+x /lldscripts/zabbix_trapper_script.sh
[root@localhost lldscripts]# ./zabbix_trapper_script.sh
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000135"
sent: 1; skipped: 0; total: 1
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000205"
sent: 1; skipped: 0; total: 1
[root@localhost lldscripts]# cd /etc/zabbix/zabbix_agentd.d/
[root@localhost zabbix_agentd.d]# vim userparameter_zabbix_trapper.conf
UserParameter=zabbixtrapper.info,/etc/zabbix/lldscripts/zabbix_trapper_script.sh
[root@localhost zabbix_agentd.d]# systemctl restart zabbix-agent.service
好处:①所有监控项在同一秒收集 ②Zabbix Trapper会降低Zabbix Server的压力,下发到各个被监控设备上
6.12 External Check
外部检查 无需Agent,实际应用中用的不多
在zabbix-server或者zabbix-proxy上通过执行脚本获取监控数据
前提条件
zabbix server
- 配置ExternalScripts参数,指定脚本的路径
- 准备获取监控数据的脚本
- 添加External Check监控项
数据收集流程
语法:
script[<parameter1>,<parameter2>,...]
zabbix-server端执行脚本时会fork子进程来处理脚本,当有大量的外部检查时,会导致zabbix-server的性能下降.
Server服务端:
yum install bind-utils -y
在zabbix-server上修改zabbix_server.conf
打开ExternalScripts=/usr/lib/zabbix/externalscripts
在/usr/lib/zabbix/externalscripts下添加脚本dns_resolve_time.sh 并赋予执行权限
第一个参数是DNS服务器,第二个参数解析的域名
[root@localhost ~]# cat /usr/lib/zabbix/externalscripts/dns_resolve_time.sh
#!/bin/bash
TIMEOUT=15
DNS_SERVER=$1
DOMAIN=$2
if test -z "$1"
then
echo "from DNS Server"
exit
fi
if test -z "$2"
then
echo "DNS Domain"
exit
fi
RESOLVE_TIME=`(time dig @$1 $2) 2>&1|grep real|cut -dm -f 2|sed 's/[s.]//g'`
echo $RESOLVE_TIME
[root@localhost ~]# chmod a+x /usr/lib/zabbix/externalscripts/dns_resolve_time.sh
[root@localhost ~]# /usr/lib/zabbix/externalscripts/dns_resolve_time.sh 114.114.114.114 www.baidu.com
添加监控项,监控域名解析是否正常,监控公司主站域名
结果:
可以在zabbix-server.log中看到错误日志 或者在web界面对应主机的application监控项里查看监控项的状态
latest data里监控项如果显示灰色就说明监控数据收集异常
#tail -n 200 /var/log/zabbix/zabbix_server.log
想另外个DNS来解析另外个域名
6.13 HTTP Agent
不需要安装Agent
通过http或者https请求获取监控数据.也可以通过sender
用于监控业务或者接口的响应性能情况,检测响应码 响应时间
前提条件
zabbix-server
- 安装是需要支持curl (启动zabbix-server时web monitoring显示 yes)
- 添加http agent监控项
数据收集流程
#tail -n 500 zabbix_server.log|more
看是否支持curl,如果支持的话可以看到 Web monitor
第一步:创建监控项, Type of information 为 Log
key是自定义生成的
第二步:查看结果
稍微复杂点的例子
访问请求 zabbix api 的监控
官网文档资料API的值 https://www.zabbix.com/documentation/4.0/manual/api/reference/apiinfo/version
Request:
{
"jsonrpc": "2.0",
"method": "apiinfo.version",
"params": [],
"id": 1
}
第一步:创建监控项, Type of information 为 Log
key是自定义生成的
第二步:查看结果
6.14 web场景监控
前提条件
zabbix-server
- 安装时需要支持curl
- 添加web监控
数据收集流程
语法
场景监控项
web.test.in[Scenario,,bps]
web.test.fail[Scenario]
web.test.error[Scenario]
步骤监控项
web.test.in[Scenario,Step,bps]
web.test.time[Scenario,Step,resp]
web.test.rspcode[Scenario,Step]
创建最简单的Web场景
较为复杂的登录zabbix网站场景的监控
第一步:创建用于监控登录的账号
第二步:登录请求发送校验 过程
monitor
123456
查看网页源代码,找到关键字 Zabbix SIA,而且相应状态码是200,代表打开首页成功
登录后,传递的参数
登录成功后,会生成一个CSRF token,用于防止跨站脚本攻击的
退出登录,CSRF token获取,传给SID
第三步:模拟此登录过程的web场景
创建web场景
配置步骤
第一步:打开首页
第二步:登录
regex:name=“csrf-token” content="([0-9a-z]{16})" 赋给变量sid
第三步:验证第二步是否成功的
第四步:登出
第五步:校验
Follow redirects √
200
验证: