Zabbix监控平台-----深入理解zabbix

一,Zabbix Web操作深入

(1)创建一个模版,所有的功能几乎都是在模版中定义的

点进新创建的模版查看,模版里几乎可以设定我们需要的所有功能

(2)在模版里创建应用集,应用集的作用就是将众多的监控项进行一个分类,方便我们的管理

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

(4)监控项里的键值我们到底要如何写?我们需要学会照葫芦画瓢,选择一个系统模版Template OS Linux查看

(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 ===>表示现在获取的值如果和之前的不同就告警

例如:

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

(1)创建一个触发器

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

(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

解释:

如果当前获取的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

3.1.2 sendmail命令使用说明

命令/参数 内容 解释说明
/usr/local/bin/sendEmail 命令主程序
-f [email protected] 发件人邮箱
-t [email protected] 收件人邮箱
-s smtp.163.com 发件人邮箱的smtp服务器
-u "我是邮件主题" 邮件的标题
-o message-content-type=html 邮件内容的格式,html表示它是html格式
-o message-charset=utf8 邮件内容编码
-xu [email protected] 发件人邮箱的用户名
-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}故障!

#内容

告警主机:&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}

(2)样例测试

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

4.3.2 测试脚本

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

4.3.4 测试自定义的键值

再在前台自定义一个监控项和触发器

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

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

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

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

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

5.1 Agentd的配置调整

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

ServerActive=10.1.1.158

Hostname=10.1.1.158

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客户端(主动式)”。
  • 这样,只需要简单的几步,就完成了主动模式的切换,调整之后服务器不卡了,图层不裂了,进程也少了。

原文地址:https://www.cnblogs.com/wsnbba/p/10140943.html

时间: 2024-10-03 22:08:54

Zabbix监控平台-----深入理解zabbix的相关文章

提取zabbix监控平台单台服务器图形并发邮件python实现

需求:希望每天邮件发出当天某台服务器的监控状态,如果某天都登陆zabbix截图很麻烦,而且并不能保证每天都准点操作,于是写了一段脚本实现自动抓取图片,并组装成html,通过定时邮件发送,实现日报自动化. 一.效果图: 二.代码: #!/usr/bin/env python # -*- coding: utf-8 -*- import MySQLdb import datetime import cookielib, urllib2,urllib import smtplib from email

zabbix监控平台汉化

前一段时间应公司的需要,搭建了zabbix监控平台,安装zatree插件,安装和配置过程相对nagios简化了许多.但是在图形化方面还存在较大的察觉,有一种生硬的感觉. 平台搭建好了得给上司看看,不然还以为天天拿工资没有干活.上司看完了之后还比较满意,就是对全英文体验不是很好,不好怎么样,只有汉化了. 在网上也查阅了不少文章,都是各说各的,简单的配置也被说的摸不着头脑.it行业就是这样,当你明白的时候感觉很难,很高大上,等你走进来后,会发现,其实是自己吓唬自己. 这里现将zabbix的汉化过程,

分布式zabbix监控平台汉化,中文乱码问题

zabbix监控软件一直对中文的支持较弱,zabbix汉化之后经常会发生发生中文字体乱码的情况.关于zabbix汉化方法可参考文章( zabbix监控平台汉化 http://koala003.blog.51cto.com/9996246/1683687) 这是由于zabbix对web端没有中文库支持较弱的缘故,所以我们需要做的是添加专业的中文字体库: 1. 添加中文字库 我们可以在本地的电脑上下载,也可以去网上下载,建议使用较为常用的中文字体库 本地中文字体库路径: C:\Windows\Fon

zabbix监控平台的搭建--安装zabbix

zabbix监控平台之--zabbix安装篇 1.安装依赖包 yum -y install gcc gcc-c++ autoconf httpdphp mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysqlphp-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmathmysql-connector-odbc mysql-devel l

Linux监控平台、安装zabbix

1.Linux监控平台 2. zabbix监控 3.zabbix的安装下载:wget -c https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm安装rpm包:rpm -ivh zabbix-release-3.4-2.el7.noarch.rpm然后,用yum安装:yum install -y zabbix-agent zabbix-get zabbix-server-mysql

Zabbix监控平台(三)生产环境案例

Zabbix监控平台(三)生产环境案例 一,Zabbix生产环境监测案例概述 1.1 项目规划 1.2 SNMP监控流程 1.3 IPMI 1.4 JMX(使用Zabbix Java Gateway代理) 1.5 实战监控Nginx,Apache,MySQL,PHP-fpm 1.6 Zabbix的Web监测 二,Zabbix监控MySQL数据库操作实战 2.1 编写监控脚本 2.2 在zabbix-agent端创建自定义键值配置文件 2.3 在zabbix-server端测试键值 2.4 在za

linux监控平台介绍、zabbix监控介绍、安装zabbix

linux监控平台介绍 常见开源监控软件 cacti.nagios.zabbix.smokeping.open-falcon 等等. nagios和zabbix流行度很高. cacti.smokeping 偏向于监控基础的东西. cacti可以监控网络设备,它的图形表现得非常好,非常漂亮. IDC 机房比较喜欢用cacti.smokeping,因为适合监控网络设备. cacti.nagios.zabbix 服务端监控中心,需要php环境支持,其中zabbix和cacti都需要mysql作为数据存

Linux监控平台介绍、zabbix监控介绍、安装zabbix、忘记Admin密码如何做

19.1 Linux监控平台介绍 cacti.nagios.zabbix.smokeping.open-falcon等等 cacti.smokeping偏向基础监控,成图非常漂亮 cacti.nagios.zabbix服务端监控中心,需要PHP环境支持,其中zabbix和cacti都需要mysql作为数据存储,nagios不用存储历史数据,注重服务或者监控项的状态,zabbix会获取服务或者监控项目的数据,会把数据记录到数据库里,从而可以成图 open-falcon为小米公司开发,开源后受到诸多

Linux监控平台(zabbix监控介绍,安装zabbix,解决忘记admin密码)

linux监控平台介绍 常见开源监控软件:cacti,nagios,zabbix,smokeping,open-falcon等等 cacti,smokeping偏向于基础监控,成图非常漂亮 cacti,nagios,zabbix服务端监控中心,需要php环境支持,其中zabbix和cacti需要MySQL作为数据储存, agios不用存储历史数据,他注重服务或监控项的状态 zabbix会获取服务或者监控项目的数据,会把数据记录到数据库中,从而可以成图 open-falcon是小米公司开发的,开源