一,Zabbix Web操作深入
(1)创建一个模版,所有的功能几乎都是在模版中定义的
点进新创建的模版查看,模版里几乎可以设定我们需要的所有功能
(2)在模版里创建应用集,应用集的作用就是将众多的监控项进行一个分类,方便我们的管理
(3)在模版里创建一个zabbix自带的监控项
(4)监控项里的键值我们到底要如何写?我们需要学会照葫芦画瓢,选择一个系统模版Template OS Linux查看
(5)当然也可以自定义监控项的键值,但是并不推荐这样。因为,都是自己写太慢了。系统自带了很多键值自己要学会利用
1.2 Zabbix Web下触发器与表达式的编写方法
(1)avg
举例:
avg(5):最后5秒的平均值
avg(#5):表示最近5次得到值的平均值
avg(3600,86400):表示一天前的一个小时的平均值
如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,#n表示最近n次的值
(2)last
(3)max
(4)min
(5)nodata
(6)prev
(7)sum
(8)change
(9)diff
例如:
1.3 Zabbix Web创建触发器过程以及触发器与监控项对应关系
(1)创建一个触发器
(2)进行表达器测试
表达式测试成功后,我们创建完毕即可
(3)在服务端进行监控项数据获取测试
监控项表达式说明
{aaaa:vm.memory.size[available].last()}<20M
aaaa:模版名
vm.memory.size:zabbix监控端向被监控端发送的代号
.last()<20 :last()<===>last(0)<===>last(#1)
1.4 为了体会深刻,再创建一个监控项同时创建它的触发器
(1)快速创建一个Agent_ping监控项
(2)在监控端测试监控项的键值
我们发现如果对方服务器IP能ping通,则返回值是1。反之不是1就有问题
(3)创建监控项的告警触发器
到这里就创建完毕了
二,Zabbix常用模版与触发器功能详解
(1){Template App Zabbix Agent:agent.version.diff(0)}>0
(2){Template App Zabbix Agent:agent.ping.nodata(5m)}=1
(3){Template OS AIX:vm.memory.size[available].last(0)}<20M
(4){Template App SSH Service:net.tcp.service[ssh].max(#3)}=0
(5){Template ICMP Ping:icmppingloss.min(5m)}>20
(6){Template ICMP Ping:icmppingsec.avg(5m)}>0.15
三,Zabbix报警媒介类型设置和告警动作、频率设置
3.1 QQ邮件告警平台
3.1.1 安装sendmail
3.1.2 sendmail命令使用说明
/usr/local/bin/sendEmail | 无 | 命令主程序 |
-f | from@163.com | 发件人邮箱 |
-t | to@163.com | 收件人邮箱 |
-s | smtp.163.com | 发件人邮箱的smtp服务器 |
-u | "我是邮件主题" | 邮件的标题 |
-o | message-content-type=html | 邮件内容的格式,html表示它是html格式 |
-o | message-charset=utf8 | 邮件内容编码 |
-xu | from@163.com | 发件人邮箱的用户名 |
-xp | 123456 | 发件人邮箱密码(授权码) |
-m | "我是邮件内容" | 邮件的具体内容 |
3.1.3 调整QQ邮箱设置
测试邮件发送
3.1.4 编写QQ邮件平台报警脚本
3.1.5 脚本测试
3.1.6 修改zabbix_server.conf配置文件,将447行修改成如下所示
重启zabbix_server服务
3.1.7 创建报警媒介
3.1.8 创建报警动作
步骤1-3也就是从1开始到3结束。一旦发生故障,就是执行sendmail.sh脚本发生报警邮件给zabbix用户。
假如故障持续了1个小时,它也只发送3次,第1-3次(即前3次)邮箱发送给zabbix用户,时间间隔为0秒。
如果改成1-0,0是表示不限制,无限发送。
3.1.9 QQ邮件报警测试
给自定义监控项nginx.avtive创建一个触发器,如下
利用Web进行访问,增加活动连接数,触发报警
3.2自定义自动报警的内容
(1)自定义内容样例
#告警通知格式样例
#题目
A故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
#内容
告警主机: ;{HOSTNAME1}<br/>
告警时间: ;{EVENT.DATE} {EVENT.TIME}<br/>
告警等级: ;{TRIGGER.SEVERITY}<br/>
告警信息: ;{TRIGGER.NAME}<br/>
告警项目: ;{TRIGGER.KEY1}<br/>
问题详情: ;{ITEM.NAME} {ITEM.VALUE}<br/>
当前状态: ;{TRIGGER.STATUS} {ITEM.VALUE1}<br/>
事件ID: ;{EVENT.ID}
(2)样例测试
四,用户参数User parameters
4.1 概述
用户参数的语法
UserParameter=<key>,<command>
一个简单的例子:
UserParameter=ping,echo 1
稍微复杂的例子:
UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin ping | grep -c alive
4.2 让key接受参数
相关语法:
UserParameter=key[*],command
#描述:
key:key的值在主机系统中必须是唯一的,其中*代表命令中接受的参数
command:客户端系统中可执行的命令
#举例:
UserParameter=ping[*],echo $1
ping[0]:此时0就是*,也就是传入参数是0,$1也就是0,因此表达式将一直返回‘0’
ping[aaa]:此时aaa就是*,也就是传入参数是aaa,$1也就是aaa,因此表达式将一直返回‘aaa’
4.3 让我们自定义一个可以传递参数的监控项
4.3.1 我们先制作一个获取数据的脚本
4.3.2 测试脚本
4.3.3 后台自定义一个监控项的键值
4.3.4 测试自定义的键值
再在前台自定义一个监控项和触发器
五,Agentd主动模式与被动模式
- :Web操作很卡,容易出现502
- :图层断裂
- :开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题
所以,下面主要往两个优化方向考虑:
- :用Proxy或者Node模式做分布式监控
- :调整Agentd为主动模式
5.1 Agentd的配置调整
ServerActive=10.1.1.158
Hostname=10.1.1.158
StartAgents=1
5.2 zabbix Server端配置调整
StartPollers=10 #把这个zabbix Server主动收集数据进程减少一些。
StartTrappers=200 #把这个负责处理Agentd推送过来的数据的进程开大一些。