7、自定义监控项
例如:监控客户端的用户数
一、在客户端启动自定义监控项功能html
# vim /etc/zabbix/zabbix_agentd.conf Include=/etc/zabbix/zabbix_agentd.d/*.conf #默认监控命令的配置文件目录,可自定义 UnsafeUserParameters=1 #启用自定义监控项功能
二、在客户端定义监控命令
在/etc/zabbix/zabbix_agentd.d目录默认有一个配置模板,能够参考里面的格式修改
自定义配置文件:shell
# vim /etc/zabbix/zabbix_agentd.d/customize_usernums.conf #UserParameter=\<key\>,\<shell command\> UserParameter=user_nums,wc -l /etc/passwd | awk '{print $1}'
说明:
UserParameter:自定义命令的关键字
user_nums:命令名称
wc -l /etc/passwd | awk '{print $1}':shell命令
重启客户端agent:service zabbix-agent restartvim
三、在监控端测试客户端自定义的监控命令
zabbix_get -s 10.100.2.200 -k user_nums
35 #结果为35,表示有35个用户安全
四、在监控端调用自定义命令
建立模板:配置-->模板-->建立模板
建立应用集:配置-->模板-->应用集-->建立应用集
建立监控项:输入名称、键值(自定义的监控命令),选择应用集,添加便可。
五、调用自定义的模板
配置-->主机,选择要添加模板的主机-->模板,输入custom搜索模板,添加、更新。
此时,在主机的监控项便可看到自定义的监控项目了
在监测中-->最新数据,能够看到监控数据了。
例如:监控FTP服务器服务和端口
一、一个一个服务(端口)的去监控,如ntp服务,端口号UDP:123
1> 修改配置文件:# vim /etc/zabbix/zabbix_agentd.conf
启用自定义监控项:UnsafeUserParameters=1
修改监控项:使用服务名UserParameter=mon_ntpd,ps -ef|grep -w ntpd|grep -v grep|wc -l
等同于:使用端口号UserParameter=mon_udp123, netstat -unpl|grep -w 123|awk '{print $4}'|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|uniq|wc -l
注:若有多个监控服务,分多行便可。
2>重启zabbix-agent:# service zabbix-agent restart
3>在监控端测试:# zabbix_get -s 10.100.2.5 -p 10050 -k mon_ntpd
结果为1表示服务正常。
4>建立应用集:Services #在Template OS Linux模板建立
5>建立监控项:#在对应的主机监控项中建立
名称:如Monitor_ntpd
键值:mon_ntpd
应用集:Services
6>建立触发器:#在对应的主机监控项中建立
名称:ntpd process not running
严重性:如警告
表达式:{ftp-server:mon_ntpd.last()}<>1
7>测试:# service ntpd stop,查看是否报警。bash
二、经过脚本批处理监控全部端口
1>建立shell脚本
vim /usr/local/zabbix_agent/zabbix_tcp.sh
输入如下脚本:服务器
#!/bin/bash portarray=(`sudo netstat -tnlp|egrep -i "$1"|awk '{print $4}'|awk -F':' '{if ($NF~/^[0-9]*$/) print $NF}'|sort -n|uniq`) length=${#portarray[@]} printf "{\n" printf '\t'"\"data\":[" for ((i=0;i<$length;i++)) do printf '\n\t\t{' printf "\"{#TCP_PORT}\":\"${portarray[$i]}\"}" if [ $i -lt $[$length-1] ];then printf ',' fi done printf "\n\t]\n" printf "}\n"
保存并授予执行权限:# chmod +x /usr/local/zabbix_agent/zabbix_tcp.sh网络
2>修改配置文件:# vim /etc/zabbix/zabbix_agentd.conf
增长一行:UserParameter=mon_tcpport,/root/shell/zabbix_tcp.sh "$1"
3>重启zabbix-agent:# service zabbix-agent restart
4>在监控端测试:# zabbix_get -s 10.100.2.5 -k mon_tcpport
若是提示如下错误:表示没有权限
(Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.)
解决办法:在脚本中使用sudo netstat命令,并修改sudoers文件:
vim /etc/sudoers
#Defaults requiretty #注释掉此行
zabbix ALL=(ALL) NOPASSWD: ALL #添加此行
5>建立自动发现规则:在Template OS Linux模板建立
名称:tcp port discovery
键值:mon_tcpport
6>建立监控项原型:在自动发现规则中建立
名称:tcp port {#TCP_PORT} status
键值:net.tcp.listen[{#TCP_PORT}]
应用集:Services
7>建立触发器原型:在自动发现规则中建立
名称:tcp port {#TCP_PORT} status
严重性:警告
表达式:{Template OS Linux:net.tcp.listen[{#TCP_PORT}].count(#3,0,"eq")}>2
注:{.count(#3,0,”eq”)}>2,表示最近3个值中等于0的个数大于2时则报警。
8>测试
9>在监测中-->最新数据状态以下:
注:net.tcp.listen[port] 检查 TCP 端口 是否处于侦听状态。返回 0 - 未侦听;1 - 正在侦听tcp
8、图形管理
同(配置和管理Zabbix(一))监控项管理,能够根据须要添加想查看的图形。ide
9、Zabbix历史(history)和趋势(trends)数据
历史数据:即每一、五、15分钟的数据。
趋势数据:即每小时的平均数据,每小时收集一次,占用的资源很小。
保留历史和趋势数据:以下图,在监控项里设置。通常保存历史记录14天,趋势数据5年就能够了。根据磁盘空间来定义。超过保留时间的数据会被删除。
能够看到默认的监控项为历史数据7天(7d即1w一周),趋势数据1年(365d)
注:时间单位后缀
s - 秒(通常不写s,即表示默认为s)
m - 分、h - 小时、d - 天、w - 周post
10、报警媒介
在触发器触发了一条报警信息后,须要经过报警媒介发送给用户,Zabbix支持Email、Jabber、SMS、自定义脚本等媒介。
经过Email发报警信息给用户:
一、配置sendmail或postfix:
报警信息将会使用系统自带的sendmail发送,CentOS7默认没有安装sendmail,而是安装和启用了postfix。若要使用sendmail还须要禁用postfix并安装sendmail。但可使用postfix来代替sendmail发送邮件,效果是同样的,不过都要安装mailx。
yum install mailx
因为邮箱服务器有多个不一样的域名服务器,能够修改main.cf,指定转发服务器
# vim /etc/postfix/main.cf relayhost = [10.100.2.103] systemctl restart postfix
二、配置Email:
管理-->报警媒介类型-->Email,以下图:
SMTP服务器:邮件服务器域名或IP地址,如exchange hub
SMTP HELO:通常为邮件服务器顶级域名
SMTP电邮:收件人From看到的邮件地址
注:可根据须要选择是否开启安全验证,如使用经过验证的帐号密码发邮件。另外Exchange服务器,还要在服务器配置集线器传输中,修改接收链接器(若有限制),在网络中添加容许匿名发送邮件的服务器或设备的IP地址。
三、配置用户
使用定义的媒介:管理-->用户-->报警媒介
点击添加,在弹出的页面输入收件人地址,根据须要选择触发级别。
点击添加后再更新便可
四、配置动做:
配置-->动做-->建立动做:定义名称和条件(可定义多个条件)
定义操做:添加操做细节,发送对象、发送方式、发送类型等
恢复操做和确认操做相似:
动做配置完成:
测试:
例如# systemctl stop zabbix-agent
将收到如下告警邮件提醒
故障恢复后邮件提醒:
在仪表板能够看到问题的描述:
使用自定义脚本和sendEmail发送邮件:
Zabbix默认Email使用系统自带的sendmail发送邮件,但有邮件会被当成垃圾邮件。更简单和自由的方式,可使用自定义脚本和sendEmail(或外部邮件服务器)。
一、安装sendEmail软件
# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz # cp sendEmail-v1.56/sendEmail /usr/local/bin/
测试发送邮件
/usr/local/bin/sendEmail -f zabbix@test.com -t xxxx@test.com -s 10.100.2.103 -u "测试邮件" -o message-charset=utf8 -m "测试邮件内容"
发送成功,将收到如下提示。
Mar 19 18:16:54 zabbix sendEmail[22980]: Email was sent successfully!
命令说明:
/usr/local/bin/sendEmail 命令主程序
-f zabbix@test.com 发件人邮箱
-t xxxx@test.com 收件人邮箱
-s 10.100.2.103 发件人邮箱的smtp服务器
-u "测试邮件" 邮件的主题
-o message-charset=utf8 邮件内容编码
-o message-content-type=html 邮件内容的格式,html表示它是html格式
-xu senduser@test.com 发件人邮箱的用户名(SMTP验证的用户名)
-xp 123456 发件人邮箱密码(SMTP验证的密码,注意特殊符号)
-m “测试邮件内容" 邮件的具体内容
-cc xxx@xx.com 抄送地址
-bcc yyy@yy.com 暗送地址
二、检查告警脚本路径
egrep -v '^#|^$' /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
三、建立邮件发送脚本
# vim /usr/lib/zabbix/alertscripts/send_mail.sh #!/bin/sh to=$1 subject=$2 body=$3 /usr/local/bin/sendEmail -f zabbix@test.com -t "$to" -s 10.100.2.103 -u "$subject" -o message-content-type=html -o message-charset=utf8 -m "$body" 2>>/tmp/stderr2.log
赋于执行权限:chmod +x /usr/lib/zabbix/alertscripts/send_mail.sh
四、配置自定义脚本媒介
管理-->报警媒介类型-->建立媒体类型,输入名称,选择类型为脚本,输入脚本名称,添加便可。
五、使用自定义脚本媒介
管理-->用户-->选择用户-->报警媒介-->添加
选择类型为自定义的sendEmail,输入收件人,添加便可。
添加了报警媒介,更新完成。
六、配置动做
同Email配置,只是在配置操做时,选择发送到sendEmail便可。
11、拓扑图
添加拓扑图:
监测中-->拓扑图-->Local network-->编辑拓扑图-->(图标)添加,点击新增图标进行编辑,输入标签,选择主机和图标,应用。
应用后,点击更新,完成拓扑图编辑。
点击右上角的星号,添加到经常使用。在仪表板显示,便于从仪表盘查看。