如何在Ubuntu18.04上使用Checkmk监控服务器运行状况
作为 Write for DOnations 计划的一部分,作者选择了 Open Internet/Free Speech Fund 来接受捐赠。
介绍
作为系统管理员,最佳实践是了解您的基础架构和服务的当前状态。 理想情况下,您希望在用户之前注意到故障磁盘或应用程序停机时间。 Checkmk 等监控工具可以帮助管理员检测这些问题并维护健康的服务器。
通常,监控软件可以跟踪服务器的硬件、正常运行时间和服务状态,并且可以在出现问题时发出警报。 在一个非常基本的场景中,监控系统会在任何服务出现故障时提醒您。 在一种更强大的情况下,通知会在出现任何可疑迹象后不久发出,例如内存使用量增加或 TCP 连接数量异常。
有许多可用的监控解决方案提供不同程度的复杂性和功能集,包括免费的和商业的。 在许多情况下,这些工具的安装、配置和管理既困难又耗时。
然而,Checkmk 是一种既强大又易于安装的监控解决方案。 它是一个独立的软件包,将 Nagios(一种流行的开源警报服务) 与用于收集、监控和绘制数据的附加组件相结合。 它还带有 Checkmk 的 Web 界面——一个解决 Nagios 的许多缺点的综合工具。 它为许多 Linux 发行版提供了一个用户友好的仪表板、一个功能齐全的通知系统和一个易于安装的监控代理存储库。 如果没有 Checkmk 的 Web 界面,我们将不得不为不同的任务使用不同的视图,并且如果不进行大量文件修改,就不可能配置所有这些功能。
在本指南中,我们将在 Ubuntu 18.04 服务器上设置 Checkmk 并监控两个单独的主机。 我们将监控 Ubuntu 服务器本身以及单独的 CentOS 7 服务器,但我们可以使用相同的方法将任意数量的额外主机添加到我们的监控配置中。
先决条件
- 一台 Ubuntu 18.04 服务器,具有具有 sudo 权限的常规非 root 用户。 您可以按照初始服务器设置教程学习如何准备服务器。
- 一台具有 sudo 权限的普通非 root 用户的 CentOS 7 服务器。 要准备这个服务器,你可以按照这个初始服务器设置教程。
第 1 步 — 在 Ubuntu 上安装 Checkmk
为了使用我们的监控站点,我们首先必须在 Ubuntu 服务器上安装 Checkmk。 这将为我们提供所需的所有工具。 Checkmk 提供了官方的即用型 Ubuntu 软件包文件,我们可以使用它来安装软件包。
首先,让我们更新包列表,以便我们拥有最新版本的存储库列表:
sudo apt update
要浏览软件包,我们可以到 软件包列表站点 。 可以在页面菜单中选择 Ubuntu 18.04 等。
现在下载软件包:
wget https://checkmk.com/support/1.6.0p8/check-mk-raw-1.6.0p8_0.bionic_amd64.deb
然后安装新下载的包:
sudo apt install -y ./check-mk-raw-1.6.0p8_0.bionic_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.0p8.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-Configuration菜单打开Users页面。 该列表将显示当前有权访问 Checkmk 站点的所有用户。 在全新安装中,它将仅列出两个用户。 第一个,automation
,旨在与自动化工具一起使用; 第二个是我们用来登录网站的cmkadmin
用户。
单击 cmkadmin
用户旁边的铅笔图标以更改其详细信息,包括密码。
更新密码,添加管理员电子邮件,并进行任何其他所需的更改。
保存更改后,我们将被要求使用新凭据再次登录。 这样做并返回仪表板,我们还必须做一件事才能完全应用我们的新配置。
再次从左侧的 WATO - Configuration 菜单打开 Users 页面。 左上角标记为 1 Change 的橙色按钮告诉我们,我们对 Checkmk 的配置进行了一些更改,需要保存并激活它们。 每次我们更改监控系统的配置时都会发生这种情况,而不仅仅是在编辑用户凭据之后。 要保存和激活未决更改,我们必须单击此按钮并同意使用以下屏幕上的 激活受影响的 选项来激活列出的更改。
激活更改后,新用户的数据将写入配置文件,并将被系统的所有组件使用。 Checkmk 自动负责通知各个监控系统组件,在必要时重新加载它们,并管理所有需要的配置文件。
Checkmk 安装现在可以使用了。 在下一步中,我们会将第一台主机添加到我们的监控系统中。
第 5 步 — 监控第一台主机
我们现在准备监控第一台主机。 为此,我们将首先在 Ubuntu 服务器上安装 check-mk-agent
。 然后,我们将使用 xinetd
限制对监控数据的访问。
随 Checkmk 安装的组件负责接收、存储和呈现监控信息。 他们不提供信息本身。
为了收集实际数据,我们将使用 Checkmk 代理 。 Checkmk 代理专为这项工作而设计,能够一次监控所有重要的系统组件并将该信息报告回 Checkmk 实例。
安装代理
我们将监控的第一台主机将是 your_ubuntu_server
——我们在其上安装了 Checkmk 实例本身的服务器。
首先,我们必须安装 Checkmk 代理。 所有主要发行版的软件包,包括 Ubuntu,都可以直接从 Web 界面获得。 从左侧的 WATO - 配置 菜单中打开 Monitoring Agents 页面。 您将在标有 Packaged agent 的第一部分下看到可用的代理下载以及最流行的软件包。
软件包 check-mk-agent_1.6.0p8-1_all.deb
是适用于基于 Debian 的发行版的软件包,包括 Ubuntu。 从 Web 浏览器复制该软件包的下载链接,并使用该地址下载该软件包。
wget http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent_1.6.0p8-1_all.deb
下载后,安装包:
apt install -y ./check-mk-agent_1.6.0p8-1_all.deb
现在验证代理是否已成功安装:
check_mk_agent
该命令将输出一个很长的文本,看起来像乱码,但将有关系统的所有重要信息组合在一个地方。
Output<<<check_mk>>> Version: 1.6.0p8 AgentOS: linux . . . ["monitoring"] <<<job>>> <<<local>>>
Checkmk 使用此命令的输出从受监控的主机收集状态数据。 现在,我们将使用 xinetd
限制对监控数据的访问。
使用 xinetd 限制对监控数据的访问
默认情况下,来自 check_mk_agent
的数据使用 xinetd 提供服务,xinetd 是一种在访问某个网络端口时在某个网络端口上输出数据的机制。 这意味着我们可以通过使用 telnet 从 Internet 上的任何其他计算机端口 6556
(Checkmk 的默认端口)访问 check_mk_agent
,除非我们的防火墙配置不允许。
将有关服务器的重要信息发布给 Internet 上的任何人都不是一个好的安全策略。 我们应该只允许运行 Checkmk 并在我们监督下的主机访问这些数据,以便只有我们的监控系统可以收集它。
如果您已按照 初始服务器设置教程 包括设置防火墙的步骤进行操作,则默认情况下会阻止访问 Checkmk 代理。 然而,直接在服务配置中强制实施这些访问限制而不是仅仅依靠防火墙来保护它是一种很好的做法。
要限制对代理数据的访问,我们必须在 /etc/xinetd.d/check_mk
编辑配置文件。 在您喜欢的编辑器中打开配置文件。 要使用 nano,请键入:
sudo nano /etc/xinetd.d/check_mk
找到此部分:
/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
连接是可以的。 取消注释并将配置设置更新为:
/etc/xinetd.d/check_mk
. . . # 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 - 配置 菜单中的 Hosts 菜单。 从这里单击 创建新主机 。 我们将被要求提供有关主机的一些信息。
Hostname 是 Checkmk 将用于监控的熟悉名称。 它可能是完全限定的域名,但不是必需的。 在本例中,我们将主机命名为 monitoring
,就像 Checkmk 实例本身的名称一样。 因为 monitoring
无法解析到我们的 IP 地址,所以我们还必须提供我们服务器的 IP 地址。 由于我们正在监控本地主机,因此 IP 将简单地为 127.0.0.1
。 选中 IPv4 地址 框以启用手动 IP 输入并在文本字段中输入值。
Data Sources 部分的默认配置依赖 Checkmk 代理来提供监控数据,这很好。 Networking Segment 设置用于表示远程网络上的主机,其特点是预期延迟较高,但并非故障迹象。 由于这是本地主机,因此默认设置也可以。
要保存主机并配置要监控的服务,请单击保存并转到服务按钮。
Checkmk 将进行自动清点。 这意味着它将收集代理的输出并对其进行解密,以了解它可以监控哪些类型的服务。 所有可用的监控服务都将在列表中,包括 CPU 负载、内存使用和磁盘上的可用空间。
要启用对所有发现的服务的监控,我们必须单击 未决定的服务(当前未监控) 部分下的 Monitor 按钮。 这将刷新页面,但现在所有服务都将列在 Monitored services 部分下,通知我们它们确实受到了监控。
与更改我们的用户密码时一样,这些新更改必须在生效之前保存并激活。 按下 2 更改 按钮并使用 激活受影响的 按钮接受更改。 之后,主机监控将启动并运行。
现在您已准备好使用您的服务器数据。 使用左侧的 Overview/Main Overview 菜单项查看主仪表板。
使用监控数据
现在让我们使用左侧的 Overview/Main Overview 菜单项来看看主仪表板:
地球球体现在是完全绿色的,表格显示一个主机没有问题。 我们可以在 Hosts/All hosts 视图(使用左侧的菜单)中看到完整的主机列表,该列表现在由单个主机组成。
在那里,我们将看到有多少服务处于良好状态(以绿色显示),有多少失败了,有多少有待检查。 单击主机名后,我们将能够看到所有服务的列表及其完整状态及其 Perf-O-Meters。 Perf-O-Meter 显示单个服务相对于 Checkmk 认为健康状况良好的性能。
所有返回图形数据的服务都会在其名称旁边显示一个图形图标。 我们可以使用该图标来访问与服务关联的图形。 由于主机监控是新鲜的,图表上几乎没有任何内容——但一段时间后,图表将提供有关我们的服务性能如何随时间变化的有价值信息。
当这些服务中的任何一个出现故障或恢复时,信息将显示在仪表板上。 对于失败的服务,将显示一个红色错误,并且该问题也将在地球图上可见。
恢复后,一切都会以绿色显示为正常工作,但右侧的事件日志将包含有关过去故障的信息。
现在我们已经稍微探索了仪表板,让我们向我们的监控实例添加第二台主机。
第 6 步 — 监控第二台 CentOS 主机
当您有多个主机时,监控变得非常有用。 现在,我们将向 Checkmk 实例添加第二台服务器,这次运行的是 CentOS 7。
与我们的 Ubuntu 服务器一样,安装 Checkmk 代理对于在 CentOS 上收集监控数据是必要的。 但是,这一次,我们需要来自 Web 界面的 Monitoring Agents 页面的 rpm
包,称为 check-mk-agent-1.6.0p8-1.noarch.rpm
。
但是,首先,我们必须安装 xinetd
,默认情况下,它在 CentOS 安装中不可用。 我们会记住,Xinetd
是一个守护进程,负责使 check_mk_agent
提供的监控数据在网络上可用。
在您的 CentOS 服务器上,首先安装 xinetd
:
sudo yum install -y xinetd
现在我们可以下载并安装我们的 CentOS 服务器所需的监控代理包:
sudo yum install -y http://your_ubuntu_server_ip/monitoring/check_mk/agents/check-mk-agent-1.6.0p8-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 代理。 找到以下两个注释行:
/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 . . .
现在取消注释第二行并将本地 IP 地址替换为 your_ubuntu_server_ip
:
/etc/xinetd.d/check_mk
. . . # configure the IP address(es) of your Nagios server here: only_from = your_ubuntu_server_ip . . .
通过键入 :x
然后 ENTER
保存并退出文件。 使用以下命令重新启动 xinetd
服务:
sudo systemctl restart xinetd
我们现在可以继续配置 Checkmk 来监控我们的 CentOS 7 主机。
在 Checkmk 中配置新主机
要向 Checkmk 添加其他主机,我们像以前一样使用 Hosts 菜单。 这次我们将主机命名为centos
,配置其IP地址,在Networking Segment选择框下选择WAN (high-latency),因为主机是在另一个网络上。 如果我们跳过它并将其保留为本地,Checkmk 会很快提醒我们主机已关闭,因为它希望它比互联网更快地响应代理查询。
点击保存并转到服务 ,它将显示可在 CentOS 服务器上监控的服务。 该列表将与来自第一个主机的列表非常相似。 同样,这一次我们还必须单击 Monitor,然后使用左上角的橙色按钮激活更改。
激活更改后,我们可以在 All hosts 页面上验证主机是否受到监控。 去那里。 现在可以看到两个主机 monitoring
和 centos
。
您现在正在使用 Checkmk 监控 Ubuntu 服务器和 CentOS 服务器。 可以监控更多的主机。 事实上,除了服务器性能没有上限,直到你的主机数在数百个之前,这应该不是问题。 此外,该过程对于任何其他主机都是相同的。 deb
和 rpm
软件包中的 Checkmk 代理可在 Ubuntu、CentOS 和大多数其他 Linux 发行版上运行。
结论
在本指南中,我们使用两个不同的 Linux 发行版设置了两台服务器:Ubuntu 和 CentOS。 然后我们安装并配置 Checkmk 来监控两台服务器,并探索 Checkmk 强大的 Web 界面。
Checkmk 允许轻松设置一个完整且多功能的监控系统,它将手动配置的所有艰苦工作打包到一个易于使用的 Web 界面中,其中包含多个选项和功能。 使用这些工具可以监控多个主机; 针对问题设置电子邮件、短信或推送通知; 为更多服务设置额外检查; 监控可访问性和性能等。
要了解有关 Checkmk 的更多信息,请务必访问 官方文档 。