暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[译文]使用 Nagios 和 Checkmk 监控 PostgreSQL

原创 Hamid Akhtar 2021-06-23
1523

维护高性能数据库的一个关键方面是持续监控系统资源,因为系统上任何地方的任何问题都可能导致停机。有很多监控选项,所以重新发明轮子没有多大意义。为此,我选择了几个易于部署、可定制的选项,并且可以为我们提供有关 PostgreSQL 系统运行状况的所有相关信息。

本博客将重点介绍为 PostgreSQL 监控设置 Nagios,然后继续使用 Checkmk 进行增强。

监测方法

当我们谈论监控时,其中的一个关键部分是规划阶段。需要根据要监控的系统、可用资源和响应时间做出关键决策。

某些资源消耗可能是短暂的,而有些则可能并非如此。考虑一个在短时间内大量涉及 CPU 的查询,而不是一个随时间增长的表,现在导致填充磁盘上的所有可用空间。同样,有些问题可能需要 DBA 或系统管理员干预,而在某些情况下可能需要额外的硬件资源;例如,磁盘空间不足。

因此,规划资源监控,同时保持这些指标的正确性:

  • 警告阈值,
  • 关键通知阈值,
  • 资源要求,
  • 响应时间。

让我们来看看 Linux 上可用的一些易于部署的监控选项。本博客重点介绍在 RHEL/CentOS 7 系统上设置这些。

Nagios

Nagios可以加以不同意的发音,它还可以监控应用程序、服务、主机资源和硬件。这个开源项目实际上更名为 Nagios Core,但是,它仍然通常被称为 Nagios。使用 GPL 2.0 版许可证可在 git 上获得源代码。

Checkmk(校验码)

Checkmk 有多个版本,但是,我们只关注 Checkmk 原始版本;CRE,因为它是免费且 100% 开源的。Checkmk 通过提供更好的界面和许多插件来增强 Nagios,这些插件可以帮助更详细地监控系统和服务,而不会产生任何显着的开销。

设置 Nagios

设置和配置将在 RHEL/CentOS 7 的上下文中进行。为简单起见,我们将在同一系统上托管 nagios 和设置监控。如果您在 docker 环境中运行它,请记住以增强的权限运行它以允许 systemd 服务运行。

安装和配置 Nagios

以下命令可能会有所帮助。它将 docker 的 80 端口重定向到主机端口 8080:

docker run -t -d -u 0:0 --cap-add=NET_ADMIN -p 8080:80 --privileged=true centos:7 /usr/sbin/init

以下是安装步骤:

  1. 通过 /etc/selinux 下的配置文件或通过“setenforce 0”命令(如果可用)将 selinux 设置为许可模式。
  2. 安装 EPEL yum 存储库
  3. 安装 Nagios 及其插件
setenforce 0
yum install -y epel-release
yum install -y nagios nagios-plugins-all nagios-plugins-nrpe nrpe

安装完这些包及其依赖项后,是时候配置 Nagios 了。

  • 为 nagiosadmin 用户设置密码
  • 启用服务
  • 启动服务
htpasswd -c /etc/nagios/passwd nagiosadmin

systemctl enable httpd nagios nrpe

systemctl start httpd

systemctl start nagios

systemctl start nrpe

完成这些步骤后,Nagios 启动并运行,可以通过浏览器访问:http://localhost/nagios/或在您的主机上(如果您正在运行 docker)访问:http://localhost:8080/nagios/

如果单击左侧菜单中的“Hosts”链接,您可以看到它已经在监控 localhost。现在 Nagios 可以运行了,让我们配置它来监控 PostgreSQL。

安装 PostgreSQL

我正在以 root 用户运行这些命令。但是,对于具有适当权限的非 root 用户,请在这些命令前加上“sudo”。

# Install the repository RPM:
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL version 13:
yum install -y postgresql13-server

# Initialize the database, enable automatic start, and start the service:
/usr/pgsql-13/bin/postgresql-13-setup initdb
systemctl enable postgresql-13
systemctl start postgresql-13

服务器现已启动并正在运行。您可以通过“systemctl status postgresql-13”进行检查。

为 PostgreSQL 监控配置 Nagios

在文件 /etc/nagios/nagios.cfg 中添加以下行:“cfg_dir=/etc/nagios/conf.d”

让我们创建包含我们的配置文件的文件夹。Nagios 将加载此文件夹中以“.cfg”结尾的任何文件。

mkdir -p /etc/nagios/conf.d

让我们创建 PostgreSQL 监控配置文件:/etc/nagios/conf.d/postgresql.cfg

define hostgroup {
    hostgroup_name pg-servers
    alias PostgreSQL Servers Status
}

define host {
    use      generic-host
    host_name    pg-1
    alias       PostgreSQL Server 1
    address    127.0.0.1
    hostgroups    pg-servers
    max_check_attempts  10
    check_command  check-host-alive
}

define service {
    use        generic-service
    hostgroup_name    pg-servers
    service_description    Current Load
    check_command    check_nrpe_1arg!check_load
}

define service {
    use        generic-service
    hostgroup_name    pg-servers
    service_description    PostgreSQL Status
    check_command    check_pgsql
}

define command {
    command_name check_nrpe_1arg
    command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

define command {
    command_name check_pgsql
    command_line $USER1$/check_pgsql -H '$HOSTADDRESS$' '$ARG1$'
}

现在是重启/重新加载 Nagios 服务的时候了:“systemctl reload nagios”

瞧,一切都完成了!咳咳,真的不是。我们还没有真正完成 PostgreSQL 配置以允许“nagios”用户访问 PostgreSQL 数据库。

为 Nagios 配置 PostgreSQL

在这种情况下,允许“nagios”用户访问数据库是一个非常简单的两步过程。让我们创建数据库用户“nagios”并授予其访问数据库的权限。

创建数据库用户:“/usr/pgsql-13/bin/createuser nagios”

在“pg_hba.conf”中添加条目:
“host all nagios 127.0.0.1/32 trust”

请注意,此条目必须位于为“nagios”用户定义 IPv4 连接的任何其他配置行之前。

重启 PostgreSQL 13 服务:“systemctl restart postgresql-13”。现在,一切都完成了。您可以通过 Nagios Web 界面监控服务的状态。

图片.png
Nagios 监控界面

设置 Checkmk

虽然 Nagios 提供了一个非常基本的界面,但可以通过设置 Checkmk 对其进行显着改进。Checkmk 提供了详细的文档,但是,有几个步骤我遇到了问题,所以为了方便起见,我在这里分享这些。

您可以为 Redhat/CentOS 7 获取最新的 Checkmk Raw Edition (CRE) 安装 RPM 包:

https://checkmk.com/download?edition=cre&version=stable&dist=redhat&os=el7

您可以通过 yum 命令安装 RPM 包:

yum install -y https://download.checkmk.com/checkmk/2.0.0/check-mk-raw-2.0.0-el7-38.x86_64.rpm

安装软件包并且“omd”命令现在可用后,让我们创建监控站点:

omd create postgresql_mon
omd start postgresql_mon

接下来,我们需要设置代理。这是我遇到问题的地方。您可以通过 Checkmk URL 获取代理列表,后跟“/check_mk/agents/”:
“http://localhost:8080/postgresql_mon/check_mk/agents/”

您可以选择 noarch.rpm 包并安装它。接下来,让我们通过浏览到 Checkmk 的 PostgreSQL 插件:
“http://localhost:8080/postgresql_mon/check_mk/agents/plugins/”

您必须下载所需的插件并授予执行权限:“/usr/lib/check_mk_agent/plugins”。

完成所有这些后,您现在可以通过 Checkmk 浏览器界面继续设置主机。有关更多详细信息,请参阅此处提供的文档:https : //docs.checkmk.com/

图片.png
Checkmk 监控接口

结语

这篇博客绝不是监控 PostgreSQL 的完整设置,但是,它为您提供了一个基本的入门设置。

Checkmk 增强了 nagios Web 界面,并通过其插件显着增强了默认的 PostgreSQL 监控,但是,您可能还想探索“check_postgres”工具。它是一个 perl 脚本,专门用于通过 Nagios、MRTG 或自定义监控脚本来监控 PostgreSQL。check_postgres 由 Burado 提供。它有大量的监控选项,可以在以下位置检查:https : //bucardo.org/check_postgres/check_postgres.pl.html

作者:Hamid Akhtar
Hamid 拥有超过 19 年的专业软件开发经验,现在已经参与 PostgreSQL 超过 8 年。他是 EnterpriseDB 的一员,负责管理 Windows、Linux 和 MacOS 的 PostgreSQL 官方安装程序。Hamid 最近加入 HighGo Software Inc.,担任高级 DevOps 和数据库架构师。

图片.png

文章来源:https://www.highgo.ca/2021/03/15/monitoring-postgresql-with-nagios-and-checkmk/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论