Nagios 监控 Linux 服务器

概要

本文描述如何监控 Linux/UNIX 主机的系统属性和本地服务,例如:

  • CPU 负载
  • 内存占用
  • 磁盘使用
  • 当前登录用户
  • 运行进程

Linux/UNIX 主机的公共服务,例如 HTTP,SSH 等不在本文的讨论范围内,本文仅仅描述如上所述的系统属性和本地服务。

简介

有很多方法可以监控 Linux/Unix 主机的系统属性和本地服务,例如可以通过利用 SSH 登录远程主机,执行监控命令,Nagios 也提供了这种方式的插件 check_by_ssh,通过这个插件可以执行被监控主机上的监控命令。这里并不推荐使用这种方法,因为当需要监控很多主机时,频繁创建和销毁 SSH 连接会非常影响监控服务器的性能。

另一种常用的方法是使用 NRPE 插件来实现监控远程主机的,NRPE 使你可以执行远程 Linux/UNIX 主机上的监控命令:

Nagios 监控 Linux 服务器_第1张图片

NRPE 插件由两部分组成:

  • NRPE: NRPE 是运行在远程被监控的主机上的代理程序,接收有 Nagios 服务器通过 check_nrpe 发送的检查请求。当收到检查请求时,它会按照请求要求执行相应的检查命令,然后将结果返回给 Nagios 监控服务器。

  • check_nrpe:这个监控插件运行在 Nagios 服务器,用来与远程主机上的 NRPE 代理程序交互。使用这个插件时,它会告诉远程主机上 NRPE 代理程序需要监控的项目,收到返回结果后,它会将其转为自己的输出代码输出结果。

Nagios 服务端安装 check_nrpe 插件

编译 NRPE 插件时需要安装 openssl-devel

yum install openssl-devel

下载 NRPE 软件包,可以前往 https://exchange.nagios.org/ 搜索最新的软件包

wget https://github.com/NagiosEnterprises/nrpe/archive/3.0.1.tar.gz

解压缩

tar -zxvf 3.0.1.tar.gz
cd 3.0.1

编译并安装插件

./configure
make all
make install-plugin

安装完成后就可以在 /usr/local/nagios/libexec 下找到 check_nrpe 插件。

被监控主机上安装 Nagios 插件及 NRPE 代理

准备工作

安装编译环境

yum install gcc glibc glibc-common unzip openssl-devel

创建 nagios 用户,可以将 nagios 用户设置为不可登录

useradd nagios

安装nagios 插件

下载 nagios 插件

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

解压缩并安装

tar -zxvf nagios-plugins-2.1.2.tar.gz
cd nagios-plugins-2.1.2
./configure
make
make install

设置权限

chown nagios:nagios /usr/local/nagios
chown -R nagios:nagios /usr/local/nagios/libexec

安装 xinetd

xinetd 是 Linux 下的守护进程,稍后安装的 NRPE 将托管在 xinetd 下。

这种方式的优点是空闲时只有 xinetd 这一守护进程占有系统资源,而托管在它上边的其他的内部服务不会一直占有系统资源,只有请求到来时才会被 xinetd 唤醒。并且通过 xinetd 还可以对它所管理的内部进程设置相应的访问权限。

yum install xinetd

安装 NRPE

载 NRPE 软件包,可以前往 https://exchange.nagios.org/ 搜索最新的软件包

wget https://github.com/NagiosEnterprises/nrpe/archive/3.0.1.tar.gz

解压缩

tar -zxvf 3.0.1.tar.gz
cd 3.0.1

编译并安装插件及配置文件

./configure
make all

make install-plugin
make install-daemon
make install-config
make install-inetd

不同版本的 nrpe 安装参数有可能不一致,运行 make 可以列出所有的参数

修改 nrpe 配置 vi /usr/local/nagios/etc/nrpe.cfg,将 server_address 修改为 Nagios 服务器地址。

server_address=192.168.1.200

配置 xinetd,编辑 /etc/xinetd.d/nrpe

 vi /etc/xinetd.d/nrpe 

将下列行中允许访问的 ip 地址改为 Nagios 服务器的地址,并开启服务

service nrpe
{
    disable         = no   \\注意将这里修改成no
    socket_type     = stream
    port            = 5666
    wait            = no
    user            = nagios
    group           = nagios
    server          = /usr/local/nagios/bin/nrpe
    server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
    only_from       =   \\ 设置为nagios服务器地址
    log_on_failure  += USERID
}

将 nrpe 服务说明添加至 /etc/services

nrpe            5666/tcp                # NRPE

设置防火墙

firewall-cmd --zone=public --add-port=5666/tcp --permanent
firewall-cmd --reload

启动 xinetd

systemctl start xinetd

此时可以回到监控服务器上,运行插件检查

/usr/local/nagios/libexec/check_nrpe -H 192.168.1.201

返回 nrpe 版本就说明远程主机上 nrpe 安装正确。

配置 Nagios

command 定义

vi /usr/local/nagios/etc/objects/commands.cfg 

插入如下定义:

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

新建 linux 服务器配置文件 linux.cfg

vi /usr/local/nagios/etc/objects/linux.cfg 

主机定义

define host{
    use             linux-server
    host_name       linuxserver
    alias           My linux Server
    address         192.168.1.201
}
  • use: 使用模板 linux-server
  • host_name:主机名称
  • alias:别名或描述
  • address: IP地址

监控服务定义

设置监控 CPU 负载

define service{
    use generic-service
    host_name linuxserver
    service_description CPU Load
    check_command check_nrpe!check_load
}

设置监控当前登录用户

define service{
    use generic-service
    host_name linuxserver
    service_description Current Users
    check_command check_nrpe!check_users
}

设置监控磁盘 /dev/hda1 的使用情况

define service{
    use generic-service
    host_name linuxserver
    service_description /dev/hda1 Free Space
    check_command check_nrpe!check_hda1
}

设置监控进程数

define service{
    use generic-service
    host_name linuxserver
    service_description Total Processes
    check_command check_nrpe!check_total_procs
}

集中说明一下,在 check_command 定义中,check_nrpe 后边连接的就是远程主机中定义的监控命令,远程主机的定义可以在远程主机的 /usr/local/nagios/etc/nrpe.cfg 中查看到:

command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200

重新启动 nagios 服务,就可以看到新增的监控主机

nagios监控linux主机

你可能感兴趣的:(运维)