如何在Ubuntu20.04上使用Zabbix监控Docker

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Open Source Initiative 来接受捐赠。

Docker 是一个流行的应用程序,它简化了容器中应用程序进程的管理。 容器类似于虚拟机,但由于它们更依赖于主机操作系统,因此它们更具可移植性和资源友好性。

在生产环境中使用容器时,您应该知道它们是否都在运行以及它们正在消耗哪些资源。 Zabbix 是一个监控系统,可以监控您的 IT 基础架构中几乎任何元素的状态,例如网络、服务器、虚拟机和应用程序。

Zabbix 最近推出了具有高级功能的新代理(Zabbix agent 2)。 新代理的主要优势之一是能够使用插件扩展功能。 目前,有几个插件可用,包括一个用于监控 Docker 的插件。

在本教程中,您将在 Ubuntu 20.04 上使用 Zabbix agent 2 在 Zabbix 中设置 Docker 监控。 您将探索指标并模拟崩溃以生成通知。 最后,你将为你的 Docker 应用程序建立一个监控系统,它会通知你容器的任何问题。

先决条件

要遵循本教程,您将需要:

第 1 步 — 安装和配置 Zabbix Agent 2

Zabbix 代理是一个非常小的应用程序,必须安装在您要监控的每台服务器或虚拟机上。 它将监控数据发送到 Zabbix 服务器。 Zabbiх 建议使用以下两种代理之一:Zabbix agentZabbix agent 2。 (您可以在 文档 中了解它们的区别。)在本教程中,我们将使用 Zabbix 代理 2,因为它可以与 Docker 一起使用。 在此步骤中,您将学习如何安装和配置它。

首先安装代理软件。 登录Docker服务器

ssh sammy@docker_server_ip_address

运行以下命令安装存储库配置包:

wget https://repo.zabbix.com/zabbix/5.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.0-1+focal_all.deb
sudo dpkg -i zabbix-release_5.0-1+focal_all.deb

接下来,更新包索引:

sudo apt update

然后安装 Zabbix 代理:

sudo apt install zabbix-agent2

接下来,您需要编辑代理配置文件,其中包含所有代理的设置。 这些设置指定将数据传输到的地址、用于与服务器之间的连接的端口、是否使用安全连接等等。 在大多数情况下,默认设置就可以了。 此文件中的所有设置都通过整个文件中的信息注释进行记录。

对于本教程,您将需要编辑 Zabbix 代理设置以设置其与 Zabbix 服务器 的连接。 在文本编辑器中打开代理配置文件:

sudo nano /etc/zabbix/zabbix_agent2.conf

默认情况下,代理被配置为向与代理相同主机上的服务器发送数据,因此您需要添加 Zabbix 服务器 的 IP 地址。 找到以下部分:

/etc/zabbix/zabbix_agent2.conf

...
### Option: Server
#       List of comma delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
#       Incoming connections will be accepted only from the hosts listed here.
#       If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally
#       and '::/0' will allow any IPv4 or IPv6 address.
#       '0.0.0.0/0' can be used to allow any IPv4 address.
#       Example: Server=127.0.0.1,192.168.1.0/24,::1,2001:db8::/32,zabbix.example.com
#
# Mandatory: yes, if StartAgents is not explicitly set to 0
# Default:
# Server=

Server=127.0.0.1
...

将默认值更改为您的 Zabbix 服务器 的 IP:

/etc/zabbix/zabbix_agent2.conf

...
Server=zabbix_server_ip_address
...

默认情况下,Zabbix 服务器连接到代理。 但是对于某些检查(例如,监控日志),需要反向连接。 为了正确操作,您需要指定 Zabbix 服务器地址和唯一的主机名。

找到配置活动检查的部分并更改默认值,如下所示:

/etc/zabbix/zabbix_agent2.conf

...
##### Active checks related

### Option: ServerActive
#       List of comma delimited IP:port (or DNS name:port) pairs of Zabbix servers and Zabbix proxies for active checks.
#       If port is not specified, default port is used.
#       IPv6 addresses must be enclosed in square brackets if port for that host is specified.
#       If port is not specified, square brackets for IPv6 addresses are optional.
#       If this parameter is not specified, active checks are disabled.
#       Example: ServerActive=127.0.0.1:20051,zabbix.domain,[::1]:30051,::1,[12fc::1]
#
# Mandatory: no
# Default:
# ServerActive=

ServerActive=zabbix_server_ip_address

### Option: Hostname
#       Unique, case sensitive hostname.
#       Required for active checks and must match hostname as configured on the server.
#       Value is acquired from HostnameItem if undefined.
#
# Mandatory: no
# Default:
# Hostname=

Hostname=Docker server
...

保存并关闭文件。

要让 Zabbix 代理监控 Docker,您需要将 zabbix 用户添加到 docker 组:

sudo usermod -aG docker zabbix

现在您可以重新启动 Zabbix 代理并将其设置为在启动时启动:

sudo systemctl restart zabbix-agent2
sudo systemctl enable zabbix-agent2

为了更好地衡量,检查 Zabbix 代理是否正常运行:

sudo systemctl status zabbix-agent2

输出将与此类似,表明代理正在运行:

Output● zabbix-agent2.service - Zabbix Agent 2
     Loaded: loaded (/lib/systemd/system/zabbix-agent2.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-09-03 07:05:05 UTC; 1min 23s ago
  ...

代理将在端口 10050 上侦听来自服务器的连接。 配置 UFW 以允许连接到此端口:

sudo ufw allow 10050/tcp

您可以在 如何在 Ubuntu 20.04 上使用 UFW 设置防火墙中了解有关 UFW 的更多信息。

在这一步中,您安装了 Zabbix 代理 2,将其配置为允许来自 Zabbix 服务器 的连接,并准备监控 Docker。

您的代理现在已准备好将数据发送到 Zabbix 服务器。 但为了使用它,您必须从服务器的 Web 控制台链接到它并启用 Docker 模板。 在下一步中,您将完成配置。

第 2 步 — 将新主机添加到 Zabbix 服务器

在您要监控的服务器上安装代理只是整个过程的一半。 您要监控的每个主机都需要在 Zabbix 服务器 上注册,您可以通过 Web 界面进行注册。 您还需要将适当的模板连接到它。 使用模板,您可以将相同的监控项、触发器、图表和低级发现规则应用于多个主机。 当模板链接到主机时,模板的所有实体(项目、触发器、图表等)都将添加到主机。

通过导航到地址 http://zabbix_server_namehttps://zabbix_server_name 登录到 Zabbix 服务器 Web 界面。 (如先决条件中链接的教程中所述,如何在 Ubuntu 20.04 上安装和配置 Zabbix 以安全监控远程服务器,默认用户为 Admin,密码为 zabbix.)

登录后,点击左侧导航栏中的Configuration,然后点击Hosts。 然后点击屏幕右上角的【X15X】创建主机【X30X】按钮。 这将打开主机配置页面。

调整 主机名IP 地址 以反映您的 Docker 服务器 的主机名和 IP 地址,然后将主机添加到组中。 您可以选择现有组,例如 Linux 服务器,或创建自己的组,例如 Docker 服务器。 每个主机必须在一个组中,也可以在多个组中。 为此,请在 Groups 字段中输入现有或新组的名称,然后从建议的列表中选择所需的值。

添加组后,单击模板选项卡。

要启用必要的检查,您需要添加一个模板。 该模板包括所有必要的检查、触发器和图表。 主机可以有多个模板。 为此,请在 Search 字段中输入模板的名称,然后从建议的列表中选择它。

对于本教程,键入 Template App Docker,然后从列表中选择它以将此模板添加到主机。 这会将模板中预先配置的 Docker 监控所需的所有项目、触发器和图表附加到主机。

最后,点击表单底部的Add按钮创建主机。

您将在列表中看到您的新主机。 等待一分钟并重新加载页面以查看绿色标签,表明一切正常。

在此步骤中,您向服务器添加了一个新主机,并使用现成的模板来添加所需的检查。

Zabbix 服务器 现在正在监控您的 Docker 服务器。 在下一步中,您将启动一个测试容器并探索 Zabbix 可以收集哪些指标。

第 3 步 — 访问 Docker 指标

如果您在新环境中运行本教程,那么您没有运行容器,也没有需要监控的内容。 在此步骤中,您将启动一个测试容器并查看可用的指标。 在本教程中,您将运行基于 ubuntu 的测试容器。

Docker 服务器 上运行以下命令:

sudo docker run --name test_container -it ubuntu bash

这将使用 ubuntu:latest 映像启动一个名为 test_container 的测试容器。 -it 标志指示 Docker 分配一个伪 TTY 连接到容器的 标准输入 ,在容器中创建一个交互式 bash shell。

输出将类似于以下内容:

OutputUnable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
35807b77a593: Pull complete
Digest: sha256:9d6a8699fb5c9c39cf08a0871bd6219f0400981c570894cd8cbea30d3424a31f
Status: Downloaded newer image for ubuntu:latest

注意: 不要离开外壳,因为您将在下一步中使用它。


启动容器几分钟后,Zabbix 将自动找到一个新容器并添加适当的指标。

要查看所有指标的列表,请单击左侧导航栏中的 Monitoring,然后单击 Hosts。 然后点击对应行的【X11X】最新数据【X26X】。

您将看到一个表格,其中包含 Zabbix 代理为给定主机收集的所有指标。 对于每个项目,您可以看到名称、历史存储期限、最后一次检查的时间和最后一个值。

您可以滚动列表并查看与 test_container 关联的指标。 您也可以在 Name 字段中输入容器的名称,然后单击 Apply 以查找所有相关指标。

要查看特定指标的更改历史记录,请单击 Graph(用于数值)或 History(用于文本值)。

您也可以在列表中选择一个或多个指标,然后单击列表最底部的显示图形按钮,一起查看多个图形。

在这一步中,您启动了一个测试容器并在 Zabbix Web 界面中查看了它的指标。 接下来,您将触发通知。

第 4 步 — 生成测试警报

在这一步中,您将通过模拟容器的意外关闭来了解监控是如何工作的,这会触发来自 Zabbix 的通知。

从模拟容器崩溃开始。 在容器外壳中执行以下命令:

exit 1

使用此命令,您终止了带有错误代码 1 的容器。 此退出代码将传递给 docker run 的调用者,并记录在测试容器的元数据中。

要查看警报,请单击 Zabbix Web 界面左侧导航栏中的 Monitoring,然后单击 Dashboard。 在一分钟或更短的时间内,您将看到“容器已停止并出现错误代码”的通知:

如果您之前配置过电子邮件或其他通知,您还会收到类似以下的消息:

Problem started at 11:17:31 on 2021.09.03
Problem name: Container /test_container: Container has been stopped with error code
Host: Docker Server
Severity: Average
Operational data: 1
Original problem ID: 103

检查通知后,您可以重新启动容器,问题将自动消失。

要重新启动容器,请在 Docker 服务器 上运行以下命令。

sudo docker start test_container

您可以使用以下命令检查容器是否正在运行:

sudo docker ps

输出将类似于以下内容:

OutputCONTAINER ID   IMAGE     COMMAND   CREATED          STATUS         PORTS     NAMES
c9b8a264c2e1   ubuntu    "bash"    23 minutes ago   Up 7 seconds             test_container

要查看 Zabbix 界面中所有警报的历史记录,请单击左侧导航栏中的 Monitoring,然后单击 Problems。 您可以使用选项和过滤器来查看特定时间段、特定主机等的事件。 要查看历史记录,请选择选项 显示:历史记录

在这一步中,您模拟了容器崩溃并在 Zabbix 中收到了通知。

结论

在本教程中,您学习了如何设置一个简单的监控解决方案来帮助您跟踪 Docker 容器的运行状况。 现在它可以提醒您注意问题,并且您可以分析 Docker 应用程序中发生的过程。

使用 Zabbix,您不仅可以监控容器,还可以使用现成的 Zabbix 官方模板 监控服务器、数据库、Web 应用程序等等

要了解有关监控基础设施的更多信息,请查看我们的 监控主题页面