Zabbix 监控 Docker:解决 "No active checks on server" 问题

引言

Docker 是一种轻量级的容器技术,它可以帮助开发者更方便地构建、发布和运行应用程序。然而,随着 Docker 容器的广泛使用,监控容器的健康状态和性能指标变得越来越重要。Zabbix 是一个开源的网络监控解决方案,它可以帮助我们监控 Docker 容器的各项指标。然而,当我们尝试在 Zabbix 中添加 Docker 监控时,可能会遇到 "No active checks on server" 的问题。本文将介绍如何解决这个问题,并提供相应的代码示例。

问题描述

在 Zabbix 中添加 Docker 监控时,我们通常会遵循以下步骤:

  1. 在 Zabbix Server 上安装 Docker 监控模板。
  2. 在 Zabbix Web 界面中创建一个新的主机,并将其与 Docker 监控模板关联。
  3. 在主机上配置相应的监控项和触发器。

然而,有时在完成上述步骤后,我们可能会看到一个警告信息:"No active checks on server"。这意味着 Zabbix Server 没有找到任何活动的监控检查项,并且无法获取 Docker 容器的任何监控数据。

问题原因

出现 "No active checks on server" 问题的主要原因是 Zabbix Server 无法连接到 Docker Daemon。默认情况下,Zabbix Server 是在一个独立的进程中运行的,而 Docker Daemon 则运行在另一个进程中。因此,为了使 Zabbix Server 能够监控 Docker 容器,我们需要在 Zabbix Server 上安装 Docker 监控插件,并配置 Docker 监控插件与 Docker Daemon 之间的连接。

解决方法

下面是解决 "No active checks on server" 问题的步骤:

步骤 1:安装 Docker 监控插件

Zabbix 官方提供了一个名为 "zabbix-docker-monitoring" 的插件,它可以帮助我们监控 Docker 容器。首先,我们需要在 Zabbix Server 上安装该插件。可以使用以下命令下载并安装插件:

$ git clone 
$ cd zabbix-docker-monitoring

步骤 2:配置 Docker 监控插件

在 "zabbix-docker-monitoring" 目录中,我们可以找到一个名为 "docker_stats.sh" 的脚本文件。这个脚本文件可以帮助我们收集 Docker 容器的性能指标。我们需要使用编辑器打开这个脚本文件,并进行以下配置:

#!/bin/bash

ZABBIX_SERVER="127.0.0.1"  # Zabbix Server 的 IP 地址
ZABBIX_PORT="10051"  # Zabbix Server 的端口号
DOCKER_API_VERSION="v1.40"  # Docker API 的版本号

# ...

在上面的配置中,我们需要将 "ZABBIX_SERVER" 设置为 Zabbix Server 的 IP 地址,将 "ZABBIX_PORT" 设置为 Zabbix Server 的端口号,将 "DOCKER_API_VERSION" 设置为 Docker API 的版本号。

步骤 3:启动 Docker 监控插件

完成配置后,我们可以通过以下命令启动 Docker 监控插件:

$ ./docker_stats.sh

步骤 4:添加 Docker 监控项

在 Zabbix Web 界面中,我们可以通过以下步骤添加 Docker 监控项:

  1. 登录 Zabbix Web 界面,并导航到 "Configuration" -> "Hosts"。
  2. 选择要监控的 Docker 主机,并点击 "Items" 标签。
  3. 点击 "Create item" 按钮,创建一个新的监控项。
  4. 在 "Key" 字段中输入 Docker 监控项的键值,例如 "docker.container.cpu.usage[nginx]"。
  5. 配置其他监控项的参数,例如 "Name"