zabbix进程组成结构,默认情况下zabbix包含5个程序:zabbix_agentd、zabbix_get、zabbix_proxy、zabbix_sender、zabbix_server,另外一个zabbix_java_gateway是可选,这个需要另外安装。下面来分别介绍下他们各自的作用。

进程介绍

zabbix_agentd

    客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等

zabbix_get

    zabbix工具,单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查。

zabbix_sender

    zabbix工具,用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据。

zabbix_server

    zabbix服务端守护进程。zabbix_agentd、zabbix_get、zabbix_sender、zabbix_proxy、zabbix_java_gateway的数据最终都是提交到server

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

zabbix_proxy

    zabbix代理守护进程。功能类似server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交/被提交到server里。为什么要用代理?代理是做什么的?卖个关子,请继续关注运维生存时间zabbix教程系列。

zabbix_java_gateway

    zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。

zabbix_agentd.conf配置文件详解

#PID文件路径

PidFile=/tmp/zabbix_agentd.pid

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

LogFile=/tmp/zabbix_agentd.log

#日志文件大小,单位为MB,如果日志文件到达了最大值并且文件轮滚失败,那么老日志文件会被清空掉,0 - 关闭自动轮滚.

LogFileSize=1   

#指定日志级别

DebugLevel=3

0 - basic information about starting and stopping of Zabbix processes

1 - critical级别

2 - error级别

3 - warnings级别

4 - debug级别

5 - extended debugging (与级别4一样. 只能使用runtime control 来设置.)

#zabbix对外连接的出口IP地址

SourceIP=

#是否运行zabbix server在此服务器上执行远程命令

EnableRemoteCommands=1

#记录原型执行的shell命令日志,级别为warrning

LogRemoteCommands=0

默认值:0

0 - disabled

1 - enabled

#zabbix_server服务器ip

Server=

#zabbix_agent监听端口,默认值10050

ListenPort=10050

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

ListenIP=

#zabbix启动之后开启被动监控的进程数量,如果设置为0,那么zabbix被动监控被禁用,并且不会监听相应端口,也就是说10050端口不会开启。

StartAgents=3

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

ServerActive=

#主机名,必须唯一,区分大小写。Hostname必须和zabbix web上配置的一样,否则zabbix主动监控无法正常工作。因为agent拿着这个主机名去问server,server拿着这个主机名去配置里面查询,然后返回信息。

支持字符:数字字母、'.'、' '、 '_'、 '-',不超过64个字符

Hostname=

#设置主机名,只有当HostMetadata没设置,它才生效。不支持UserParameters 、aliases,支持system.run[]

HostnameItem=system.hostname

#仅用于主机自动注册功能,如果当前值为定义,那么它的值默认为HostMetadataItem的值。这个选项在2.2.0之后加入,并且确保支付不能超过限制,以及字符串必须是UTF8,否则服务器无法启动

HostMetadata=

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

HostMetadataItem

#多久时间(秒)刷新一次主动监控配置信息,如果刷新失败,那么60秒之后会重试一次

RefreshActiveChecks=120

取值范围:60-3600

#数据存储在buffer中最长多少秒

BufferSend=5

#buffer最大值,如果buffer满了,zabbix将会将检索到的数据发送给zabbix server或者proxy

BufferSize=100

#处理监控类型为log和eventlog日志时,agent每秒最大发送的行数。默认为100行

MaxLinesPerSecond=100

#key的别名,别名不能重复,但是可以有多个alias对应同一个key

Alias

#超时时间

Timeout=3

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

AllowRoot=0

0 - 不允许

1 - 允许

#包含自配置文件,不同的配置写到不同的文件中,然后include,配置文件会显得规范。

Include=

#允许所有字符的参数传递给用户定义的参数。

UnsafeUserParameters=0

#用户自定义key,格式: UserParameter=,

例如:serParameter=system.test,who|wc -l

UserParameter=

#模块路径,绝对路径

LoadModulePath=${libdir}/modules

#加载模块文件,可以写多个

LoadModule=