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

Stella981
• 阅读 991

##一,Zabbix Web操作深入

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

(1)创建一个模版

我们所有的功能几乎都是在模版中定义的

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

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

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

模版里几乎可以设定我们需要的所有功能

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

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

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

应用集的作用就是将众多的监控项进行一个分类,方便我们的管理

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

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

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

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

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

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

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

我们选择一个系统模版Template OS Linux查看

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

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

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

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

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

自定义系统监控项的键值创建,请参考前一节的知识

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

(1)avg

参数:秒或#num 支持类型:float,int 作用:返回一段时间的平均值

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

(2)last

参数:秒或#num 支持值类型:float,int,str,text,log 作用:最近的值,如果为秒,则忽略,#num表示最近第N个值,请注意当前的#num和其他一些函数的#num的意思是不同的。

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

参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最大值。时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#)。从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法。 例如:max(#3)=0 返回3次值如果都是0则触发告警

(4)min

参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔的最小值。时间间隔作为第一个参数可以是秒或收集值的数目(前缀为#)。从Zabbix1.8.2开始,函数支持第二个可选参数time_shift,可以查看avg()函数获取它的使用方法。

(5)nodata

参数:秒 支持值类型:any 描述:当返回值为1表示指定的间隔(间隔不应小于30秒)没有接收到数据,0表示获取到了。 例:nodata(5m)=1 ===>5分钟之内获取不到数据就告警

(6)prev

参数:忽略 支持值类型:float,int,str,text,log 描述:返回之前的值,类似于last(#2)

(7)sum

参数:秒或#num 支持值类型:float,int 描述:返回指定时间间隔中收集到的值的总和,时间间隔作为第一个参数支持秒或收集值的数目(以#开始).从Zabbix1.8.2开始,本函数支持time_shift作为第二个参数。可以查看avg函数获取它的用法。

(8)change

参数:忽略 支持类型:float,int,str,text,log 作用:返回最近获得值与之前获得值的差值,对于字符串0表示相等,1表示不同 change(0)>n:忽略参数一般输入0,表示最近得到的值与上一个值的差值大于n

(9)diff

参数:忽略 支持值类型:float,init,str,text,log 作用:返回值为1,表示最近的值与之前的值不同,0为相同。 例如:diff(0)>0 ===>表示现在获取的值如果和之前的不同就告警

例如:

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

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

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

(1)创建一个触发器

我们之前已经创建了一个检测内存剩余大小的监控项,现在我们给这个监控项加一个触发器。当内存小于20M时,触发报警

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

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

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

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

(2)进行表达器测试

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

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

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

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

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

表达式测试成功后,我们创建完毕即可

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

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

监控项表达式说明 {aaaa:vm.memory.size[available].last()}<20M aaaa:模版名 vm.memory.size:zabbix监控端向被监控端发送的代号 .last()<20 :last()<===>last(0)<===>last(#1)

[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

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

(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

我们发现如果对方服务器IP能ping通,则返回值是1。反之不是1就有问题

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

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

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

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

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

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

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

到这里就创建完毕了,请同学们仔细体会这个过程。

##二,Zabbix常用模版与触发器功能详解

(1){Template App Zabbix Agent:agent.version.diff(0)}>0

解释: 如果当前获取的agent客户端的版本号大于前一次的不同,那么触发告警

(2){Template App Zabbix Agent:agent.ping.nodata(5m)}=1

解释: 如果ping客户端在5分钟内都没有数据,那么触发告警

(3){Template OS AIX:vm.memory.size[available].last(0)}<20M

解释: 如果最后一次获取的空闲内存大小得值小于20M,那么触发告警

(4){Template App SSH Service:net.tcp.service[ssh].max(#3)}=0

解释: 如果ssh远程连接连续获取的3次值的最大值都是0,那么触发告警

(5){Template ICMP Ping:icmppingloss.min(5m)}>20

解释: 如果连续5分钟里获取的最小值都大于20,那么触发告警

(6){Template ICMP Ping:icmppingsec.avg(5m)}>0.15

解释: 如果连续5分钟内的平均值大于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

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邮箱设置

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

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

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

测试邮件发送

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

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

####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

from=215379068@qq.com

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 215379068@qq.com "hello world" "新的一天"
Jan 19 18:20:32 localhost sendEmail[2478]: Email was sent successfully!

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

####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

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

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

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

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

####3.1.8 创建报警动作

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

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

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

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

步骤1-3也就是从1开始到3结束。一旦发生故障,就是执行sendmail.sh脚本发生报警邮件给zabbix用户。 假如故障持续了1个小时,它也只发送3次,第1-3次(即前3次)邮箱发送给zabbix用户,时间间隔为0秒。 如果改成1-0,0是表示不限制,无限发送。

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

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

####3.1.9 QQ邮件报警测试

给自定义监控项nginx.avtive创建一个触发器,如下

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

利用Web进行访问,增加活动连接数,触发报警

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

###3.2 微信报警平台

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

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

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

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

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

####3.2.2 编写微信平台报警脚本

编写脚本前,我们需要先记住3个关键的参数

(1)企业的CorpID

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

(2)企业的Secret

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

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

(3)部门ID号

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

然后我们就可以编写微信告警脚本了,如下:

[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

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

####3.2.4 创建微信报警媒介类型

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

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

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

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

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

####3.2.5 设定报警动作

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

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

####3.2.6 微信平台报警测试

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

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

###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

(2)样例测试

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

##四,用户参数User parameters

###4.1 概述

有时候当我们监控的项目在Zabbix预定义的key中没有定义时,这时候我们可以通过编写Zabbix的用户参数的方法来监控我们要求的项目item。形象一点说Zabbix代理端配置文件中的User parameters就相当于通过脚本获取要监控的值,然后把相关的脚本或者命令写入到配置文件中的User parameter中,然后Zabbix server读取配置文件中的返回值通过处理前端的方式返回给用户。

用户参数的语法

UserParameter=<key>,<command>

其中,Userparameter为关键字,key为用户自定义key名字可以随便起,为我们要运行的命令或者脚本。

一个简单的例子:

UserParameter=ping,echo 1

代理程序将会永远的返回1,当我们在服务器端添加item的key为ping的时候。

稍微复杂的例子:

UserParameter=mysql.ping,/usr/local/mysql/bin/mysqladmin ping | grep -c alive

  • 当我们执行mysqladmin -uroot ping命令的时候如果mysql存活要返回mysqld is alive,我们通过grep -c来计算mysqld is alive的个数,如果mysql存活着,则个数为1,如果不存活很明显mysqld is alive的个数为0,通过这种方法我们可以来判断mysql的存活状态。
  • 当我们在服务器端添加item的key为mysql.ping时候,对于Zabbix代理程序,如果mysql存活,则状态将返回1,否则,状态将返回0。

###4.2 让key接受参数

让key也接受参数的方法使item添加时更具备了灵活性,例如系统预定义key:vm.memory.size[],其中的mode模式就是用户要接受的参数,当我们填写为free时则返回的为内存的剩余大小,如果我们填入的为userd时这返回的是内存已经使用的大小。

相关语法:

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 让我们自定义一个可以传递参数的监控项

我们做一个可以根据条件获取内存数值大小的监控项mem_check 当我们键值为mem_check[free]时,获取剩余可用内存大小 当我们键值为mem_check[used]时,获取实际占用内存大小 当我们键值为mem_check时,获取总内存大小

####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主动模式与被动模式

默认情况下,zabbix server会直接去每个agent上抓取数据,这对于agent来说,是被动模式,也是默认的一种获取数据的方式,但是,当zabbix server监控主机数量过多的时候,由server端去抓取agent上的数据,zabbix server会出现严重的性能问题,主要表现如下:

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

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

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

###5.1 Agentd的配置调整

修改zabbix_agentd.conf配置文件,注意是打开如下参数:

ServerActive=192.168.0.220
Hostname=192.168.0.220
StartAgents=1

ServerActive是指定Agentd收集的数据往哪里发送,Hostname是必须要和zabbix web端添加主机时的主机名对应起来,这样zabbix server端接收到数据才能找到对应关系,这里为了兼容被动模式,没有把StartAgents设为0,如果一开始就是使用主动模式的话建议把StartAgents设为0,关闭被动模式。

###5.2 zabbix Server端配置调整

如果开启了agent端的主动发送数据模式,需要在zabbix Server端修改如下两个参数,保证性能。

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

###5.3 调整模版

  • 因此收集数据的模式发生了变化,因此需要把所有的监控项的类型由原来的“zabbix客户端”改成“zabbix客户端(主动式)”。
  • 这样,只需要简单的几步,就完成了主动模式的切换,调整之后服务器不卡了,图层不裂了,进程也少了。

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

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这