如何开始使用 Checkmk

IT 基础设施监控的复杂性与 Checkmk 的简化之道

监控IT基础设施是一项复杂的工作,但借助像 Checkmk 这样的工具,我们可以显著简化这一过程。

为了提升产品性能,许多组织都在技术栈中引入了云原生技术。 然而,他们通常还会继续运营自己的网络和本地基础设施。 这种向混合基础设施的转变给监控带来了挑战,因为各种组件(如操作系统、存储、服务器和云环境等)每秒都会生成大量的指标。 这些指标对于确保应用程序在峰值期间正常运行至关重要。

这些指标是DevOps团队了解其基础设施健康状况的重要参考。 因此,组织需要一个监控解决方案,能够通过指标、可视化和分析快速定位生产环境中的问题。 Checkmk 正是这样一款备受欢迎且功能强大的基础设施监控工具。 在本文中,我将阐述 Checkmk 如此受青睐的原因,并指导您如何开始使用它。

Checkmk:一款全面的监控解决方案

Checkmk 能够持续检测现代IT环境中各个方面的功能,尤其适用于混合基础设施。 它既具有高度的灵活性,能够支持容器、云资产以及交换机和服务器等本地系统;又易于上手和管理,这得益于其基于大量IT专业知识的自动化警报和其他智能功能,从而可以节省大量时间。

如果您想免费体验 Checkmk,您可以选择 Checkmk Raw Edition,这是一个完全开源且免费使用的版本,没有任何限制。 此外,还有 Checkmk 企业试用版 ,它包含了 Checkmk 企业版的所有附加功能,但30天后主机数量将被限制为25台。

Checkmk 是如何解决监控难题的呢?

Checkmk 可以监控应用程序、服务器、数据库、网络、容器、存储等多种组件,并提供超过2000个监控插件。 这些插件使得 Checkmk 能够扩展以监控市场上各种供应商的特定技术。 一些常用的Checkmk插件包括 Docker、Kubernetes、Cisco、Nginx、VMware、Linux、Windows、AWS 和 Dell 等。 凭借其庞大的插件库,Checkmk 成为目前非常有前景的基础设施监控解决方案。

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

在 Docker 容器中部署 Checkmk

在本文中,我将在运行 Ubuntu 20.04 的 Linux 服务器上的 Docker 容器中安装 Checkmk Raw Edition。 您可以从 Dockerhub 下载 Checkmk Docker 容器。 该镜像已被下载近500万次,这充分说明了 Checkmk 的流行程度和广泛应用。

获取包含最新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

容器的名称将是“monitoring”,Web 服务器将侦听端口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 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)。 在Web浏览器中打开此地址并使用您的凭据登录。

登录后,您将看到“主仪表板”。 由于您尚未添加任何主机,所以它会是空的。

使用 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 并点击 “设置” -> “主机”。

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

  • 一旦您完成此操作,Checkmk 将自动启动服务发现。

向下滚动查看在 Docker 主机下运行的监控服务。 您会发现这些服务当前未受到监控。 如果您想监控所有内容,最简单的解决方案是点击 “全部修复”。 如果您想配置需要监控的服务,也可以逐项进行设置。 如果您要监视某项服务,请点击 + 号。

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

我已经禁用了四项服务,所以可以在 “禁用服务” 标签页中看到它们。

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

  • 点击右上角带有黄色感叹号 (!) 的高亮显示区域,查看待定的更改。
  • 点击 “在选定站点上激活”。

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

结语

以上就是关于 Checkmk 这个基础设施监控工具的介绍。 它是一款非常易于使用的工具,我建议您尝试使用它来监控您的生产环境。 我建议您尝试 Checkmk 免费版 来开始您的监控之旅。