服务篇十四---zabbix监控服务

来源:互联网 发布:剑网三秀太捏脸数据 编辑:程序博客网 时间:2024/06/07 15:13

一、server端配置

LogFile=/tmp/zabbix_server.log    #默认即可
PidFile=/tmp/zabbix_server.pid    #默认即可
DBHost=localhost       #默认即可
DBName=zabbix        #在数据库中创建的,默认即可
DBUser=zabbix      #在数据库中创建的,默认即可
DBPassword=zabbix     #在数据库中创建的,默认即可

以上基本都是默认的,此外,监听端口为10051等也是默认的;即基本不用修改server端

二、agent端配置

LogFile=/tmp/zabbix_agentd.log    #默认即可
Server=172.16.2.11     #这里配置的IP为zabbix-server端的IP   即为被动模式下,由服务端主动请求AGENT,去获取所采集到的监控数据
ServerActive=127.0.0.1   #这里配置的IP为zabbix-server端的IP   即主动模式下,AGENT端(即采集客户端)将所采集的结果,主动提交给服务端服务器

说明:这里若不修改ServerActive(即默认为127.0.0.1),则意思是虽然开启了主动监控,但是没有配置远程server端的IP,所以主动监控就无法实现;也即是这里采用的即为被动监控;

Hostname=Zabbix server   #这里不需要设置,默认即可
UnsafeUserParameters=0  #为0意思是不开启用户自定义监控项,为1是开启自定义监控项

修改配置之后重启zabbix_agentd,则zabbix_agentd监控被动模式监控开启;

PS1:zabbix_agentd的自定义监控说明,在配置文件中

UserParameter=         #这里是开启用户自定义监控项后,可以定义监控项的名称,格式为UserParameter=<key>,<shellcommand>,一个例子如下:

UserParameter=memory_userd, free -m|grep Mem|awk '{print$3}',这里的监控key值为memory_userd,Shell命令或脚本为free -m|grep Mem|awk '{print $3}',然后再web界面找到这个agent所在的主机,添加item

PS2:zabbix在server端的测试命令

export PATH=$PATH:/usr/local/zabbix/bin   ##称为环境变量

zabbix_get -s 172.16.2.3 -p 10050 -k 'dubbo.ping[mobile]'   ##测试命令

三、web界面配置

1、添加一个主机

(1)主机名称:填写主机名称          ##这里不必和agent.conf中的hostname必须一致(大多数博客没有搞清楚这里,说必须一致),只要下面的ip一致就可以了;

(2)agent代理程序的借口:填写入agent端所在主机的IP(后面的端口为默认即可)

(3)添加完主机后,再添加链接的模板;

其他项可根据实际填写,或者不填取默认值;也可直接克隆主机(较为方便);

2、添加一个监控项

对监控项的理解:就是从主机获取到的所有数据,通常称为item,构成方式为“key+参数”;例如,监控项中需要获取cpu信息,则需要一个对应的监控key:system.cpu.load。一般情况下key要与参数结合起来使用,例如获取5分钟的负载情况:system.cpu.load[avg5],即两者合起来称之为“键值”。

(1)名称:监控项的名称,可以自己来自定义。可以使用如下的宏变量,$1, $2…$9,这9个参数对应item key的参数位置。例如: Free disk space on $1,如果item key为“vfs.fs.size[/,free]”,那么对应的名称会变成”Free disk space on /“,$1对应了第一个参数”/“

(2)类型:一般默认为agent客户端,不同类型对应的key不同

(3)键值:监控item的key表达式,点击可选择系统自带的key,用户也可以自定义key

PS:只有系统自带的key,才可以不用在agent端添加userParamater,否则需要添加自定义的参数;

(4)主机接口:默认为本机( 在哪个主机上添加就是哪个主机的IP和端口)

(5)信息类型:获取到的信息类型,有数字、浮点数、字符、文本、日志等,默认为数字,根据监控项返回的信息来选择

(6)数据类型:获取到的信息类型若为整数,这里选择整数的类型,默认为10进制

(7)单位:默认情况下,若返回的信息类为数字超过1000,则会处以1000来处理,如的单位为bytes时,返回11200时会处理为11.2kbytes

(8)自定义倍数:

(9)数据更新间隔时间:默认多久刷新一次数据

(10)自定义时间间隔:可以自定义哪段时间内多久进行刷新数据,可知不能用在主动方式的监控项;

(11)查看值:值的映射,可以定义返回值映射为一段可理解的文字,例如0代表宕机,1代表正常等;可以自己创建值映射;

(12)应用集:属于哪个应用集合;

3、item中的key和用户自定义参数userParameter的详细说明

(1)对key的说明

key是监控项的载体,用来承载这个监控项的数值,由key和参数组成,格式为:key[parameters],例如vfs.fs.size[/,pfree];key有不同的类型,对于zabbix_agent类型的key,需要大概了解一下其功能和参数含义。

(2)对触发器的说明

触发器其实就是一个表达式,用来表达一个key的临界值(正常与否的临界)。在添加触发器时,主要是添加触发器的表达式和触发结果的级别(严重、一般等),表达式的格式为:{<server>:<key>.<function>(<parameter>)}<operator><constant>,即{主机:key.函数(参数)}<表达式>常数,例如{dubbo1:vfs.fs.size[/,pfree].last(0)}<20。可见,对于触发器表达式来讲,需要了解一下一些常用的函数;

一般的,表达式里的server用的是“模板名称”,例如{Template OS Linux:system.hostname.diff(0)}>0,此处的Template OS Linux即为模板名称(非“模板可见名称”),system.hostname即为key,diff(0)即为函数,>0即为表达式。可知,触发器是一个组合的表达式。

(3)对userParameter的说明
如果zabbix自带的key不够,则需要自定义key来实现对特定对象(服务状态等)的监控,这里需要再agent端的配置文件中开启用户自定义参数,且定义好key及key的值,如下
#开启用户自定义参数
UnsafeUserParameters=1
#定义用户自定义的参数项
UserParameter=mysql.version,/mysql/3306/app/mysql/bin/mysql -V
UserParameter=mysql.ping,/mysql/3306/app/mysql/bin/mysqladmin --defaults-file=/home/zabbix/.my.cnf -S /mysql/3306/tmp/mysql.sock ping | grep -c alive
UserParameter=mysql.status[*],/home/zabbix/checkmysql_status.sh $1
UserParameter=mysql.slavestatus,/home/zabbix/mysql_slave.sh
以mysql.slavestatus为例,进行说明:
-->首先需要再指定的目录下创建监控用的脚本/home/zabbix/mysql_slave.sh,然后定义了mysql.slavestatus这个key,用来接受这个脚本执行结果的值;
-->然后需要在web端添加一个监控项,名称可以为mysql_slave_status,在监控项中引用这里定义的key;
-->若要触发报警,则再创建一个名称为“mysql主从复制不同步”的触发器,表达式为{mysql2:mysql.slavestatus.prev()}<>2,且定义级别为“警告”;
4、模板、action和报警媒介
(1)模板
可以给一个主机创建很多监控项和触发器,如果机器很多,则自定义的模板就派上用场了,因为给一个主机可以直接链接一个模板来解决。可见,模板是一个集合,是一个包含很多监控项和触发器的集合,此外,模板还可以链接其他模板,这样子就是一个模板可以集成很多个不同地方的监控项和触发器,实现通用。
(2)action
action即什么条件下进行报警,一般的设定条件为“维护状态为非维护状态”和“触发器=问题”,然后配置发送的报警内容及“操作”(操作即是定义具体的发送对象、发送次数、发送媒介等);报警内容分为“报警主题”和“报警内容”,如:
主题:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
内容:
告警主机:{HOSTNAME1}
告警ip:{IPADDRESS}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
事件ID:{EVENT.ID}
PS:这里可以看到引用了很多zabbix内置的宏变量,而宏变量和数字(1,2等)合起来使用,则表示该宏变量在触发器表达式中出现的位置,如HOSTNAME1;
(3)报警媒介
配置报警媒介,可以定义为weixin或者电子邮件,都需要在server端的建立目录alertscripts/,在其中新建一个mail.sh或者weixin.sh,然后进行测试是否可用,网上一般均有教程;那里的参数是什么意思?{ALERT.SENDTO},{ALERT.SUBJECT},{ALERT.MESSAGE},应该也是宏变量,是脚本中引用的参数;
PS:添加用户那里,因为weixin报警时走的转发,所以只配置一个人即可,其他人则是通过关注企业号得到消息推送;若是邮件,则需要给每个人配置接收邮件的邮箱等信息;
4、其他
可以看到上述的报警内容引用了大写的英文字段,那即是宏变量;另外,还有图表、事件等,这些还需要再深入学习的。
四、zabbix监控tomcat实现
对tomcat的监控需要开启tomcat的jmx端监控,首先我们需要了解一下报警机制,zabbix_server安装时要配置zabbix_java, 然后在zabbx_java开启JavaGateway,端口为10052;Tomcat在catalina.sh中配置JMX, 且开启54321端口提供性能数据。数据获取:zabbix_java<-->JavaGateway:10052<-->Tomcat:12345,具体实现步骤如下
1、zabbix_server端
(1)编译安装zabbix server时需要加上--enable-java以支持jmx监控,若没有加,则重新编译安装,下面的编译安装,为加上了的编译命令
# ./configure --prefix=/usr/local/zabbix-3.0.0/  --enable-server  --enable-agent  --with-mysql  --with-net-snmp  --with-libcurl  --with-libxml2  --enable-java
(2)修改Java-gateway的配置文件并启动zabbix_java
配置文件路径为/data/zabbix/zabbix_java/sbin/zabbix_java/settings.sh,启用以下参数:
LISTEN_IP="0.0.0.0"       #监听地址LISTEN_PORT=10052      #监听端口START_POLLERS=5        # 开启的工作线程数(必须大于等于后面zabbix_server.conf文件的StartJavaPollers参数)
# /usr/local/zabbix-3.0.0/sbin/zabbix_java/startup.sh 
(3)配置zabbix_server.conf并重启zabbix_server,vim ./zabbix_server.conf,增加如下配置项
JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5
然后重启zabbix_server
2、tomcat客户端配置
(1)下载catalina-jmx-remote.jarwget  http://archive.apache.org/dist/tomcat/tomcat-8/v8.0.36/bin/extras/catalina-jmx-remote.jar  #我的tomcat版本是8.0.36(2)将下载好的文件存放到tomcat子目录目录lib录下mv catalina-jmx-remote.jar /usr/local/tomcat/apache-tomcat-7.0.53/lib/(3)修改启动脚本文件cd /usr/local/tomcat/apache-tomcat-7.0.53/binvim catalina.sh(4)在# ----- Execute The Requested Command -----------------下面添加如下内容:export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=54321 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.2.2.155" -----备注(x.x.x.x是客户端ip地址,即tomcat本身ip地址,我的内网IP为10.2.2.155)-----这里的Port是自己定义的port端口,可以自己定义,不要和tomcat主机上其他的端口冲突即可,这里设置为54321(5)重启tomcat
3、测试是否可以获取数据
在zabbix_server端进行测试,首先下载cmdline-jmxclient-0.10.3.jar这个包,命令行下测试为
java -jar cmdline-jmxclient-0.10.3.jar  - 10.2.2.155:54321  java.lang:type=Memory  NonHeapMemoryUsage
06/11/2015 15:49:30 +0800 org.archive.jmx.Client NonHeapMemoryUsage:committed: 26214400init: 2555904max: -1used: 25515648
有以上信息展示,说明配置没问题
4、在server的web界面上"配置-主机"中对监控的tomcat主机开启jmx接口,如下

5、添加模板
对于tomcat主机添加监控模板;
6、特别说明,对tomcat是否存活的监控,是使用jmx接口,通过对堆内存的监控来反映tomcat是否进行,这里因为是使用jmx接口,因此不需要对agent.conf进行修改
添加监控项:jmx["java.lang:type=Memory","HeapMemoryUsage.used"]
添加触发器:{CustomTomcat:jmx["java.lang:type=Memory","HeapMemoryUsage.used"].nodata(3m)}=1,若达到条件(堆内存最近3分钟都没有数据),则“本机tomcat已3分钟不可用”
五、对zabbix学习的一些心得
1、模板
模板中有的监控项,若是需要再zabbix端进行自定义参数但是又没有做这些自定义参数的,则该监控项在该模板中是“已启用”,但是某主机添加该模板后,列表中会出现“不支持的”;
2、触发器和监控项
都是可以自己去定义的,自己定义的监控项,在agent端一定要定义对应的参数;
3、触发器报警的条件
报警即发送消息,条件为“触发器表达式”满足,例如,若表达式中写的是=1,则值=1时即发送消息;若写的是<1,则值<1时即发送消息;
4、报警媒介心跳检测
可以每天检测该媒介是否正常(也即心跳检测),因此可以创建一个action条件
                                      “维护状态=非维护”&&“触发器 =zabbix server监控模板: zabbix3.2自我检测(date)
此处的“zabbix3.2自我检测”这个触发器中写明表达式“{Template App Zabbix Server:date.status.prev()}=1030”
因此在每天的10点半,只要满足条件,则发送消息给管理员,每天检测报警通道的心跳;
5、脚本
自定义参数中,key后面跟的可以是命令,也可以是脚本,这个脚本有很多种,包括检测nginx状态、mysql性能等很多,自己还不会写,要学习;





   







原创粉丝点击