Zabbix 监控系统之进程详解

Zabbix 监控系统之进程详解

在这里插入图片描述

1.5.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 server 进程以守护进程(Deamon)运行。Zabbix server 的启动可以通过执行以下命令来完成:

shell> service zabbix-server start
shell> service zabbix-server stop
shell> service zabbix-server restart
shell> service zabbix-server status

上述命令在大多数的 GNU/Linux 系统下都可以正常完成。如果是其他系统,你可能要尝试以下命令来运行:

shell> /etc/init.d/zabbix-server start
类似的,停止、重启、查看状态,则需要执行以下命令:

shell> systemctl start zabbix-server.service
shell> systemctl enable zabbix-server.service

Zabbix server 的配置文件:

shell> vim /usr/local/etc/zabbix_server.conf

1.5.2 Agent

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序(硬盘、内存、处理器统计信息等)。

Zabbix agent 收集本地的操作信息并将数据报告给 Zabbix server 用于进一步处理。一旦出现异常 (例如硬盘空间已满或者有崩溃的服务进程),Zabbix server 会主动警告管理员指定机器上的异常。

Zabbix agents 的极高效率缘于它可以利用本地系统调用来完成统计数据的采集。

被动和主动检查

Zabbix agent 可以运行被动检查和主动检查。

被动检查 模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。

主动检查 处理过程将相对复杂。Agent 必须首先从 Zabbix sever 索取监控项列表以进行独立处理,然后会定期发送采集到的新值给 Zabbix server。

是否执行被动或主动检查是通过选择相应的监控项类型来配置的。 Zabbix agent 处理“Zabbix agent”或“Zabbix agent(active)”类型的监控项。

通过二进制包安装的组件

Zabbix agent 进程以守护进程(Deamon)运行。Zabbix agent 的启动可以通过执行以下命令来完成:

shell> service zabbix-agent start
shell> service zabbix-agent stop
shell> service zabbix-agent restart
shell> service zabbix-agent status

上述命令在大多数的 GNU/Linux 系统下都可以正常完成。如果是其他系统,你可能要尝试以下命令来运行:

shell> /etc/init.d/zabbix-agent start

类似的,停止、重启、查看状态,则需要执行以下命令:

shell> systemctl status zabbix-agent.service
shell> systemctl enable zabbix-agent.service

1.5.3 Proxy

Zabbix proxy 是一个可以从一个或多个受监控设备采集监控数据并将信息发送到 Zabbix server 的进程,主要是代表 Zabbix server 工作。 所有收集的数据都在本地缓存,然后传输到 proxy 所属的 Zabbix server。

部署Zabbix proxy 是可选的,但可能非常有利于分担单个 Zabbix server 的负载。 如果只有代理采集数据,则 Zabbix server 上会减少 CPU 和磁盘 I/O 的开销。

Zabbix proxy 是无需本地管理员即可集中监控远程位置、分支机构和网络的理想解决方案。

Zabbix proxy 需要使用独立的数据库。

通过二进制包安装的组件

Zabbix proxy 进程以守护进程(Deamon)运行。Zabbix proxy 的启动可以通过执行以下命令来完成:

shell> service zabbix-proxy start
shell> service zabbix-proxy stop
shell> service zabbix-proxy restart
shell> service zabbix-proxy status

上述命令在大多数的 GNU/Linux 系统下都可以正常完成。如果是其他系统,你可能要尝试以下命令来运行:

shell> /etc/init.d/zabbix-proxy start

zabbix_proxyd的配置文件:

shell> vim /usr/local/etc/zabbix_proxy.conf

1.5.4 Java gateway

从 Zabbix 2.0 开始,以 Zabbix 守护进程方式原生支持监控 JMX 应用程序就存在了,称之为“Zabbix Java gateway”。Zabbix Java gateway 的守护进程是用 Java 编写。为了在特定主机上找到 JMX 计数器的值,Zabbix server 向 Zabbix Java gateway 发送请求,后者使用 JMX 管理 API 来远程查询相关的应用。该应用不需要安装额外的软件。只需要在启动时,命令行添加-Dcom.sun.management.jmxremote选项即可。

Java gateway 接受来自 Zabbix server 或 Zabbix proxy 的传入连接,并且只能用作“被动 proxy”。与 Zabbix proxy 相反,它也可以从 Zabbix proxy (Zabbix proxy 不能被链接)调用。在 Zabbix server 或 Zabbix proxy 配置文件中,可以直接配置每个 Java gateway 的访问,因此每个 Zabbix pserver 或 Zabbix proxy 只能配置一个 Java gateway。如果主机将有 JMX agent 或其他类型的监控项,则只将 JMX agent 监控项传递给 Java gateway 进行检索。

当必须通过 Java gateway 更新监控项时,Zabbix server 或 proxy 将连接到 Java gateway 并请求该值,Java gateway 将检索该值并将其传递回 Zabbix server 或 Zabbix proxy。 因此,Java gateway 不会缓存任何值。

Zabbix server 或 Zabbix proxy 具有连接到 Java gateway 的特定类型的进程,由 StartJavaPollers 选项控制。在内部,Java gateway 启动多个线程,由 START_POLLERS 选项控制。 在服务器端,如果连接超过 Timeout 选项配置的秒数,它将被终止,但 Java gateway 可能仍在忙于从 JMX 计数器检索值。 为了解决这个问题,从 Zabbix 2.0.15、Zabbix 2.2.10 和 Zabbix 2.4.5 开始,Java gateway 中有 TIMEOUT 选项,允许为 JMX 网络操作设置超时。

Zabbix server 或 proxy 尝试尽可能地将请求汇集到单个 JMX 目标(受监控项取值间隔影响),并在单个连接中将它们发送到 Java Gateway 以获得更好的性能。

此外,建议让 StartJavaPollers 选项的值小于或等于 START_POLLERS,否则可能会出现 Java gateway 中没有可用线程来为传入请求提供服务的情况。

以下部分描述了如何获取和运行Zabbix Java gateway,如何配置 Zabbix server(或 Zabbix proxy)来使用 Zabbix Java gateway 进行 JMX 监控,以及如何在 Zabbix GUI 中配置与特定 JMX 计数器对应的 Zabbix 监控项。

1.5.5 Sender

Zabbix sender 是一个命令行应用程序,可用于将性能数据发送到 Zabbix server 进行处理。

该实用程序通常用于长时间运行的用户脚本,用于定期发送可用性和性能数据。

要将结果直接发送到 Zabbix server 或 proxy,必须配置 trapper 监控项 类型。

运行 Zabbix sender

一个运行 Zabbix UNIX sender 的例子:

shell> cd bin
shell> ./zabbix_sender -z zabbix -s "Linux DB3" -k db.connections -o 43

其中:

  • z - Zabbix server 主机(也可以使用 IP 地址)
  • s - 被监控主机的名称(在前端注册)
  • k - 监控项键值
  • o - 要发送的值

1.5.6 Get

Zabbix get 是一个命令行应用,它可以用于与 Zabbix agent 进行通信,并从 Zabbix agent 那里获取所需的信息。

该应用通常被用于 Zabbix agent 故障排错。

运行 Zabbix get

一个在 UNIX 下运行 Zabbix get 以从 Zabbix agent 获取 processor load 的值的例子。

shell> cd bin
shell> ./zabbix_get -s 127.0.0.1 -p 10050 -k system.cpu.load[all,avg1]

另一个运行 Zabbix get 以从网站捕获一个字符串的例子:

shell> cd bin
shell> ./zabbix_get -s 192.168.1.1 -p 10050 -k "web.page.regexp[www.zabbix.com,,,\"USA: ([a-zA-Z0-9.-]+)\",,\1]"

请注意,此处的监控项键值包含空格,因此引号用于将监控项键值标记为 shell。 引号不是监控项键值的一部分;它们将被 shell 修剪,不会被传递给Zabbix agent。

Zabbix get 接受以下命令行参数:

  -s --host <host name or IP>      指定目标主机名或IP地址
  -p --port <port number>          指定主机上运行 Zabbix agent 的端口号。默认端口10050
  -I --source-address <IP address> 指定源 IP 地址
  -k --key <item key>              指定要从监控项键值检索的值
  -h --help                        获得帮助
  -V --version                     显示版本号
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章