标签 Nagios 下的文章

Nagios 是一个自由开源的网络和警报引擎,它用于监控各种设备,例如网络设备和网络中的服务器。它支持 Linux 和 Windows,并提供了直观的 Web 界面,可让你轻松监控网络资源。经过专业配置后,它可以在服务器或网络设备下线或者故障时向你发出邮件警报。在本文中,我们说明了如何在 RHEL 8/CentOS 8 上安装和配置 Nagios Core。

Install-Nagios-Core-RHEL8-CentOS8

Nagios Core 的先决条件

在开始之前,请先检查并确保有以下各项:

  • RHEL 8/CentOS 8 环境
  • 能通过 SSH 访问该环境
  • 快速稳定的互联网连接

满足上述要求后,我们开始吧!

步骤 1:安装 LAMP

为了使 Nagios 能够按预期工作,你需要安装 LAMP 或其他 Web 软件,因为它们将在浏览器上运行。为此,请执行以下命令:

# dnf install httpd mariadb-server php-mysqlnd php-fpm

Install-LAMP-stack-CentOS8

你需要确保 Apache Web 服务器已启动并正在运行。为此,请使用以下命令启用并启动 Apache 服务器:

# systemctl start httpd
# systemctl enable httpd

Start-enable-httpd-centos8

检查 Apache 服务器运行状态:

# systemctl status httpd

Check-status-httpd-centos8

接下来,我们需要启用并启动 MariaDB 服务器,运行以下命令:

# systemctl start mariadb
# systemctl enable mariadb

Start-enable-MariaDB-CentOS8

要检查 MariaDB 状态,请运行:

# systemctl status mariadb

Check-MariaDB-status-CentOS8

另外,你可能会考虑加强或保护服务器,使其不容易受到未经授权的访问。要保护服务器,请运行以下命令:

# mysql_secure_installation

确保为你的 MySQL 实例设置一个强密码。对于后续提示,请输入 “Y” 并按回车。

Secure-MySQL-server-CentOS8

步骤 2:安装必需的软件包

除了安装 LAMP 外,还需要一些其他软件包来安装和正确配置 Nagios。因此,如下所示安装软件包:

# dnf install gcc glibc glibc-common wget gd gd-devel perl postfix

Install-requisite-packages-CentOS8

步骤 3:创建 Nagios 用户帐户

接下来,我们需要为 Nagios 用户创建一个用户帐户。为此,请运行以下命令:

# adduser nagios
# passwd nagios

Create-new-user-for-Nagios

现在,我们需要为 Nagios 创建一个组,并将 Nagios 用户添加到该组中。

# groupadd nagiosxi

现在添加 Nagios 用户到组中:

# usermod -aG nagiosxi nagios

另外,将 Apache 用户添加到 Nagios 组:

# usermod -aG nagiosxi apache

Add-Nagios-group-user

步骤 4:下载并安装 Nagios Core

现在,我们可以继续安装 Nagios Core。Nagios 4.4.5 的最新稳定版本于 2019 年 8 月 19 日发布。但首先,请从它的官方网站下载 Nagios tarball 文件。

要下载 Nagios Core,请首进入 /tmp 目录:

# cd /tmp

接下来下载 tarball 文件:

# wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.5.tar.gz

Download-Nagios-CentOS8

下载完 tarball 文件后,使用以下命令将其解压缩:

# tar -xvf nagios-4.4.5.tar.gz

接下来,进入未压缩的文件夹:

# cd nagios-4.4.5

按此顺序运行以下命令:

# ./configure --with-command-group=nagcmd
# make all
# make install
# make install-init
# make install-daemoninit
# make install-config
# make install-commandmode
# make install-exfoliation

要配置 Apache,请运行以下命令:

# make install-webconf

步骤 5:配置 Apache Web 服务器身份验证

接下来,我们将为用户 nagiosadmin 设置身份验证。请注意不要更改该用户名,否则,可能会要求你进一步的配置,这可能很繁琐。

要设置身份验证,请运行以下命令:

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Configure-Apache-webserver-authentication-CentOS8

系统将提示你输入 nagiosadmin 用户的密码。输入并按要求确认密码。在本教程结束时,你将使用该用户登录 Nagios。

为使更改生效,请重新启动 Web 服务器:

# systemctl restart httpd

步骤 6:下载并安装 Nagios 插件

插件可以扩展 Nagios 服务器的功能。它们将帮助你监控各种服务、网络设备和应用。要下载插件的 tarball 文件,请运行以下命令:

# wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

接下来,解压 tarball 文件并进入到未压缩的插件文件夹:

# tar -xvf nagios-plugins-2.2.1.tar.gz
# cd nagios-plugins-2.2.1

要安装插件,请编译源代码,如下所示:

# ./configure --with-nagios-user=nagios --with-nagios-group=nagiosxi
# make
# make install

步骤 7:验证和启动 Nagios

成功安装 Nagios 插件后,验证 Nagios 配置以确保一切良好,并且配置中没有错误:

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Verify-Nagios-settings-CentOS8

接下来,启动 Nagios 并验证其状态:

# systemctl start nagios
# systemctl status nagios

Start-check-status-Nagios-CentOS8

如果系统中有防火墙,那么使用以下命令允许 ”80“ 端口:

# firewall-cmd --permanent --add-port=80/tcp# firewall-cmd --reload

步骤 8:通过 Web 浏览器访问 Nagios 面板

要访问 Nagios,请打开服务器的 IP 地址,如下所示:http://server-ip/nagios

这将出现一个弹出窗口,提示输入我们在步骤 5 创建的用户名和密码。输入凭据并点击“Sign In”。

Access-Nagios-via-web-browser-CentOS8

这将引导你到 Nagios 面板,如下所示:

Nagios-dashboard-CentOS8

我们终于成功地在 CentOS 8 / RHEL 8 上安装和配置了 Nagios Core。欢迎你的反馈。


via: https://www.linuxtechi.com/install-nagios-core-rhel-8-centos-8/

作者:James Kiarie 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

本文解释了 “ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。” 的原因及其解决方案。

ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。

check_mk 是一个帮你配置 nagios 监控服务器的工具。然后在配置其中一台机器时,我遇到了下面的错误:

ERROR Cannot fetch deployment URL via curl:Couldn't resolve host。The given remote host was not resolved。

该错误是在我使用下面命令尝试将该机器注册到监控服务器时发生的:

root@kerneltalks# /usr/bin/cmk-update-agent register -s monitor.kerneltalks.com -i master -H `hostname` -p http -U omdadmin -S ASFKWEFUNSHEFKG -v 

其中:

  • -s 指明监控服务器
  • -i 指定服务器上 Check\_MK 站点的名称
  • -H 指定 agent 所在的主机名
  • -p 为协议,可以是 http 或 https (默认为 https)
  • -U 允许下载 agent 的用户 ID
  • -S 为密码。用户的自动操作密码(当是自动用户时)

从错误中可以看出,命令无法解析监控服务器的 DNS 名称 monitor.kerneltalks.com

解决方案:

超级简单。检查 /etc/resolv.conf,确保你的 DNS 配置正确。如果还解决不了这个问题那么你可以直接在 /etc/hosts 中指明它的 IP。

root@kerneltalks# cat /etc/hosts
10.0.10.9 monitor.kerneltalks.com

这就搞定了。你现在可以成功注册了。

root@kerneltalks # /usr/bin/cmk-update-agent register -s monitor.kerneltalks.com -i master -H `hostname` -p http -U omdadmin -S ASFKWEFUNSHEFKG -v
Going to register agent at deployment server
Successfully registered agent for deployment.
You can now update your agent by running 'cmk-update-agent -v'
Saved your registration settings to /etc/cmk-update-agent.state.

另外,你也可以为 -s 直接指定 IP 地址,就没那么多事了!


via: https://kerneltalks.com/troubleshooting/check_mk-register-cannot-fetch-deployment-url-via-curl-error/

作者:kerneltalks 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Shinken 是一个用 Python 实现的开源的主机和网络监控框架,并与 Nagios like 兼容,它可以运行在所有支持 Python 程序的操作系统上,比如说 Linux、Unix 和 Windows。Shinken 是 Jean Gabes 为了验证一个新的 Nagios 架构思路而编写,但是这个想法被 Nagios 的作者拒绝后成为了一个独立的网络系统监视软件,并保持了与 Nagios 的兼容。

在这篇教程中,我将会描述如何从源代码编译安装 Shinken 和向监视系统中添加一台 Linux 主机。我将会以 Ubuntu 16.04 Xenial Xerus 操作系统来作为 Shinken 服务器和所监控的主机。

第一步 安装 Shinken 服务器

Shinken 是一个 Python 框架,我们可以通过 pip 安装或者从源码来安装它,在这一步中,我们将用源代码编译安装 Shinken。

在我们开始安装 Shinken 之前还需要完成几个步骤。

安装一些新的 Python 软件包并创建一个名为 shinken 的系统用户:

sudo apt-get install python-setuptools python-pip python-pycurl
useradd -m -s /bin/bash shinken

从 GitHub 仓库下载 Shinken 源代码:

git clone https://github.com/naparuba/shinken.git
cd shinken/

然后用以下命令安装 Shinken:

git checkout 2.4.3
python setup.py install

然后,为了得到更好的效果,我们还需要从 Ubuntu 软件库中安装 python-cherrypy3 软件包:

sudo apt-get install python-cherrypy3

到这里,Shinken 已经成功安装,接下来我们将 Shinken 添加到系统启动项并且启动它:

update-rc.d shinken defaults
systemctl start shinken

第二步 安装 Shinken Webui2

Webui2 是 Shinken 的 Web 界面(在 shinken.io 可以找到)。最简单的安装 Shinken webui2 的方法是使用shinken CLI 命令(必须作为 shinken 用户执行)。

切换到 shinken 用户:

su - shinken

初始化 shiken 配置文件,下面的命令将会创建一个新的配置文件 .shinken.ini

shinken --init

接下来用 shinken CLI 命令来安装 webui2

shinken install webui2

至此 webui2 已经安装好,但是我们还需要安装 MongoDB 和用 pip 来安装另一个 Python 软件包。在 root 下运行如下命令:

sudo apt-get install mongodb
pip install pymongo>=3.0.3 requests arrow bottle==0.12.8

接下来,切换到 shinken 目录下并且通过编辑 broker-master.cfg 文件来添加这个新的 webui2 模块:

cd /etc/shinken/brokers/
vim broker-master.cfg

在第 40 行添加一个模块选项:

modules     webui2

保存文件并且退出编辑器。

现在进入 contacts 目录下编辑 admin.cfg 来进行管理配置。

cd /etc/shinken/contacts/
vim admin.cfg

按照如下修改:

contact_name    admin       # Username 'admin'
password        yourpass    # Pass 'mypass'

保存和退出。

第三步 安装 Nagios 插件和 Shinken 软件包

在这一步中,我们将安装 Nagios 插件和一些 Perl 模块。然后从 shinken.io 安装其他的软件包来实现监视。

安装 Nagios 插件和安装 Perl 模块所需要的 cpanminus

sudo apt-get install nagios-plugins* cpanminus

cpanm 命令来安装 Perl 模块。

cpanm Net::SNMP
cpanm Time::HiRes
cpanm DBI

现在我们创建一个 utils.pm 文件的链接到 shinken 的目录,并且为 Log_File_Health 创建了一个新的日志目录 。

chmod u+s /usr/lib/nagios/plugins/check_icmp
ln -s /usr/lib/nagios/plugins/utils.pm /var/lib/shinken/libexec/
mkdir -p /var/log/rhosts/
touch /var/log/rhosts/remote-hosts.log

然后,从 shinken.io 安装 shinken 软件包 sshlinux-snmp 来监视 SSH 和 SNMP :

su - shinken
shinken install ssh
shinken install linux-snmp

第四步 添加一个 Linux 主机 host-one

我们将添加一个新的将被监控的 Linux 主机,IP 地址为 192.168.1.121,主机名为 host-one 的 Ubuntu 16.04。

连接到 host-one 主机:

ssh [email protected]

从 Ubuntu 软件库中安装 snmp 和snmpd 软件包:

sudo apt-get install snmp snmpd

然后,用 vim 编辑 snmpd.conf 配置文件:

vim /etc/snmp/snmpd.conf

注释掉第 15 行并取消注释第 17 行:

#agentAddress  udp:127.0.0.1:161
agentAddress udp:161,udp6:[::1]:161

注释掉第 51 和 53 行,然后加一行新的配置,如下:

#rocommunity mypass  default    -V systemonly
#rocommunity6 mypass  default   -V systemonly

rocommunity mypass

保存并退出。

现在用 systemctl 命令来启动 snmpd 服务:

systemctl start snmpd

在 shinken 服务器上通过在 hosts 文件夹下创建新的文件来定义一个新的主机:

cd /etc/shinken/hosts/
vim host-one.cfg

粘贴如下配置信息:

define host{
        use                 generic-host,linux-snmp,ssh
        contact_groups      admins
        host_name           host-one
        address             192.168.1.121
        _SNMPCOMMUNITY      mypass        # SNMP Pass Config on snmpd.conf
    }

保存并退出。

在 shinken 服务器上编辑 SNMP 配置文件。

vim /etc/shinken/resource.d/snmp.cfg

public 改为 mypass -必须和你在客户端 snmpd 配置文件中使用的密码相同:

$SNMPCOMMUNITYREAD$=mypass

保存并退出。

现在将服务端和客户端都重启:

reboot

现在 Linux 主机已经被成功地添加到 shinken 服务器中了。

第五步 访问 Shinken Webui2

在端口 7677 访问 Shinken webui2 (将 URL 中的 IP 替换成你自己的 IP 地址):

http://192.168.1.120:7767

用管理员用户和密码登录(你在 admin.cfg 文件中设置的)

Webui2 中的 Shinken 面板:

我们的两个服务器正在被 Shinken 监控:

列出所有被 linux-snmp 监控的服务:

所有主机和服务的状态信息:

第6步 Shinken 的常见问题

NTP 服务器相关的问题

当你得到如下的 NTP 错误提示

TimeSync - CRITICAL ( NTP CRITICAL: No response from the NTP server)
TimeSync - CRITICAL ( NTP CRITICAL: Offset unknown )

为了解决这个问题,在所有 Linux 主机上安装 ntp。

sudo apt-get install ntp ntpdate

编辑 ntp 配置文件:

vim /etc/ntp.conf

注释掉所有 pools 并替换为:

#pool 0.ubuntu.pool.ntp.org iburst
#pool 1.ubuntu.pool.ntp.org iburst
#pool 2.ubuntu.pool.ntp.org iburst
#pool 3.ubuntu.pool.ntp.org iburst

pool 0.id.pool.ntp.org
pool 1.asia.pool.ntp.org
pool 0.asia.pool.ntp.org

然后,在新的一行添加如下限制规则:

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict 192.168.1.120 #shinken server IP address
restrict ::1
NOTE: 192.168.1.120 is the Shinken server IP address.

保存并退出。

启动 ntp 并且检查 Shinken 面板。

ntpd

check\_netint.pl Not Found 问题

从 github 仓库下载源代码到 shinken 的库目录下:

cd /var/lib/shinken/libexec/
wget https://raw.githubusercontent.com/Sysnove/shinken-plugins/master/check_netint.pl
chmod +x check_netint.pl
chown shinken:shinken check_netint.pl

网络占用的问题

这是错误信息:

ERROR : Unknown interface eth\d+

检查你的网络接口并且编辑 linux-snmp 模版。

在我的 Ununtu 服务器,网卡是 “enp0s8”,而不是 eth0,所以我遇到了这个错误。

vim 编辑 linux-snmp 模版:

vim /etc/shinken/packs/linux-snmp/templates.cfg

在第 24 行添加网络接口信息:

_NET_IFACES         eth\d+|em\d+|enp0s8

保存并退出。


via: https://www.howtoforge.com/tutorial/server-monitoring-with-shinken-on-ubuntu-16-04/

作者:Muhammad Arul 译者:LinuxBars 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Save and exit.

Nagios内置了很多脚本来监控服务。本篇会使用其中一些来检查通用服务如MySql、Apache、DNS等等。

为了保证本篇集中在系统监控,我们不会在这里配置主机组或者模板,它们已经在 前面的教程中覆盖了,它们可以满足需要了。

在命令行中运行Nagios

通常建议在添加到Nagios前,先在命令行中运行Nagios服务检测脚本。它会给出执行是否成功以及脚本的输出将会看上去的样子。

这些脚本存储在 /etc/nagios-plugins/config/ ,可执行文件在 /usr/lib/nagios/plugins/。

下面就是该怎么做

root@nagios:~# cd /etc/nagios-plugins/config/

提供的脚本包含了语法帮助。示例包含了部分输出。

root@nagios:~# cat /etc/nagios-plugins/config/tcp_udp.cfg

# 'check_tcp' command definition
define command{
        command_name    check_tcp
        command_line    /usr/lib/nagios/plugins/check_tcp -H '$HOSTADDRESS$' -p '$ARG1$'

了解了语法,TCP 80端口可以用下面的方法检查。

root@nagios:~# /usr/lib/nagios/plugins/check_tcp -H 10.10.10.1 -p 80

TCP OK - 0.000 second response time on port 80|time=0.000222s;;;0.000000;10.000000

示例拓扑

本片中使用下面三台服务器。每台服务器运行多个通用服务。Nagios服务器现在运行的是Ubuntu。

  • Server 1 (10.10.10.1) : MySQL, Apache2
  • Server 2 (10.10.10.2) : Postfix, Apache2
  • Server 3 (10.10.10.3) : DNS

首先,这些服务器被定义在了Nagios中。

root@nagios:~# vim /etc/nagios3/conf.d/example.cfg

define host{
        use                     generic-host            
        host_name               test-server-1
        alias                   test-server-1
        address                 10.10.10.1
        }

define host{
        use                     generic-host            
        host_name               test-server-2
        alias                   test-server-2
        address                 10.10.10.2
        }

define host{
        use                     generic-host            
        host_name               test-server-3
        alias                   test-server-3
        address                 10.10.10.3
        }

监控MySQL服务

MySQL 监控需要

  • 通过检查3306端口来检测MySQL是否运行中。
  • 检测特定的数据库'testDB'是否可用。

MySQL 服务器设置

开始检测MySQL时,需要记住MySQL默认只监听回环接口127.0.0.1。这增加了数据库的安全。手动调节需要告诉MySQL该监听什么其他接口。下面是该怎么做。

这个设置要在所有的MySQL服务器上完成。

root@nagios:~# vim /etc/mysql/my.cnf

下面这行被注释掉以监听所有网络接口。

#bind-address           = 127.0.0.1

同样,MySQL也不会让任意主机来连接它。需要为localhost和“任意”主机创建MySQL用户‘nagios’,接着在所有的数据库中为这个用户授予ALL权限,会这将在会用在监控中。

下面的设置对所有的MySQL服务器都已经设置。

root@nagios:~# mysql -u root –p
## MySQL root 密码 ##

在MySQL服务器中创建'nagios@localhost'用户。

mysql> CREATE USER 'nagios'@'localhost' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'localhost';

创建'nagios@任意主机'用户。(LCTT 译注:实际上这两个是同一个用户,只是分别授权给localhost和任意主机的访问;因为它们所用的密码的同一个,修改任何一个,另外一个也相应变化。)

mysql> CREATE USER 'nagios'@'%' IDENTIFIED BY 'nagios-pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'nagios'@'%';

mysql> FLUSH PRIVILEGES;

这使MySQL监听所有的网络接口,同样接受来自用户'nagios'的进入连接。

请注意,这种修改可能有安全隐患,所以需要提示几点:

  • 这个设置将会暴露MySQL给所有的接口,包括外网。确保只有合法的网络访问是非常重要的。应该使用防火墙和TCP wrapper等过滤器。
  • MySQL用户‘nagios’的密码应该非常强。如果只有几台Nagios服务器,那么应该创建'nagios@服务器名'用户而不是任意用户的'nagios@%'。

对MySQL的Nagios配置

按如下配置来做一些调整。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use         generic-service
host_name       test-server-1
;hostgroup can be used instead as well

service_description     Check MYSQL via TCP port
check_command           check_tcp!3306
        }

define service{
use             generic-service
host_name           test-server-1
;hostgroup can be used instead as well

service_description Check availability of database 'testDB'
check_command   check_mysql_database!nagios!nagios-pass!testDB
;check_mysql!userName!userPassword!databaseName
        }

这样,Nagios就可以同时监控MySQL服务器及其数据库的可用性。

监控Apache服务器

Nagios同样也可以监控Apache服务。

Apache监控需要

  • 监控apache服务是否可用

这个任务非常简单因为Nagios有一个内置命令。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use         generic-service
host_name       test-server-1, test-server-2
service_description Check Apache Web Server
check_command       check_http
        }

现在就非常简单了。

监控DNS服务

Nagios通过向DNS服务器查询一个完全限定域名(FQDN),或者使用dig工具来查询。默认用于查询的FQDN的是www.google.com,但是这个可以按需改变。按照下面的文件修改来完成这个任务。

root@nagios:~# vim /etc/nagios-plugins/config/dns.cfg

## The -H portion can be modified to replace Google ##
define command{
command_name    check_dns
command_line    /usr/lib/nagios/plugins/check_dns -H www.google.com -s '$HOSTADDRESS$'
}

编辑下面的行。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

## Nagios asks server-3 to resolve the IP for google.com ##
define service{
use                             generic-service
host_name                       test-server-3
service_description     Check DNS
check_command           check_dns
        }

## Nagios asks server-3 to dig google.com ##
define service{
use                             generic-service
host_name                       test-server-3
service_description     Check DNS via dig
check_command           check_dig!www.google.com
        }

监控邮件服务器

Nagios可以监控不同的邮件服务组件如SMTP、POP、IMAP和mailq。之前提过,server-2设置了Postfix邮件服务。Nagios将被配置来监控SMTP和邮件队列。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use                     generic-service
host_name               test-server-2
service_description     Check SMTP
check_command           check_smtp
        }

define service{
use                     generic-service
host_name               test-server-2
service_description     Check Mail Queue
check_command           check_mailq_postfix!50!100
                    ;warning at 50, critical at 100
        }

下面的截屏显示了目前配置监控服务的概览。

基于端口自定义监控程序

让我们假设如下定制程序同样运行在网络中,监听着一个特定的端口。

  • 测试1号服务器:定制程序(TCP端口 12345)

做一些小的调整,Nagios也可以帮助我们监控这个程序。

root@nagios:~# vim /etc/nagios3/conf.d/services_nagios2.cfg

define service{
use                     generic-service
host_name               test-server-1
service_description     Check server 1 custom application
check_command           check_tcp!12345
        }

在结束之前的提示,Nagios可以监控网络很多其他的方面。存储在/etc/nagios-plugins/config/中的脚本为Nagios提供了很棒的能力。

一些Nagios提供的脚本被仅限于本地服务器,比如,服务器负载、进程并发数量、登录用户数量等。这些检查可以提供Nagios服务器内有用的信息。

希望这篇文章对你有用。


via: http://xmodulo.com/monitor-common-services-nagios.html

作者:Sarmed Rahman 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

想要更清晰的了解你的网络吗?没有比这几个免费的工具更好用的了。

网络和系统监控是一个很宽的范畴。有监控服务器、网络设备、应用正常工作的方案,也有跟踪这些系统和设备性能,提供趋势性能分析的解决方案。有些工具像个闹钟一样,当发现问题的时候就会报警,而另外的一些工具甚至可以在警报响起的时候触发一些动作。这里,收集了一些开源的工具,旨在解决上述的一些甚至大部分问题。

Cacti

Cacti是一个性能广泛的图表和趋势分析工具,可以用来跟踪并几乎可以绘制出任何可监测指标,描绘出图表。从硬盘的利用率到风扇的转速,在一个电脑管理系统中,只要是可以被监测的指标,Cacti都可以监测,并快速的转换成可视化的图表。

Nagios

Nagios是一个经典的老牌系统和网络监测工具。运行速度快,可靠,需要针对应用定制。Nagios对于初学者是一个挑战。但是它的极其复杂的配置正好也反应出它的强大,因为它几乎可以适用于任何监控任务。要说缺点的话就是不怎么耐看,但是其强劲的功能和可靠性弥补了这个缺点。

Icinga

Icinga 是一个正在重建的Nagios的分支,它提供了一个全面的监控和警报的框架,致力于设计一个像Nagios一样的开放和可扩展性的平台。但是和Nagios拥有不一样的Web界面。Icinga 1 和 Nagios非常的相近,不过Icinga 2就重写了。两个版本都能很好的兼容,而且,Nagios用户可以很轻松的转到Icinga 1平台。

NeDi

NeDi可能不如其他的工具一样闻名全世界,但它确是一个跟踪网络接入的一个强大的解决方案。它可以很流畅的运行网络基础设施和设备目录,保持对任何事件的跟踪。并且可以提供任意设备的当前地点,也包括历史地点。

NeDi可以被用于定位被偷的,或者是丢失掉的设备,只要设备出现在网络上。它甚至可以在地图上显示所有已发现的节点。并且很清晰的告诉人们网络是怎么互联的到物理设备端口的。

Observium

Observium 综合了系统和网路监控,在性能趋势监测上有很好的表现,它支持静态和动态发现来确认服务器和网络设备,利用多种监测方法,可以监测任何可用的指标。Web界面非常的整洁,易用。

就如我们看到的,Observium也可以在地图上显示任何被监测节点的实际地点。需要注意的是面板上关于活跃设备和警报的计数。

Zabbix

Zabbix 利用一系列的工具监测服务器和网络。Zabbix的监控代理支持大多数的操作系统,你可以被动的或者是使用外部检查,包括SNMP来监控主机和网络设备。你也会发现很多提醒和通知设施,和一个非常人性化的Web界面,适用于不同的面板,此外,Zabbix还拥有一些特殊的管理工具来监测Web应用和虚拟化的管理程序。

Zabbix 还可以提供详细的互联图,以便于我们了解某些对象是怎么连接的。这些图是可以定制的,并且,图也可以以被监测的服务器和主机的分组形式被创建。

Ntop

Ntop是一个数据包嗅探工具。有一个整洁的Web界面,用来显示被监测网络的实时数据。即时的网络数据通过一个高级的绘图工具可以可视化。主机数据流和与之对应的主机通信信息可以被实时的进行可视化显示。


via: http://www.networkworld.com/article/2686794/asset-management/164219-7-killer-open-source-monitoring-tools.html

作者:Paul Venezia 译者:barney-ro 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

先前的教程中,我们已经见到了如何在Nagios设置中设置Nagios远程执行插件(NRPE)。然而,监控内存使用率的脚本和插件并没有在原生的Nagios中。本篇中,我们会看到如何配置NRPE来监控远程服务器上的内存使用率。

我们要用的监控内存的脚本在Nagios 市场上,在创建者的Github仓库中也可以找到。

假设我们已经安装了NRPE,我们首先在我们想要监控的服务器上下载脚本。

准备远程服务器

在 Debain/Ubuntu 中:

# cd /usr/lib/nagios/plugins/
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem 

在 RHEL/CentOS 中:

# cd /usr/lib64/nagios/plugins/ (or /usr/lib/nagios/plugins/ for 32-bit)
# wget https://raw.githubusercontent.com/justintime/nagios-plugins/master/check_mem/check_mem.pl
# mv check_mem.pl check_mem
# chmod +x check_mem

你可以通过手工在本地运行下面的命令来检查脚本的输出是否正常。当使用NRPE时,这条命令应该会检测空闲的内存,当可用内存小于20%时会发出警告,并且在可用内存小于10%时会生成一个严重警告。

# ./check_mem -f -w 20 -c 10 

OK - 34.0% (2735744 kB) free.|TOTAL=8035340KB;;;; USED=5299596KB;6428272;7231806;; FREE=2735744KB;;;; CACHES=2703504KB;;;;

如果你看到像上面那样的输出,那就意味这命令正常工作着。

现在脚本已经准备好了,我们要定义NRPE检查内存使用率的命令了。如上所述,命令会检查可用内存,在可用率小于20%时发出警报,小于10%时发出严重警告。

# vim /etc/nagios/nrpe.cfg 

对于 Debian/Ubuntu:

command[check_mem]=/usr/lib/nagios/plugins/check_mem  -f -w 20 -c 10

对于 RHEL/CentOS 32 bit:

command[check_mem]=/usr/lib/nagios/plugins/check_mem  -f -w 20 -c 10

对于 RHEL/CentOS 64 bit:

command[check_mem]=/usr/lib64/nagios/plugins/check_mem  -f -w 20 -c 10

准备 Nagios 服务器

在Nagios服务器中,我们为NRPE定义了一条自定义命令。该命令可存储在Nagios内的任何目录中。为了让本教程简单,我们会将命令定义放在/etc/nagios目录中。

对于 Debian/Ubuntu:

# vim /etc/nagios3/conf.d/nrpe_command.cfg 

define command{
        command_name check_nrpe
        command_line /usr/lib/nagios/plugins/check_nrpe -H '$HOSTADDRESS$'  -c '$ARG1$'
}

对于 RHEL/CentOS 32 bit:

# vim /etc/nagios/objects/nrpe_command.cfg 

define command{
        command_name check_nrpe
        command_line /usr/lib/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

对于 RHEL/CentOS 64 bit:

# vim /etc/nagios/objects/nrpe_command.cfg 

define command{
        command_name check_nrpe
        command_line /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

现在我们定义Nagios的服务检查

在 Debian/Ubuntu 上:

# vim /etc/nagios3/conf.d/nrpe_service_check.cfg 

define service{
        use                            local-service
        host_name                      remote-server
        service_description            Check RAM
        check_command                  check_nrpe!check_mem
}

在 RHEL/CentOS 上:

# vim /etc/nagios/objects/nrpe_service_check.cfg 

define service{
        use                            local-service
        host_name                      remote-server
        service_description            Check RAM
        check_command                  check_nrpe!check_mem
}

最后我们重启Nagios服务

在 Debian/Ubuntu 上:

# service nagios3 restart 

在 RHEL/CentOS 6 上:

# service nagios restart 

在 RHEL/CentOS 7 上:

# systemctl restart nagios.service 

故障排除

Nagios应该开始在使用NRPE的远程服务器上检查内存使用率了。如果你有任何问题,你可以检查下面这些情况。

  • 确保NRPE的端口在远程主机上是总是允许的。默认NRPE的端口是TCP 5666。
  • 你可以尝试通过执行check\_nrpe 命令: /usr/lib/nagios/plugins/check\_nrpe -H remote-server 手工检查NRPE操作。
  • 你同样可以尝试运行check\_mem 命令:/usr/lib/nagios/plugins/check\_nrpe -H remote-server –c check\_mem
  • 在远程服务器上,在/etc/nagios/nrpe.cfg中设置debug=1。重启NRPE服务并检查这些日志文件,/var/log/messages (RHEL/CentOS)或者/var/log/syslog (Debain/Ubuntu)。如果有任何的配置或者权限错误,日志中应该包含了相关的信息。如果日志中没有反映出什么,很有可能是由于请求在某些端口上有过滤而没有到达远程服务器上。

总结一下,这边教程描述了我们该如何调试NRPE来监控远程服务器的内存使用率。过程只需要下载脚本、定义命令和重启服务就行了。希望这对你们有帮助。


via: http://xmodulo.com/2014/09/monitor-server-memory-usage-nagios-remote-plugin-executor.html

作者:Sarmed Rahman 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出