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 需要您承担一定的风险,例如,在低级别自动发现规则中的返回值

详见:在分布式环境中使用 Zabbix proxy

运行Proxy

    ##### 如果作为软件包安装

Zabbix proxy 作为守护进程运行。可以通过执行以下命令启动 proxy:

systemctl start zabbix-proxy

这在大多数 GNU/Linux 系统上都能工作。在其他系统上,您可能需要运行:

/etc/init.d/zabbix-proxy start

同样地,为了停止/重启/查看 Zabbix proxy 的状态,使用以下命令:

systemctl stop zabbix-proxy
       systemctl restart zabbix-proxy
       systemctl status zabbix-proxy
手动启动

如果上述方法无效,则必须手动启动。找到 到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 server并请求配置数据。
被动Zabbix proxy将在下一次server连接到proxy时从server请求配置数据。
diaginfo[=<section>] 在proxy日志文件中收集诊断信息。 historycache - 历史缓存统计信息
preprocessing - 预处理管理器统计信息
locks - 互斥锁列表(在BSD系统上为空)
snmp_cache_reload 重新加载SNMP缓存,清除所有hosts的SNMP属性(引擎时间、引擎启动、引擎ID、凭证)。
housekeeper_execute 启动清理程序。如果清理程序当前正在进行中,则忽略此操作。
log_level_increase[=<target>] 增加日志级别,如果未指定目标则影响所有进程。
BSD系统上不支持。
process type - 指定类型的全部进程(例如,poller)
参阅所有proxy进程类型
process type,N - 进程类型和编号(例如,poller,3)
pid - 进程标识符(1至65535)。对于更大的值,请将目标指定为'process type,N'。
log_level_decrease[=<target>] 降低日志级别,如果未指定目标则影响所有进程。
BSD系统上不支持。
prof_enable[=<target>] 启用性能剖析。
如果未指定目标,则影响所有进程。
启用的性能剖析提供所有rwlocks/mutexes的详细信息,按函数名称分类。
process type - 指定类型的全部进程(例如,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>] 禁用性能剖析。
如果未指定目标,则影响所有进程。
process type - 指定类型的全部进程(例如,history syncer)
参阅所有proxy进程类型
process type,N - 进程类型和编号(例如,history syncer,1)
pid - 进程标识符(1至65535)。对于更大的值,请将目标指定为'process type,N'。

使用运行时控制重新加载proxy配置缓存的示例:

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R config_cache_reload

使用运行时控制收集诊断信息的示例:

# 在proxy日志文件中收集所有可用的诊断信息:
       zabbix_proxy -R diaginfo
       
       # 在proxy日志文件中收集历史缓存统计信息:
       zabbix_proxy -R diaginfo=historycache

使用运行时控制重新加载SNMP缓存的示例:

zabbix_proxy -R snmp_cache_reload  

使用运行时控制触发执行清理程序的示例

zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R housekeeper_execute

使用运行时控制更改日志级别的示例:

# 增加所有进程的日志级别:
       zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase
       
       # 增加第二个poller进程的日志级别:
       zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=poller,2
       
       # 增加PID为1234的进程的日志级别:
       zabbix_proxy -c /usr/local/etc/zabbix_proxy.conf -R log_level_increase=1234
       
       # 降低所有http poller进程的日志级别:
       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 - 用于主机可用性更新的进程
  • browser poller - 浏览器 监控项 检查的轮询器
  • configuration syncer - 管理配置数据内存缓存的进程
  • data sender - proxy 数据发送器
  • discovery manager - 用于发现设备的管理进程
  • discovery worker - 用于处理来自发现管理器的发现任务的进程
  • history syncer - 历史数据库写入器
  • housekeeper - 用于移除旧历史数据的进程
  • http agent poller - 用于HTTP检查的异步轮询进程,带有一个工作线程
  • http poller - 网页监控轮询器
  • icmp pinger - 用于icmpping检查的轮询器
  • internal poller - 用于内部检查的轮询器
  • ipmi manager - IPMI轮询器管理器
  • ipmi poller - 用于IPMI检查的轮询器
  • java poller - 用于Java检查的轮询器
  • odbc poller - 用于ODBC检查的轮询器
  • poller - 用于被动检查的普通轮询器
  • preprocessing manager - 带有预处理工作线程的预处理任务管理器
  • preprocessing worker - 数据预处理线程
  • self-monitoring - 用于收集内部服务器统计信息的进程
  • snmp poller - 用于SNMP检查的异步轮询进程,带有一个工作线程 (walk[OID]get[OID] 监控项 仅限)
  • snmp trapper - 用于SNMP陷阱的陷阱接收器
  • task manager - 用于远程执行由其他组件请求的任务的进程(例如,关闭问题,确认问题,现在检查 监控项 值,远程命令功能)
  • trapper - 用于主动检查,陷阱,proxy 通信的陷阱接收器
  • unreachable poller - 用于不可达设备的轮询器
  • vmware collector - 负责从VMware服务收集数据的VMware数据收集器

proxy 日志文件可用于观察这些进程类型。

可以使用 zabbix[process,<type>,<mode>,<state>] 内部 item 监控各种类型的 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 其他参数,如 ProxyMemoryBufferSizeProxyMemoryBufferAge 分别用于定义内存缓存的大小和缓存中数据存储的最大时长。

注意 如果配置存储冲突,proxy 将打印错误信息并无法启动,例如:

  • ProxyBufferMode 配置为 "hybrid" or "memory" 和 ProxyMemoryBufferSize 配置为 "0";
  • ProxyBufferMode 配置为 "hybrid" or "memory" 和 ProxyLocalBuffer 配置为非 "0"。

本地环境

请注意,proxy需要UTF-8语言环境,以便能够正确解释某些文本项。 大多数现代类unix系统默认使用UTF-8语言环境, 然而,有些系统可能需要专门设置。

在维护期间队列的计算

Zabbix proxy 不了解维护期;详细信息请参阅 在维护期间队列的计算