史上最详细的Zabbix Agent介绍

一、简介

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。

zabbix主要由2部分构成,zabbix server与可选组件zabbix agent。zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。

Zabbix整体架构示意图

 

一、Zabbix agent配置参数详解

AllowRoot

默认值:0是否允许使用root身份运行zabbix,如果值为0,并且是在root环境下,zabbix会尝试使用zabbix用户运行,如果不存在会告知zabbix用户不存在。0-不允许1-

BufferSend

取值范围:1-3600默认值:5数据存储在buffer中最长多少秒

BufferSize

取值范围:2-65535默认值:100buffer最大值,如果buffer满了,zabbix将会将检索到的数据发送给zabbixserver或者proxy

DebugLevel

取值范围:0-5默认值:3指定日志级别0-basicinformationaboutstartingandstoppingofZabbixprocesses1-critical级别2-error级别3-ug级别5-extendeddebugging(与级别4一样.只能使用runtimecontrol来设置.)

EnableRemoteCommands

默认值:0是否运行zabbixserver在此服务器上执行远程命令0-禁止1-允许取值范围:0-255字符,如果当前值为定义,那么它的值默认为HostMetadataItem的值。这个选项在2.2.0之后加入,并且确保支付不能超过限制,以及字符串必须是UTF8,否则服务器无法启动

HostMetadata

功能同上,如果HostMetadata值未设置,这个配置才有效。支持使用UserParameters、alias、system.run[]

HostMetadataItem

默认值:HostnameItem配置的值主机名,必须唯一,区分大小写。Hostname必须和zabbix

Hostname

zabbix主动监控无法正常工作。为什么呢?因为agent拿着这个主机名去问server,我有配置主动监控项吗?server拿着这个主机名去配置里面查询,然后返回信息。支持字符:数字字母、’.’、’4个字符

HostnameItem

默认值:system.hostname设置主机名,只有当HostMetadata没设置,她才生效。不支持UserParameters、aliases,支持system.run[]

Include

包含自配置文件,不同的配置写到不同的文件中,然后include,配置文件会显得规范。例如:/absolute/path/to/config/files/*.conf.Zabbix2.4.0开始支持正则表达式。

ListenIP

默认值:0.0.0.0监听IP地址,默认为所有接口,多个ip之间使用逗号分隔

ListenPort

取值范围:1024-32767默认值10050监听端口

LoadModule

加载模块文件,可以写多个格式:LoadModule=必须配置LoadModulePath

LoadModulePath

模块路径,绝对路径

LogFile

日志文件路径如果未配置,日志会记录到syslog中

LogFileSize

取值范围:0-1024默认值:1日志文件大小,单位为MB。0-关闭自动轮滚.备注:如果日志文件到达了最大值并且文件轮滚失败,那么老日志文件会被清空掉。

LogRemoteCommands

默认值:0记录原型执行的shell命令日志,级别为warrning0-disabled1-enabled

MaxLinesPerSecond

取值范围:1-1000默认值:100处理监控类型为log何eventlog日志时,agent每秒最大发送的行数。默认为100行

PidFile

默认值:/tmp/zabbix_agentd.pidPID文件名

RefreshActiveChecks

取值范围:60-3600默认值:120多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么60秒之后会重试一次

Server zabbix

server的ip地址,多个ip使用逗号分隔

ServerActive zabbix

主动监控server的ip地址,使用逗号分隔多IP,如果注释这个选项,那么当前服务器的主动监控就被禁用了

SourceIP

zabbix对外连接的出口IP地址

StartAgents

取值范围:0-100默认值:3zabbix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应端口,也就是说10050端口不会开启。

Timeout

默认值:1-30默认值:3超时时间,单位秒

UnsafeUserParameters

取值范围:0,1默认值:0允许所有字符的参数传递给用户定义的参数。

User

默认值:zabbix运行zabbix程序的用户,如果AllowRoot被禁用,才有效果

UserParameter

用户自定义key,格式:UserParameter=,例如:serParameter=system.test,who|wc-l

 

二、Zabbix Agent两大模式介绍

Zabbix-agent的工作模式可以分为:

主动模式(active):agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy

被动模式(passive):serveragent请求获取监控项的数据,agent返回数据。

(一)zabbix-agent的工作原理

1.主动模式工作原理

主动模式是指Zabbix-Agent将采集到的数据主动推送给Zabbix-Server,其行为是Zabbix-AgentZabbix-Server主动发起的数据连接过程,Zabbix-Server不必等待Zabbix-Agent的数据采集行为,Zabbix-Agent能够一次批量发送多条数据给Zabbix-Server,属于一对多的响应模式,对Zabbix-Server的性能开销较少,适合大规模环境使用。

2.被动模式工作原理

被动模式是指Zabbix-ServerZabbix-Agent请求数据,Zabbix-Agent被动接受数据请求后进行回应,属于一对一的响应模式。

比如有100个监控项,Zabbix-Server需要向Zabbix-Agent请求100次,同时,Zabbix-Agent在响应Zabbix-Server时,对监控项数据采集也需要消耗时间,此时,Zabbix-Server只能耗着时间安静地等待Zabbix-Agent

3.对比

相对于主动模式的高效,被动模式从时间开销和发送数据量上都处于劣势,对Zabbix-Server的性能开销较大,适合小规模环境使用。

4.主动模式和被动模式可以共存

主动模式和被动模式在同一个Zabbix-Agent上,是可以共存的,比如让一部分监控项处于被动模式,另一部分处于主动模式。

处于主动模式的监控项,由Zabbix-Agent周期性地采集数据传输给Zabbix-Server

处于被动模式的监控项,则由Zabbix-Server周期性地从Zabbix-Agent获取数据。

2.4. Zabbix_agentd.conf参数配置

Server=127.0.0.1

#被动模式连接的Zabbix-ServerIP地址。

 

ServerActive=127.0.0.1

#主动模式连接的Zabbix-ServerIP地址,开启此项参数,将会自动打开主动模式;将其注释掉,则会关闭主动模式

 

Hostname=Host-001

#在主动模式中,Hostname作为Zabbix-Server处理数据的唯一依据,要求HostnameZabbix-Server中具有唯一性。当有多个Zabbix-Agent的主机名配置相同时,会造成该主机名下的主动模式监控项数据存储错乱,因为在不同的时间周期内,其存储的是不同Zabbix-Agent的数据。

 

StartAgents=3 #Agent的进程个数,用于被动模式,如果大于0,则会监听10050端口。如果只需要主动模式,则可以将其设置为0,将被动模式关闭。

三、zabbix-agent的工作流程

(二)工作流程

1.被动模式的工作流程

Zabbix-Server打开一个TCP连接。

Zabbix-Server发送一个keyagent.ping的请求。

Zabbix-Agent接受这个请求,然后响应数据。

Zabbix-Server对接收到的数据进行处理。

Zabbix-Server对接收到的数据进行处理。

2.主动模式的工作流程

(1)Zabbix-Agent主动向Zabbix-Server发送请求的工作流程

在主动模式中,Zabbix-Agent在启动时就会向Zabbix-Server发送请求,以获取需要主动监控的监控项。这部分的运行流程总结如下:

Zabbix-AgentZabbix-Server建立一个TCP连接。

Zabbix-Agent请求需要检测的数据列表。

Zabbix-Server响应Zabbix-Agent,发送一个Item列表(Item keyDelay)。

Zabbix-Agent响应请求。

完成本次会话后关闭TCP连接。

Zabbix-Agent开始周期性地采集数据。

(2)Zabbix-Agent发送数据给Zabbix-Server的工作流程

Zabbix-Agent将监控项数据采集完成之后,会将数据发送给Zabbix-Server。这部分的运行流程总结如下:

Zabbix-AgentZabbix-Server建立一个TCP连接。

Zabbix-Agent将数据发送给Zabbix-Server,其发送周期等于Item的更新周期。

Zabbix-Server处理Zabbix-Agent发送的数据。

关闭TCP连接。

三、Zabbix agent配置自定义键

zabbix在模板中预定义了一些key,但通常情况,并不能满足我们的需求。幸运的是zabbix提供了自定义key的方法,因此我们可以灵活的监控各种我们想要监控的数据。

vim /etc/zabbix/zabbix_agentd.conf # 进入到配置文件

第一种:

1.找到 UnsafeUserParameters=0 改为  UnsafeUserParameters=1

2.找到 UserParameter=  在下面直接添加用户参数

UserParameter=<key>,<shell command>

key:服务器添加监控时需用到的key

shell command:监控脚本的绝对路径

例:UserParameter=tomcat,/etc/zabbix/alertscripts/tomcat.sh         (注意用逗号隔开)

如果要添加多个监控项,就依次写多个UserParameter

第二种:

1.修改自定义key路径

找到  Include=/usr/local/etc/zabbix_agentd.conf.d/  # 在下面添加读取用户参数的文件路径

改为  Include=/etc/zabbix/zabbix_agentd.d/*.conf  # 也可以定义其他路径

2.创建配置文件

vim /etcl/zabbix/zabbix_agentd.d/userparameter.conf

添加想要监控的项,比如UserParameter=tomcat,/etc/zabbix/alertscripts/java.sh

多个自定义监控项都可写在这个文件里

配置完成后重启zabbix agent服务

更多zabbix技术问题,可以关注乐维社区在线答疑

posted @ 2024-11-22 10:31  乐维_lwops  阅读(37)  评论(0编辑  收藏  举报