监控变得简单:如何开始使用 Checkmk

已发表: 2021-11-24

IT 基础架构监控很复杂,但 Checkmk 之类的工具可以让它变得更容易。

许多组织已将云原生技术添加到其技术堆栈中,以提高其产品的性能。 同时,他们经常继续运行自己的网络和本地基础设施。 由于每秒为各种组件(如操作系统、存储、服务器、云环境等)生成大量指标,因此需要在监控中解决这种向混合基础架构的转变。它们对于确保应用程序在峰值运行时都很重要表现。

这些指标是 DevOps 团队了解其基础设施健康状况的重要信号。 这就是为什么组织需要一个监控解决方案来帮助他们通过指标、可视化和分析快速识别生产中的问题。 Checkmk 是最流行和最有用的基础设施监控工具之一。 在本文中,我将告诉您为什么 Checkmk 值得拥有良好的声誉,以及您如何迈出第一步。

什么是 Checkmk?

Checkmk 不断检查现代 IT 环境的任何方面的功能,特别适合混合基础架构。 一方面,Checkmk 非常灵活,支持容器、云资产以及交换机和服务器等本地系统。 另一方面,开始和管理您的监控真的很容易,因为 Checkmk 带有基于大量 IT 专业知识和其他智能功能的自动警报,可以为您节省大量时间。

如果您想免费使用 Checkmk,您有两个选择:首先,您可以选择 Checkmk Raw Edition,它是完全开源的,可以免费使用,没有任何限制。 其次,Checkmk Enterprise Trial Edition 具有 Checkmk Enterprise Edition 的所有附加功能,但 30 天后主机数量将限制为 25 个。

Checkmk 是如何解决这个问题的?

Checkmk 可以监控应用程序、服务器、数据库、网络、容器、存储等等。 它提供了超过 2,000 个监控插件的海量列表。 有了这些插件。 Checkmk 可以扩展以监控来自市场上不同供应商的特定技术。 一些流行的 Checkmk 插件适用于 Docker、Kubernetes、Cisco、Nginx、VMware、Linux、Windows、AWS、Dell。 Checkmk 拥有 2,000 多个插件,是目​​前可用的非常有前途的基础设施监控解决方案。

此外,对于任何监控解决方案,他们能够以多快和正确的速度读取指标并设置智能警报和通知也至关重要。 Checkmk 的解决方案符合所有这些标准。 凭借其自动发现功能,Checkmk 可以识别超过 90% 的服务和设备。 现在,大多数企业都需要可扩展性和自动化。 您可以在 Checkmk 中轻松地将监控容量从数百台主机扩展到数千台主机,并利用其可用于自动化的代理。

在 Docker 容器中安装 Checkmk

在本文中,我将在运行 Ubuntu 20.04 的 Linux 服务器上的 Docker 容器中安装 Checkmk Raw Edition。 从 Dockerhub,您可以下载 Checkmk Docker 容器。 到目前为止,它有近 500 万次拉动,这说明了 Checkmk 的流行和广泛使用。

checkmk dockerhub

获取具有最新 Checkmk 版本的 Docker 映像,并使用命令docker container run在容器中运行它。

 docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest

容器的名称将是“监控”,网络服务器将侦听端口 5000 并在节点的端口 8080 上打开。 容器将使用临时文件系统和本地时区。

 [email protected]:~$ sudo docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v/omd/sites --name monitoring -v/etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest Unable to find image 'checkmk/check-mk-raw:2.0.0-latest' locally 2.0.0-latest: Pulling from checkmk/check-mk-raw 33847f680f63: Pull complete 474905f2790b: Pull complete 1804f0e63047: Pull complete f36fe6334464: Pull complete 03c68dfa69cf: Pull complete b60cfdb78e96: Pull complete Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6 Status: Downloaded newer image for checkmk/check-mk-raw:2.0.0-latest 9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf

您可以通过运行docker images命令检查 Docker 映像是否已下载。

 [email protected]:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE bitnami/node-exporter latest ba0f519ca49b 34 hours ago 104MB checkmk/check-mk-raw 2.0.0-latest 097319702432 13 days ago 1.03GB hello-world latest feb5d9fea6a5 7 weeks ago 13.3kB

运行命令 docker docker ps查看 Checkmk 容器是否正在运行。

 [email protected]:~$ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9729e323a840 checkmk/check-mk-raw:2.0.0-latest "/docker-entrypoint.…" About a minute ago Up 59 seconds (health: starting) 6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp monitoring 3d3a95ed3c25 bitnami/node-exporter:latest "/opt/bitnami/node-e…" 25 hours ago Up 25 hours 9100/tcp node-exporter

要获取 Checkmk Web 界面的登录详细信息,请打印 Checkmk 容器日志。

 [email protected]:~$ sudo docker container logs 9729e323a840 ### CREATING SITE 'cmk' Adding /opt/omd/sites/cmk/tmp to /etc/fstab. Going to set TMPFS to off. Temporary filesystem already mounted Updating core configuration... Generating configuration for core (type nagios)...Precompiling host checks...OK OK Executing post-create script "01_create-sample-config.py"...OK Created new site cmk with version 2.0.0p15.cre. The site can be started with omd start cmk. The default web UI is available at http://9729e323a840/cmk/ The admin user for the web applications is cmkadmin with password: ClFxBPre For command line administration of the site, log in with 'omd su cmk'. After logging in, you can change the password for cmkadmin with 'htpasswd etc/htpasswd cmkadmin'. ### STARTING XINETD [ ok ] Starting internet superserver: xinetd. ### STARTING SITE Temporary filesystem already mounted Starting mkeventd...OK Starting rrdcached...OK Starting npcd...OK Starting nagios...OK Starting apache...OK Starting redis...OK Initializing Crontab...OK ### STARTING CRON ### CONTAINER STARTED

Checkmk Docker 容器将默认在https://localhost:8080/cmk/check_mk 运行。 上面命令的输出告诉你用户名是 cmkadmin 和密码,在我的例子中密码是 ClFxBPre。 在网络浏览器中打开地址并使用您的凭据登录。

检查登录

登录后,这就是将出现的“主仪表板”。 它是空的,因为您还没有添加任何主机。

检查仪表板

使用 Checkmk 监控 Docker

通常,您会在托管 Docker 容器的机器上安装 Checkmk 代理,然后使用 Docker 的 Checkmk 插件来监控所有容器。 这个插件 (mk_docker.py) 使用 Docker 的 Python-API 来跟踪 Docker 容器并全面了解它们的实时状态和性能。 您可以在 Checkmk 网站上阅读有关使用 Checkmk 进行 Docker 监控的更多详细信息。

因为在我的 Docker 环境中只有一个 Docker 容器在运行,我的 Checkmk Docker 容器,我将只使用在 Docker 容器中运行的 Checkmk 代理,不会在我的 Docker 主机上安装 Checkmk。 该代理已预先安装在 Checkmk 容器中,因此,我只需将我的 Checkmk 容器添加为主机。

让我们在终端上使用ifconfig获取运行 Docker 服务的 IP 地址。

 [email protected]:~$ ifconfig docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255 inet6 fe80::42:59ff:fe8a:8ba8 prefixlen 64 scopeid 0x20<link> ether 02:42:59:8a:8b:a8 txqueuelen 0 (Ethernet) RX packets 5559 bytes 7230215 (7.2 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4164 bytes 614703 (614.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.108 netmask 255.255.255.0 broadcast 192.168.0.255 inet6 fe80::144a:4682:35e7:bb2 prefixlen 64 scopeid 0x20<link> ether 08:00:27:91:82:82 txqueuelen 1000 (Ethernet) RX packets 699491 bytes 1044235622 (1.0 GB) RX errors 0 dropped 7 overruns 0 frame 0 TX packets 101260 bytes 7555470 (7.5 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 20655 bytes 8446042 (8.4 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 20655 bytes 8446042 (8.4 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 veth44ba5ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::145f:1fff:fee9:a7b0 prefixlen 64 scopeid 0x20<link> ether 16:5f:1f:e9:a7:b0 txqueuelen 0 (Ethernet) RX packets 5559 bytes 7308041 (7.3 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 4173 bytes 616263 (616.2 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 vetha82ee43: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 fe80::585c:6fff:fe0a:a79b prefixlen 64 scopeid 0x20<link> ether 5a:5c:6f:0a:a7:9b txqueuelen 0 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 92 bytes 9799 (9.7 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

就我而言,Docker 服务在172.17.0.1上运行。 下一步是在 Checkmk 中添加 Docker 服务作为主机,以便对其进行监控。

  • 转到 Checkmk 并单击设置 -> 主机。

检查主机

  • 点击“添加主机”。

checkmk 添加主机

  • 现在提供主机名和 IP 地址,然后单击“保存并转到服务配置”。

checkmk 主机泊坞窗

  • 一旦你这样做了,Checkmk 将自动启动服务发现。

checkmk 码头工人服务

向下滚动查看 Docker 主机下运行的监控服务。 您可以看到服务当前未受到监控。 如果您想监控所有内容,最简单的解决方案是单击“全部修复”。 如果您想配置应该监控哪些服务,您也可以详细执行此操作。 如果要监视服务,请单击+号。

checkmk docker服务列表

选择要监视的服务后,它们将出现在“受监视的服务”选项卡中。 您将获得所监控的每项服务的所有状态详细信息。 如果点击 签名,该服务将移至未决定的服务列表。 如果您单击X符号,该服务将移至“禁用服务”选项卡。

checkmk 监控的服务

我已经禁用了四个服务,所以我可以在禁用服务选项卡中看到它们。

checkmk 禁用服务

添加完服务后,您需要在更改投入生产之前激活这些更改。

  • 单击右上角带有黄色感叹号(!)的突出显示字段以查看待定更改。
  • 单击在选定站点上激活

您已经使用 Checkmk 成功监控了 Docker 服务!

结论

这就是Checkmk,一个基础设施监控工具。 这是一个非常易于使用的工具,您必须尝试监控您的生产环境。 我建议尝试使用 Checkmk 免费版来开始您的监控。