作者选择开放互联网/言论自由基金接受捐赠,作为Write for DOnations计划的一部分。
介绍
作为系统管理员,最好了解您的基础架构和服务的当前状态。理想情况下,您希望在用户之前注意到故障磁盘或应用程序停机时间。Checkmk等监控工具可以帮助管理员检测这些问题并维护健康的服务器。
通常,监控软件可以跟踪服务器的硬件、正常运行时间和服务状态,并且可以在出现问题时发出警报。在真实场景中,如果任何服务出现故障,监控系统会提醒您。在更强大的情况下,通知会在出现任何可疑迹象后不久发出,例如内存使用量增加或 TCP 连接数量异常。
许多监控解决方案提供不同程度的复杂性和功能集,包括免费的和商业的。在许多情况下,这些工具的安装、配置和管理是困难和耗时的。
Checkmk是一种强大且易于安装的监控解决方案。它是一个独立的软件包,将Nagios(一种流行的开源警报服务)与用于收集、监控和绘制数据的附加组件相结合。它还带有 Checkmk 的 Web 界面——一个综合性的工具,可以解决 Nagios 的许多缺点。它为许多 Linux 发行版提供了一个用户友好的仪表板、一个功能齐全的通知系统和一个易于安装的监控代理存储库。如果不是 Checkmk 的 Web 界面,我们将不得不为各种任务使用不同的视图。如果不诉诸大量的文件修改,就不可能配置所有这些功能。
在本指南中,我们将在 Ubuntu 20.04 服务器上设置 Checkmk 并监控两个独立的主机。我们将监控 Ubuntu 服务器本身和一个单独的 CentOS 8 服务器,但我们可以使用相同的方法将任意数量的额外主机添加到我们的监控配置中。
先决条件
- 一台 Ubuntu 20.04 服务器,具有 sudo 权限的普通非 root 用户。您可以按照此初始服务器设置教程学习如何准备您的服务器。
- 一台拥有 sudo 权限的普通非 root 用户的CentOS 8 服务器。要准备此服务器,您可以按照此初始服务器设置教程进行操作。
步骤 1 — 在 Ubuntu 上安装 Checkmk
为了使用我们的监控站点,我们首先必须在 Ubuntu 服务器上安装 Checkmk。这将为我们提供所需的所有工具。Checkmk 提供了官方的即用型 Ubuntu 软件包文件,我们可以使用它们来安装软件包。
首先,让我们更新包列表,以便我们拥有最新版本的存储库列表:
- sudo apt update
要浏览包,我们可以访问包列表站点。可以在页面菜单中选择 Ubuntu 20.04 等。
现在下载包:
- wget https://download.checkmk.com/checkmk/1.6.0p20/check-mk-raw-1.6.0p20_0.focal_amd64.deb
然后安装新下载的包:
- sudo apt install -y ./check-mk-raw-1.6.0p20_0.focal_amd64.deb
此命令将安装 Checkmk 包以及所有必要的依赖项,包括用于提供对监控界面的 Web 访问的Apache Web 服务器。
安装完成后,我们现在可以访问omd
命令了。试试看:
- sudo omd
此omd
命令将输出以下内容:
OutputUsage (called as root):
omd help Show general help
. . .
General Options:
-V <version> set specific version, useful in combination with update/create
omd COMMAND -h, --help show available options of COMMAND
该omd
命令可以管理我们服务器上的所有 Checkmk 实例。它可以一次启动和停止所有监控服务,我们将使用它来创建我们的 Checkmk 实例。但是,首先,我们必须更新我们的防火墙设置以允许外部访问默认 Web 端口。
步骤 2 — 调整防火墙设置
在我们能够使用 Checkmk 之前,有必要在防火墙配置中允许外部访问 Web 服务器。假设您遵循先决条件中的防火墙配置步骤,您将设置一个 UFW 防火墙来限制对您的服务器的访问。
在安装过程中,Apache 向 UFW 注册自己,以提供一种简单的方法来启用或禁用通过防火墙对 Apache 的访问。
要允许访问 Apache,请使用以下命令:
- sudo ufw allow Apache
现在验证更改:
- sudo ufw status
您将看到 Apache 列在允许的服务中:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
这将允许我们访问 Checkmk Web 界面。
在下一步中,我们将创建第一个 Checkmk 监控实例。
第 3 步 – 创建 Checkmk 监控实例
Checkmk 使用实例或单独安装的概念来隔离服务器上的多个 Checkmk 副本。在大多数情况下,只需一份 Checkmk 副本就足够了,这就是我们将在本指南中配置软件的方式。
首先,我们必须为我们的新实例命名,我们将monitoring
在本文通篇使用。要创建实例,请键入:
- sudo omd create monitoring
该omd
工具将自动为我们设置一切。命令输出将类似于以下内容:
OutputAdding /opt/omd/sites/monitoring/tmp to /etc/fstab.
Creating temporary filesystem /omd/sites/monitoring/tmp...OK
Restarting Apache...OK
Created new site monitoring with version 1.6.0p20.cre.
The site can be started with omd start monitoring.
The default web UI is available at http://your_ubuntu_server/monitoring/
The admin user for the web applications is cmkadmin with password: your-default-password
(It can be changed with 'htpasswd -m ~/etc/htpasswd cmkadmin' as site user.)
Please do a su - monitoring for administration of this site.
在此输出中,突出显示了用于访问我们的监控界面的 URL 地址、默认用户名和密码。实例现已创建,但仍需要启动。要启动实例,请键入:
- sudo omd start monitoring
现在所有必要的工具和服务将立即启动。最后,我们将看到一个输出,验证我们所有的服务都已成功启动:
OutputStarting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...OK
Starting apache...OK
Initializing Crontab...OK
实例已启动并正在运行。
要访问 Checkmk 实例,请在 Web 浏览器中打开。系统将提示您输入密码。使用预先打印在屏幕上的默认凭据;我们稍后将更改这些默认值。http://your_ubuntu_server_ip/monitoring/
Checkmk 屏幕打开时带有一个仪表板,该仪表板在列表中显示我们所有的服务和服务器状态,并使用类似于地球的实用图形。安装后这些都是空的,但我们很快就会让它显示我们的服务和系统的状态。
在下一步中,我们将更改默认密码以使用此界面保护站点。
第 4 步 – 更改您的管理密码
在安装过程中,Checkmk 会为cmkadmin
管理用户生成一个随机密码。此密码应在安装时更改,因此它通常很短且不是很安全。我们可以通过 Web 界面更改此设置。
首先,从左侧的WATO – 配置菜单打开用户页面。该列表将显示当前有权访问 Checkmk 站点的所有用户。在全新安装时,它只会列出两个用户。第一个,,旨在与自动化工具一起使用;第二个是我们用来登录网站的用户。automation
cmkadmin
单击cmkadmin
用户旁边的铅笔图标以更改其详细信息,包括密码。
更新密码,添加管理员电子邮件,并进行任何其他所需的更改。
保存更改后,我们将被要求使用我们的新凭据再次登录。这样做并返回仪表板,在那里我们还必须做一件事来完全应用我们的新配置。
再次从左侧的WATO – 配置菜单打开用户页面。左上角标记为1 Change的橙色按钮告诉我们我们对 Checkmk 的配置进行了一些更改,需要保存并激活它们。每次我们更改监控系统的配置时都会发生这种情况,而不仅仅是在编辑用户凭据之后。要保存和激活挂起的更改,我们必须单击此按钮并同意使用以下屏幕上的“激活受影响”选项激活列出的更改。
激活更改后,新用户的数据将写入配置文件,并将被所有系统组件使用。Checkmk 自动负责通知各个监控系统组件,在必要时重新加载它们,并管理所有需要的配置文件。
Checkmk 安装现在可以使用了。在下一步中,我们将第一台主机添加到我们的监控系统中。
步骤 5 — 监控第一台主机
我们现在准备监控第一台主机。为此,我们将首先安装check-mk-agent
在 Ubuntu 服务器上。然后,我们将使用 限制对监控数据的访问xinetd
。
Checkmk 安装的组件负责接收、存储和呈现监控信息。他们不提供信息本身。
为了收集实际数据,我们将使用Checkmk 代理。Checkmk 代理专为这项工作而设计,可以立即监控所有重要的系统组件,并将该信息报告回 Checkmk 实例。
安装代理
我们将监控的第一台主机将是your_ubuntu_server
——我们在其上安装了 Checkmk 实例本身的服务器。
首先,我们必须安装 Checkmk 代理。所有主要发行版(包括 Ubuntu)的软件包都可以直接从 Web 界面获得。从左侧的WATO – 配置菜单打开监控代理页面。您将在标记为Packaged agents的第一部分下看到包含最流行软件包的可用代理下载。
该软件包适用于基于 Debian 的发行版,包括 Ubuntu。从 Web 浏览器复制该包的下载链接,然后使用该地址下载该包:check-mk-agent_1.6.0p20-1_all.deb
- wget http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent_1.6.0p20-1_all.deb
下载后,安装包:
- apt install -y ./check-mk-agent_1.6.0p20-1_all.deb
现在验证代理安装:
- check_mk_agent
该命令将输出一个很长的文本,看起来像胡言乱语,但将有关系统的所有重要信息集中在一个地方:
Output<<<check_mk>>>
Version: 1.6.0p20
AgentOS: linux
. . .
<<<job>>>
<<<local>>>
Checkmk 使用此命令的输出从受监控的主机收集状态数据。现在,我们将使用 限制对监控数据的访问xinetd
。
使用 xinetd 限制对监控数据的访问
默认情况下,check_mk_agent
使用 xinetd 提供数据,这是一种在访问某个网络端口时输出数据的机制。这意味着我们可以check_mk_agent
通过使用 telnet 端口6556
(Checkmk 的默认端口)从互联网上的任何其他计算机访问 ,除非我们的防火墙配置不允许它。
向 Internet 上的任何人发布有关服务器的重要信息并不是一个好的安全策略。我们应该只允许运行 Checkmk 并在我们监督下的主机访问这些数据,以便只有我们的监控系统可以收集它。
如果您遵循初始服务器设置教程,包括设置防火墙的步骤,则默认情况下会阻止对 Checkmk 代理的访问。但是,直接在服务配置中强制执行这些访问限制是一种很好的做法,而不仅仅是依靠防火墙来保护它。
为了限制对代理数据的访问,我们必须编辑位于/etc/xinetd.d/check_mk
. 在您喜欢的编辑器中打开配置文件。要使用 nano,请键入:
- sudo nano /etc/xinetd.d/check_mk
找到此部分:
. . .
# configure the IP address(es) of your Nagios server here:
#only_from = 127.0.0.1 10.0.20.1 10.0.20.2
. . .
该only_from
设置负责限制对某些 IP 地址的访问。因为我们现在正在监控运行 Checkmk 的同一台服务器,所以只允许localhost
连接是可以的。取消注释并将配置设置更新为:
. . .
# configure the IP address(es) of your Nagios server here:
only_from = 127.0.0.1
. . .
保存并退出文件。
xinetd 守护进程必须重新启动才能进行更改。现在这样做:
- sudo systemctl restart xinetd
现在我们的代理已启动并运行,并被限制为仅接受本地连接。我们可以继续使用 Checkmk 为该主机配置监控。
在 Checkmk Web 界面中配置主机
首先,要添加要监控的新主机,我们必须转到左侧WATO – 配置菜单中的主机菜单。从这里单击Create new host。我们将被要求提供有关主机的一些信息。
该主机名是Checkmk将用于监测熟悉的名字。它可能是一个完全限定的域名,但不是必需的。在此示例中,我们将命名 host monitoring
,就像 Checkmk 实例本身的名称一样。因为monitoring
无法解析到我们的 IP 地址,所以我们还必须提供我们服务器的 IP 地址。由于我们正在监视本地主机,因此 IP 将只是127.0.0.1
. 选中IPv4 地址框以启用手动 IP 输入并在文本字段中输入值。
Data Sources部分的默认配置依赖Checkmk代理提供监控数据,很好。的网络段设置用于表示远程网络上,其特征在于较高的预期等待时间不是故障的标志主机。由于这是本地主机,因此默认设置也很好。
要保存主机并配置将监视哪些服务,请单击保存并转到服务按钮。
Checkmk 会做一个自动盘点。这意味着它将收集代理的输出并对其进行解密以了解它可以监控的服务类型。所有可用的监控服务都将在列表中,包括 CPU 负载、内存使用和磁盘上的可用空间。
要启用对所有已发现服务的监控,我们必须单击“未确定的服务(当前未监控)”部分下的“监控”按钮。这将刷新页面,但现在所有服务都将列在“受监控的服务”部分下,通知我们它们确实受到监控。
与更改我们的用户密码时一样,这些新更改必须在生效之前保存并激活。按2 个更改按钮并使用激活受影响的按钮接受更改。之后,主机监控将启动并运行。
现在您已准备好处理您的服务器数据。使用左侧的概览/主概览菜单项查看主仪表板。
使用监控数据
现在让我们使用左侧的概览/主概览菜单项查看主仪表板:
地球球体现在是完全绿色的,并且表格显示一个主机没有问题。我们可以在Hosts/All hosts视图(使用左侧的菜单)中看到完整的主机列表,该列表现在由单个主机组成。
在那里,我们将看到有多少服务运行状况良好(以绿色显示)、有多少服务失败以及有多少服务等待检查。单击主机名后,我们将能够看到所有服务的列表及其完整状态及其Perf-O-Meters。Perf-O-Meter显示了与 Checkmk 认为良好的健康状况相关的单个服务的性能。
所有返回图形化数据的服务都在其名称旁边显示一个图形图标。我们可以使用该图标来访问与服务相关的图表。由于主机监控是新鲜的,图表上几乎没有任何内容——但一段时间后,图表将提供有关我们的服务性能如何随时间变化的有价值的信息。
当这些服务中的任何一个失败或恢复时,信息将显示在仪表板上。对于失败的服务,将显示红色错误,并且该问题也将在地球图上可见。
恢复后,一切都将以绿色显示为正常工作,但右侧的事件日志将包含有关过去故障的信息。
现在我们已经稍微探索了仪表板,让我们向我们的监控实例添加第二个主机。
步骤 6 — 监控第二个 CentOS 主机
当您有多个主机时,监控变得非常有用。我们现在将第二个服务器添加到我们的 Checkmk 实例,这次运行 CentOS 8。
与我们的 Ubuntu 服务器一样,安装 Checkmk 代理是在 CentOS 上收集监控数据所必需的。但是,这一次,我们将需要rpm
来自Web 界面中的Monitoring Agents页面的一个包,称为.check-mk-agent-1.6.0p20-1.noarch.rpm
但是,首先我们必须安装xinetd
,默认情况下在 CentOS 安装中不可用。Xinetd
我们会记得,它是一个守护进程,负责使 提供的监控数据通过check_mk_agent
网络可用。
在您的 CentOS 服务器上,首先安装xinetd
:
- sudo dnf install -y xinetd
现在我们可以下载并安装 CentOS 服务器所需的监控代理包:
- sudo dnf install -y http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent-1.6.0p20-1.noarch.rpm
和以前一样,我们可以通过执行check_mk_agent
以下命令来验证代理是否正常工作:
- sudo check_mk_agent
输出将类似于来自 Ubuntu 服务器的输出。现在我们将限制对代理的访问。
限制访问
这次我们不会监控本地主机,因此xinetd
必须允许来自安装了 Checkmk 的 Ubuntu 服务器的连接来收集数据。为此,请首先打开您的配置文件:
- sudo vi /etc/xinetd.d/check_mk
在这里,您将看到check_mk
服务的配置,指定如何通过xinetd
守护程序访问 Checkmk 代理。找到以下两行注释:
. . .
# configure the IP address(es) of your Nagios server here:
#only_from = 127.0.0.1 10.0.20.1 10.0.20.2
. . .
现在取消注释第二行并将本地 IP 地址替换为your_ubuntu_server_ip
:
. . .
# configure the IP address(es) of your Nagios server here:
only_from = your_ubuntu_server_ip
. . .
通过键入:x
和保存并退出文件ENTER
。xinetd
使用以下命令重新启动服务:
- sudo systemctl restart xinetd
如果您按照初始服务器设置教程配置了本地防火墙,则还需要调整防火墙设置。如果不这样做,将不允许连接到 Checkmk 代理。为此,请执行:
- sudo firewall-cmd --add-port=6556/tcp --permanent
这将允许传入 TCP 流量到达 Checkmk 使用的端口 6556。重新加载防火墙后,配置将更新:
- sudo firewall-cmd --reload
注意:您可以按照如何在 CentOS 8 上使用 firewalld 设置防火墙指南来了解如何微调防火墙设置。
我们现在可以继续配置 Checkmk 来监控我们的 CentOS 8 主机。
在 Checkmk 中配置新主机
要将其他主机添加到 Checkmk,我们像以前一样使用Hosts菜单。这次我们将命名主机centos
,配置它的 IP 地址,并在Networking Segment选择框下选择WAN(高延迟),因为主机在另一个网络上。如果我们跳过这一点并将其保留为本地,Checkmk 会很快提醒我们主机已关闭,因为它期望它比通过 Internet 更快地响应代理查询。
Click Save & go to services, which will show services available for monitoring on the CentOS server. The list will be very similar to the one from the first host. Again, this time we also must click Monitor and then activate the changes using the orange button on the top left corner.
After activating the changes, we can verify that the host is monitored on the All hosts page. Go there. Two hosts, monitoring
and centos
, will now be visible.
You are now monitoring an Ubuntu server and a CentOS server with Checkmk. It is possible to monitor even more hosts. In fact, there is no upper limit other than server performance, which should not be a problem until your hosts number in the hundreds. Moreover, the procedure is the same for any other host. Checkmk agents in deb
and rpm
packages work on Ubuntu, CentOS, and the majority of other Linux distributions.
Conclusion
In this guide we set up two servers with two different Linux distributions: Ubuntu and CentOS. We then installed and configured Checkmk to monitor both servers, and explored Checkmk’s powerful web interface.
Checkmk 允许轻松设置完整且多功能的监控系统,它将手动配置的所有艰苦工作打包到一个易于使用的 Web 界面中,该界面充满选项和功能。使用这些工具可以监控多个主机;为问题设置电子邮件、短信或推送通知;为更多服务设置额外检查;监控可访问性和性能等。
要了解有关 Checkmk 的更多信息,请务必访问官方文档。