https://www.cnblogs.com/chensiqiqi/p/9162986.html

一,Zabbix Web操作深入

1.1 Zabbix Web下的主机和模版以及监控项的添加方式

(1)创建一个模版

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

我们再点进新创建的模版查看

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(2)在模版里创建应用集

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(3)在模版里创建一个zabbix自带的监控项

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(4)监控项里的键值我们到底要如何写?我们需要学会照葫芦画瓢

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(5)当然我们也可以自定义监控项的键值,但是并不推荐这样。因为,都是自己写太慢了。系统自带了很多键值我们要学会利用

1.2 Zabbix Web下触发器与表达式的编写方法

(1)avg

举例:
avg(5):最后5秒的平均值
avg(#5):表示最近5次得到值的平均值
avg(3600,86400):表示一天前的一个小时的平均值
如果仅有一个参数,表示指定时间的平均值,从现在开始算起,如果有第二个参数,表示漂移,从第二个参数前开始算时间,#n表示最近n次的值

(2)last

last(0)等价于last(#1)
last(#3)表示最近第3个值(并不是最近的三个值)
本函数也支持第二个参数time_shift,例如last(0,86400)返回一天前的最近的值。
如果在history中同一秒中有多个值存在看,Zabbix不保证值的精确顺序#num从Zabbix1.6.2起开始支持,timeshift从1.8.2起开始支持,可以查询avg()函数获取它的使用方法

(3)max

(4)min

(5)nodata

(6)prev

(7)sum

(8)change

(9)diff

例如:

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

1.3 Zabbix Web创建触发器过程以及触发器与监控项对应关系

(1)创建一个触发器

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(2)进行表达器测试

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(3)在服务端进行监控项数据获取测试

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

[root@localhost ~]# zabbix_get -s 192.168.0.220 -k "vm.memory.size"
1028517888 #获取对应IP的全部内存总量
[root@localhost ~]# zabbix_get -s 192.168.0.220 -k "vm.memory.size[available]"
794337280 #获取对应IP的剩余内存总量

1.4 为了让同学们体会深刻,我们再创建一个监控项同时创建它的触发器

(1)快速创建一个Agent_ping监控项

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(2)在监控端测试监控项的键值

[root@localhost ~]# zabbix_get -s 192.168.0.220 -k "agent.ping"
1
[root@localhost ~]# zabbix_get -s 192.168.0.221 -k "agent.ping"
1
[root@localhost ~]# zabbix_get -s 192.168.0.222 -k "agent.ping"
zabbix_get [11715]: Get value error: cannot connect to [[192.168.0.222]:10050]: [113] No route to host

(3)创建监控项的告警触发器

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

二,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

[root@localhost ~]# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[root@localhost ~]# yum -y install perl-Net-SSLeay perl-IO-Socket-SSL
[root@localhost ~]# tar xf sendEmail-v1.56.tar.gz -C /usr/local/
[root@localhost ~]# cd /usr/local/sendEmail-v1.56/
[root@localhost sendEmail-v1.56]# /bin/cp -ra sendEmail /usr/local/bin/
[root@localhost sendEmail-v1.56]# chmod +x /usr/local/bin/sendEmail
[root@localhost sendEmail-v1.56]# which sendmail
/usr/sbin/sendmail

3.1.2 sendmail命令使用说明

/usr/local/bin/sendEmail命令主程序
-f[email protected]发件人邮箱
-t[email protected]收件人邮箱
-ssmtp.163.com发件人邮箱的smtp服务器
-u"我是邮件主题"邮件的标题
-omessage-content-type=html邮件内容的格式,html表示它是html格式
-omessage-charset=utf8邮件内容编码
-xu[email protected]发件人邮箱的用户名
-xp123456发件人邮箱密码(授权码)
-m"我是邮件内容"邮件的具体内容

3.1.3 调整QQ邮箱设置

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

测试邮件发送

[root@localhost sendEmail-v1.56]# sendEmail -f [email protected] -t [email protected] -u "zabbix_server" -s smtp.qq.com -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp rtqnwthiqajdbihd -m "邮件发送成功"
Jan 19 18:09:10 localhost sendEmail[2403]: Email was sent successfully!

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.1.4 编写QQ邮件平台报警脚本

[root@localhost alertscripts]# pwd
/usr/local/zabbix/share/zabbix/alertscripts
[root@localhost alertscripts]# cat sendmail.sh
#!/bin/bash
# author:Mr.chen to=$1 subject=$2 body=$3 [email protected] smtp=smtp.qq.com passwd=rtqnwthiqajdbihd /usr/local/bin/sendEmail -f "$from" -t "$to" -s "$smtp" -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu "$from" -xp "$passwd" -m "$body"
[root@localhost alertscripts]# chmod +x sendmail.sh
[root@localhost alertscripts]# chown zabbix.zabbix sendmail.sh

3.1.5 脚本测试

[root@localhost alertscripts]# sh sendmail.sh [email protected] "hello world" "新的一天"
Jan 19 18:20:32 localhost sendEmail[2478]: Email was sent successfully!

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.1.6 修改zabbix_server.conf配置文件

[root@localhost alertscripts]# cat -n /usr/local/zabbix/etc/zabbix_server.conf | grep "447"
447 # AlertScriptsPath=${datadir}/zabbix/alertscripts #将上述内容修改成如下所示
[root@localhost alertscripts]# cat -n /usr/local/zabbix/etc/zabbix_server.conf | grep "447"
447 AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts #重启zabbix_server服务
[root@localhost zabbix]# /etc/init.d/zabbix_server restart
Shutting down zabbix_server: [ OK ]
Starting zabbix_server: [ OK ]

3.1.7 创建报警媒介

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.1.8 创建报警动作

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.1.9 QQ邮件报警测试

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.2 微信报警平台

3.2.1 注册微信报警平台并绑定微信号

企业号注册连接:https://qy.weixin.qq.com/cgi-bin/loginpage

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.2.2 编写微信平台报警脚本

(1)企业的CorpID

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(2)企业的Secret

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(3)部门ID号

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

[root@Zabbix_Server alertscripts]# cat weixin.sh
#!/bin/bash
# author:Mr.chen CropID="########" #这里填写我们的应用的CropID Secret="#######" #这里是应用的Secret #下面的GURL和PURL地址无需改变,不用做任何变动
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" Gtoken=`/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}'` PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken" function body() {
local int AppID=1000002 #这里是创建的应用ID
local UserID=$1 #接收消息用户,系统传参
local PartyID=1 #接收消息的部门ID
local Msg=`echo "$@" | cut -d" " -f3-`
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'" $AppID "\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
} /usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

3.2.3 脚本测试

[root@Zabbix_Server alertscripts]# chmod +x weixin.sh
[root@Zabbix_Server alertscripts]# chown zabbix.zabbix weixin.sh
[root@Zabbix_Server alertscripts]# sh weixin.sh yinsendemogui "题目" "报警内容"
{"errcode":0,"errmsg":"ok","invaliduser":"#######"}

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.2.4 创建微信报警媒介类型

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.2.5 设定报警动作

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.2.6 微信平台报警测试

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

3.3 自定义自动报警的内容

(1)自定义内容样例

#告警通知格式样例
#题目
A故障:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:{TRIGGER.NAME}故障!
#内容
告警主机:&nbsp;{HOSTNAME1}<br/>
告警时间:&nbsp;{EVENT.DATE} {EVENT.TIME}<br/>
告警等级:&nbsp;{TRIGGER.SEVERITY}<br/>
告警信息:&nbsp;{TRIGGER.NAME}<br/>
告警项目:&nbsp;{TRIGGER.KEY1}<br/>
问题详情:&nbsp;{ITEM.NAME}&nbsp{ITEM.VALUE}<br/>
当前状态:&nbsp;{TRIGGER.STATUS}&nbsp{ITEM.VALUE1}<br/>
事件ID:&nbsp;{EVENT.ID}

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

(2)样例测试

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

四,用户参数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 我们先制作一个获取数据的脚本

[root@Zabbix_Server ~]# mkdir -p /server/scripts
[root@Zabbix_Server ~]# cd /server/scripts/
[root@Zabbix_Server scripts]# cat mem_check
#!/bin/bash
# author:Mr.chen case $1 in
free)
echo "`free | awk 'NR==3{print $4}'`"
;;
used)
echo "`free | awk 'NR==3{print $3}'`"
;;
*)
echo "`free | awk 'NR==2{print $2}'`"
;;
esac

4.3.2 测试脚本

[root@Zabbix_Server scripts]# chmod +x mem_check
[root@Zabbix_Server scripts]# chown zabbix.zabbix mem_check
[root@Zabbix_Server scripts]# sh mem_check
1004412
[root@Zabbix_Server scripts]# sh mem_check free
782492
[root@Zabbix_Server scripts]# sh mem_check used
221912

4.3.3 后台自定义一个监控项的键值

[root@Zabbix_Server ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@Zabbix_Server zabbix_agentd.d]# cat mem_check.conf
UserParameter=mem.check[*],/server/scripts/mem_check $1

4.3.4 测试自定义的键值

#重启zabbix-agent客户端
[root@Zabbix_Server zabbix_agentd.d]# /etc/init.d/zabbix-agent restart
Shutting down Zabbix agent: [ OK ]
Starting Zabbix agent: [ OK ]
[root@Zabbix_Server zabbix_agentd.d]# zabbix_get -s 192.168.0.220 -p 10050 -k "mem.check"
1004412
[root@Zabbix_Server zabbix_agentd.d]# zabbix_get -s 192.168.0.220 -p 10050 -k "mem.check[free]"
782676
[root@Zabbix_Server zabbix_agentd.d]# zabbix_get -s 192.168.0.220 -p 10050 -k "mem.check[used]"
221744

4.3.5 前台自定义一个监控项及触发器

五,Agentd主动模式与被动模式

  • [x] :Web操作很卡,容易出现502
  • [x] :图层断裂
  • [x] :开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题

所以,下面主要往两个优化方向考虑:

  • [x] :用Proxy或者Node模式做分布式监控
  • [x] :调整Agentd为主动模式

5.1 Agentd的配置调整

ServerActive=192.168.0.220
Hostname=192.168.0.220
StartAgents=1

5.2 zabbix Server端配置调整

StartPollers=10     #把这个zabbix Server主动收集数据进程减少一些。
StartTrappers=200 #把这个负责处理Agentd推送过来的数据的进程开大一些。

5.3 调整模版

Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix-LMLPHP

04-21 19:50