4 Proxy
概述
Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。
部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有proxy 采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。
Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。
Zabbix proxy 需要使用独立的数据库。
值得注意的是,Zabbix proxy 支持 SQLite、MySQL和PostgreSQL 作为数据库。使用 Oracle 或 DB2 需要您承担一定的风险,例如,在低级别自动发现规则中的返回值 。
运行Proxy
如果通过包安装
Zabbix proxy 进程以守护进程(Deamon)运行。Zabbix proxy的启动可以通过执行以下命令来完成:
shell> service zabbix-proxy start
上述命令在大多数的 GNU/Linux系统下都可以正常完成。如果是其他系统,你可能要尝试以下命令来运行:
shell> /etc/init.d/zabbix-proxy start
类似的,Zabbix proxy 的停止、重启、查看状态,则需要执行以下命令:
shell> service zabbix-proxy stop
shell> service zabbix-proxy restart
shell> service zabbix-proxy status
手动启动
如果上述方法无效,则必须手动启动。找到 到zabbix_proxy二进制文件的路径并执行:
shell> zabbix_proxy
您可以将以下命令行参数用于Zabbix proxy:
-c --config <file> 配置文件的路径
-f --foreground 运行Zabbix proxy在前台
-R --runtime-control <option> 启动管理员后台功能
-h --help 帮助
-V --version 显示版本信息
使用命令行参数运行Zabbix proxy的示例:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf
shell> zabbix_proxy --help
shell> zabbix_proxy -V
运行时控制
运行时控制选项:
选项 | 描述 | 目标 |
---|---|---|
config_cache_reload | 重新加载配置缓存。 如果当前正在加载缓存则被忽略。 主动模式的Zabbix proxy连接到Zabbix服务器并请求配置数据。 | |
diaginfo[=<target>] | 在proxy 日志文件中收集诊断信息。 | historycache - 历史缓存状态 preprocessing - 预处理管理状态 locks - 互斥量列表 (在BSD*系统中是空的) |
snmp_cache_reload | 重新加载SNMP缓存,清除所有主机的SNMP属性(引擎时间、引擎引导、引擎id、凭据)。 | |
housekeeper_execute | 启动管家处理过程。 如果管家处理过程当前正在进行,则将被忽略。 | |
log_level_increase[=<target>] | 增加日志级别,如果没有指定target,将影响所有进程。 BSD 系统不支持。 | process type - - 指定类型的所有进程 (e.g., poller) 另请参阅 proxy进程类型。 process type,N - 指定进程类型和数量 (e.g., poller,3) pid - 进程标识符(1 ~ 65535)。 对于较大的值,将target指定为“’process type,N”。 |
log_level_decrease[=<target>] | 降低日志级别,如果没有指定target,将影响所有进程。 **BSD 系统不支持。 | |
prof_enable[=<target>] | 启用分析。 如果未指定目标,则影响所有进程。 启用的分析按函数名称提供所有 rwlocks/mutex 的详细信息。<br >自 Zabbix 6.0.13 起支持。 | 进程类型 - 指定类型的所有进程(例如,history syncer) 查看所有 proxy进程类型。 ‘process type,N - 进程类型和数量(例如,history syncer,1) pid - 进程标识符(1 到 65535)。 对于较大的值,将目标指定为“’process type,N”。 scope - rwlock 、mutex 、processing 可以与进程类型和数量(例如,history syncer ,1,processing)或所有类型的进程(例如,history syncer,rwlock)一起使用 |
prof_disable[=<target>] | 禁用分析。 如果未指定目标,则影响所有进程。 自 Zabbix 6.0.13 起受支持。 | 进程类型 - 指定类型的所有进程(例如,history syncer) 查看所有 proxy进程类型。 process type,N - 进程类型和数量(例如,history syncer,1) pid - 进程标识符(1 到 65535)。 对于较大的值,将目标指定为“process type,N”。 |
使用运行时控制重新加载proxy 配置缓存的示例:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload
使用运行时控制收集诊断信息的示例:
在Proxy日志文件中收集所有可用的诊断信息:
shell> zabbix_proxy -R diaginfo
在Proxy日志文件中收集历史缓存统计信息:
shell> zabbix_proxy -R diaginfo=historycache
使用运行时控制重新加载SNMP缓存的例子:
shell> zabbix_proxy -R snmp_cache_reload
使用运行时控制触发管家执行的示例
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute
使用运行时控制更改日志级别的示例:
增加所有进程的日志级别:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
增加第二个轮询进程的日志级别:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
使用PID 1234增加进程的日志级别:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
降低所有http轮询器进程的日志级别:
shell> zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_decrease="http poller"
进程用户
Zabbix proxy被设计为以非root用户的身份运行。它将以任何非root用户的身份运行。因此,您可以作为任何非root用户运行proxy 而没有任何问题。
如果您尝试以“root”身份运行它,它将切换到硬编码的“zabbix”用户,这必须在您的系统上。如果你相应地修改了proxy 配置文件中的AllowRoot参数,那么你只能以root身份运行proxy。
配置文件
另请参考 配置文件 配置zabbix_proxy的详细信息。
Proxy进程类型和线程
agent poller
- 用工作线程进行被动检查的异步轮询器availability manager
- 主机可用性更新的进程configuration syncer
- 管理配置数据的内存缓存的进程data sender
- proxy 输出发送进程discovery manager
- 发现设备的管理进程discovery worker
- 处理来自发现管理器的发现任务的工作进程history syncer
- 历史数据同步进程housekeeper
- 删除旧历史数据的进程http agent poller
- 用工作线程处理 HTTP 检查的异步轮询器http poller
- web监控进程icmp pinger
- icmpping检查进程ipmi manager
- IPMI管理进程ipmi poller
- IPMI检查进程java poller
- Java检查进程odbc poller
- ODBC检查进程poller
- 被动检查的普通轮询器preprocessing manager
- 预处理任务的管理器preprocessing worker
- 数据预处理的进程self-monitoring
- 收集内部服务器统计数据的进程snmp poller
- snmp 异步轮询器,使用工作线程进行 SNMP 检查(仅支持walk[OID]
andget[OID]
监控项)snmp trapper
- SNMP 陷阱的trappertask manager
- 远程执行其他组件请求的任务的过程(例如,关闭问题、确认问题、现在检查项目值、远程命令功能)trapper
- 用于主动检查、陷阱、proxy 通信的trapperunreachable poller
- 针对不可达设备的轮询器vmware collector
- VMware数据收集器负责从VMware服务中收集数据
可以使用proxy 日志文件来观察这些进程类型。
可以使用 zabbix[process,<type>,<mode>,<state>] 内部监控项来监控各种类型的 Zabbix proxy进程。
支持的平台
Zabbix proxy 和 Zabbix server 支持运行的平台 相同。
内存缓存
内存缓存允许存储新的数据(监控项值,网络发现,主机自动注册)到缓存中,并上传到Zabbix server,而无需访问数据库。自Zabbix 7.0以来,proxy 已经引入内存缓存。
在Zabbix 7.0之前的版本中,收集的数据在上传到Zabbix server之前会先存储在数据库中。升级后,仍然保留这一默认行为。
为了优化性能,建议在proxy上配置使用内存缓存。可以通过修改 ProxyBufferMode 参数值配置,从 “disk” (默认值) to “hybrid” (推荐) 或者 “memory”。此外还需设置内存缓存大小 (ProxyMemoryBufferSize 参数).
在混合模式下(hybrid),如果 proxy 停止、缓存满或数据过旧,未发送的数据会被刷新到数据库中,从而避免数据丢失。当所有数值都刷新到数据库后,proxy 会重新使用内存缓存模式。
在内存模式下,将使用内存缓存存储数据会有数据丢失的风险。如果 proxy 停止或内存溢出,未发送的数据将会丢失。
从 Zabbix 7.0 开始,混合模式 (ProxyBufferMode=hybrid) 适用于所有新的版本。
Proxy 其他参数,如 ProxyMemoryBufferSize 和 ProxyMemoryBufferAge 分别用于定义内存缓存的大小和缓存中数据存储的最大时长。
注意 如果配置存储冲突,proxy 将打印错误信息并无法启动,例如:
- ProxyBufferMode 配置为 “hybrid” or “memory” 和 ProxyMemoryBufferSize 配置为 “0”;
- ProxyBufferMode 配置为 “hybrid” or “memory” 和 ProxyLocalBuffer 配置为非 “0”。
本地环境
请注意,proxy需要UTF-8语言环境,以便能够正确解释某些文本项。 大多数现代类unix系统默认使用UTF-8语言环境, 然而,有些系统可能需要专门设置。