1 Server

概述

Zabbix server 是整个 Zabbix 软件的核心程序。

Zabbix Server负责执行数据的主动轮询和被动获取,计算触发器条件,向用户发送通知。它是Zabbix Agent 和 Proxy 报告系统可用性和完整性数据的核心组件。Server自身可以通过简单服务远程检查网络服务(如Web服务器和邮件服务器)。

Zabbix Server是所有配置、统计和操作数据的中央存储,也是Zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。

基础的 Zabbix Server 的功能分解成为三个不同的组件。他们是:Zabbix server、Web前端和数据库。

Zabbix 的所有配置信息都存储在 Server和Web前端进行交互的数据库中。例如,当你通过Web前端(或者API)新增一个监控项时,它会被添加到数据库的监控项表里。然后,Zabbix server 以每分钟一次的频率查询监控项表中的有效项,接着将它存储在 Zabbix server 中的缓存里。这就是为什么 Zabbix前端所做的任何更改需要花费两分钟左右才能显示在最新的数据段的原因。

服务进程

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

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

systemctl start zabbix-server

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

/etc/init.d/zabbix-server start

同样地,对于停止/重启/查看状态,使用以下命令:

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

如果以上操作均无效,您可能需要手动启动,找到 Zabbix Server 二进制文件的路径并且执行:

shell> zabbix_server

您可以将以下命令行参数用于 Zabbix server:

-c --config <file>              配置文件路径(默认/usr/local/etc/zabbix_server.conf)
       -R --runtime-control <option>   执行管理功能
       -h --help                       帮助
       -V --version                    显示版本号

使用命令行参数运行 Zabbix server 的示例::

shell> zabbix_server -c /usr/local/etc/zabbix_server.conf
       shell> zabbix_server --help
       shell> zabbix_server -V

运行时控制

运行时控制选项:

选项 描述 目标
config_cache_reload 重新加载配置缓存。如果当前正在加载缓存,则忽略此操作。
diaginfo[=<section>] 在服务器日志文件中收集诊断信息。 historycache - 历史缓存统计信息
valuecache - 值缓存统计信息
preprocessing - 预处理管理器统计信息
alerting - 警报管理器统计信息
lld - LLD管理器统计信息
locks - 互斥锁列表(在BSD系统上为空)
connector - 队列最长的连接器统计信息
ha_status 记录高可用性(HA)集群状态。
ha_remove_node=target 根据名称或ID移除指定的高可用性(HA)节点。
注意,活动/备用节点无法移除。
target - 节点的名称或ID(可通过运行ha_status获取)
ha_set_failover_delay=delay 设置高可用性(HA)故障转移延迟。
支持Time suffixes,例如10s, 1m。
proxy_config_cache_reload[=<target>] 重新加载proxy配置缓存。 target - 逗号分隔的proxy名称列表
如果未指定目标,则为所有proxies重新加载配置
secrets_reload 从Vault重新加载密钥。
service_cache_reload 重新加载服务管理器缓存。
snmp_cache_reload 重新加载SNMP缓存,清除所有主机的SNMP属性(引擎时间,引擎启动次数,引擎ID,凭据)。
housekeeper_execute 启动housekeeping过程。
如果当前正在进行房屋清理过程,则忽略此操作。
trigger_housekeeper_execute 启动触发器房屋清理过程,以移除由已删除触发器引起的问题,包括由此类问题生成的服务问题(在房屋清理时视为已解决)。
注意,在启动房屋清理过程之前,由现已删除的触发器引起的问题可能仍会生成服务问题,并将它们分配给服务。

如果您的设置涉及基于频繁发现/未发现触发器的许多服务status calculation rules,请考虑通过调整ProblemHousekeepingFrequency服务器配置参数来增加触发器房屋清理过程的频率。

如果当前正在进行触发器房屋清理过程,则忽略此操作。
log_level_increase[=<target>] 提高日志级别,如果未指定目标,则影响所有进程。
BSD系统上不支持。
进程类型 - 指定类型的全部进程(例如,poller)
参阅所有server process types
进程类型,N - 进程类型和编号(例如,poller,3)
pid - 进程标识符(1至65535)。对于更大的值,请将目标指定为'进程类型,N'。
log_level_decrease[=<target>] 降低日志级别,如果未指定目标,则影响所有进程。
BSD系统上不支持。
prof_enable[=<target>] 启用性能剖析。
如果未指定目标,则影响所有进程。
启用的性能剖析提供按函数名称的所有rwlocks/mutexes的详细信息。
进程类型 - 指定类型的全部进程(例如,历史同步器)
作为性能剖析目标的受支持的进程类型:alerter, alert manager, availability manager, configuration syncer, discovery manager, escalator, history poller, history syncer, housekeeper, http poller, icmp pinger, ipmi manager, ipmi poller, java poller, lld manager, lld worker, odbc poller, poller, preprocessing manager, preprocessing worker, proxy poller, self-monitoring, service manager, snmp trapper, task manager, timer, trapper, unreachable poller, vmware collector
进程类型,N - 进程类型和编号(例如,history syncer,1)
pid - 进程标识符(1至65535)。对于更大的值,请将目标指定为'进程类型,N'。
scope - rwlock, mutex, processing可与进程类型和编号(例如,history syncer,1,processing)或类型的所有进程(例如,history syncer,rwlock)一起使用
prof_disable[=<target>] 禁用性能剖析。
如果未指定目标,则影响所有进程。
进程类型 - 指定类型的全部进程(例如,历史同步器)
作为性能剖析目标的受支持的进程类型:参阅prof_enable
进程类型,N - 进程类型和编号(例如,history syncer,1)
pid - 进程标识符(1至65535)。对于更大的值,请将目标指定为'进程类型,N'。

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

shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R config_cache_reload

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

# 重新加载所有proxy的配置:
       shell> zabbix_server -R proxy_config_cache_reload
       
       # 重新加载 Proxy1 and Proxy2 的配置:
       shell> zabbix_server -R proxy_config_cache_reload=Proxy1,Proxy2

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

在服务器日志文件中收集所有可用的诊断信息:
       shell> zabbix_server -R diaginfo
       
       在服务器日志文件中收集历史缓存统计信息:
       shell> zabbix_server -R diaginfo=historycache

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

shell> zabbix_server -R snmp_cache_reload

使用运行时控制触发管家执行的示例:

shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R housekeeper_execute

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

增加所有进程的日志级别:
       shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
       
       增加第二个轮询进程的日志级别:
       shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=poller,2
       
       使用 PID 1234 增加进程的日志级别:
       shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=1234
       
       降低所有 http poller 进程的日志级别:
       shell> zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_decrease="http poller"

将 HA 故障转移延迟设置为最短 10 秒的示例:

shell> zabbix_server -R ha_set_failover_delay=10s
进程用户

Zabbix server 允许使用非 root 用户运行。它将以任何非 root 用户的身份运行。因此,使用非 root 用户运行 server 是没有任何问题的.

如果你试图以“root”身份运行它,它将会切换到一个已经“写死”的“zabbix”用户,您可以参考 安装 章节。按此相应地修改 Zabbix server 配置文件中的“AllowRoot”参数,则可以只以“root”身份运行 Zabbix server。

如果 Zabbix server 和 agent 均运行在同一台服务器上,建议您使用不同的用户运行 server 和 agent 。否则,,如果两者都以相同的用户运行,Agent 可以访问 Server 的配置文件, 任何 Zabbix 管理员级别的用户都可以很容易地检索到 Server 的信息。例如,数据库密码。

配置文件

有关配置 Zabbix server 的详细信息,请查阅 配置文件 章节。

启动脚本

这些脚本用于在系统启动和关闭期间自动启动和停止 Zabbix 进程。 此脚本位于 misc/init.d 目录下。

服务器进程类型和线程

  • agent poller - 被动检查的异步轮询进程,带工作线程
  • alert manager - 警报队列管理器
  • alert syncer - 警报数据库写入器
  • alerter - 发送通知的进程
  • availability manager - 更新主机可用性的进程
  • browser poller - 浏览器监控项检查的轮询器
  • configuration syncer - 管理配置数据内存缓存的进程
  • configuration syncer worker - 在监控项名称中解析和同步用户宏值的进程
  • connector manager - 连接器管理进程
  • connector worker - 处理来自连接器管理器请求的进程
  • discovery manager - 发现设备的管理进程
  • discovery worker - 处理来自发现管理器的发现任务的进程
  • escalator - 动作升级的进程
  • ha manager - 管理高可用性的进程
  • history poller - 处理需要数据库连接的计算检查的进程
  • history syncer - 历史数据库写入器
  • housekeeper - 删除旧历史数据的进程
  • http agent poller - HTTP检查的异步轮询进程,带工作线程
  • http poller - 网页监控轮询器
  • icmp pinger - icmpping检查的轮询器
  • internal poller - 内部检查的轮询器
  • ipmi manager - IPMI轮询器管理器
  • ipmi poller - IPMI检查的轮询器
  • java poller - Java检查的轮询器
  • lld manager - 低级别发现任务的管理进程
  • lld worker - 低级别发现任务的工作进程
  • odbc poller - ODBC检查的轮询器
  • poller - 被动检查的普通轮询器
  • preprocessing manager - 带预处理工作线程的预处理任务管理器
  • preprocessing worker - 数据预处理线程
  • proxy poller - 被动proxies的轮询器
  • proxy group manager - Proxy 负载均衡和高可用性的管理器
  • report manager - 定期报告生成任务的管理器
  • report writer - 生成定期报告的进程
  • self-monitoring - 收集内部服务器统计信息的进程
  • service manager - 通过接收历史同步器、任务管理器和警报管理器关于问题、问题标签和问题恢复的信息来管理服务的进程
  • snmp poller - SNMP检查的异步轮询进程,带工作线程 (walk[OID]get[OID] 监控项 仅限)
  • snmp trapper - SNMP陷阱的陷阱器
  • task manager - 远程执行由其他组件请求的任务的进程(例如,关闭问题,确认问题,立即检查监控项值,远程命令功能)
  • timer - 处理维护的计时器
  • trapper - 主动检查、陷阱、proxy通信的陷阱器
  • trigger housekeeper - 删除由已删除触发器生成的问题的进程
  • unreachable poller - 不可达设备的轮询器
  • vmware collector - 负责从VMware服务收集数据的VMware数据收集器

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

可以使用zabbix[process,<type>,<mode>,<state>]内部item监控各种类型的Zabbix server进程。

支持的平台

由于安全需求及服务器运行的使命关键性,UNIX是唯一能持续提供所需性能、容错能力和弹性的操作系统。Zabbix在市场领先的版本上运行。

Zabbix服务器在以下平台进行了测试:

  • Linux
  • Solaris
  • AIX
  • HP-UX
  • Mac OS X
  • FreeBSD
  • OpenBSD
  • NetBSD
  • SCO Open Server

Zabbix也可能在其他类Unix操作系统上运行。

本地环境

值得注意的是,Zabbix server 需要 UTF-8语言环境,以便可以正确解释某些文本项。 大多数现代类 Unix 系统都默认使用UTF-8 语言环境,但是,有些系统可能需要做特定的设置。