如何在 CentOS 8/RHEL8 上部署 Naigos 并设置监控

什么是 Nagios?

Nagios 监视整个 IT 基础架构,以确保系统,应用程序,服务和业务流程正常运行。如果发生故障,Nagios 可以警告技术人员该问题,使他们可以在故障影响业务流程,最终用户或客户之前开始补救流程。

先决条件

1. 在服务器中部署 LAMP 环境

2. 将 SELINUX 设置为宽松模式

sed -i 's/SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
setenforce 0

第一步:安装依赖

  • 更新系统
dnf update
  • 安装必要包
yum install gcc glibc glibc-common gd gd-devel make net-snmp openssl-devel xinetd unzip

第二步:创建用户与分组

  • 创建一个名为 “nagios” 的用户以及名为 “nagcmd” 的用户组,并把用户加入用户组中:
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios

第三步:下载并安装 Nagios core

  • 下载最新版本的 Nagios
export VER="4.4.5"
curl -SL https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-$VER/nagios-$VER.tar.gz | tar -xzf -
  • 进入 Nagios 目录
cd nagios-$VER
  • 在编译前进行配置
./configure --with-command-group=nagcmd
  • 编译并安装 Nagios core
make all
make install
make install-commandmode
make install-init
make install-config
make install-webconf

为了确保能够通过网页界面执行外部指令到 Nagios,我们需要把 apache 用户加入到 nagcmd 用户组。

usermod -G nagcmd apache

第四步:下载并安装 Nagios 插件

  • 下载并安装最新的 Nagios 插件:
cd
VER="2.2.1"  
curl -SL https://github.com/nagios-plugins/nagios-plugins/releases/download/release-$VER/nagios-plugins-$VER.tar.gz | tar -xzf -
  • 进入到插件目录
cd nagios-plugins-$VER
  • 配置 Nagios 插件
./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-openssl
  • 编译并安装 Nagios 插件
make
make install

第五步:下载并安装 NRPE

cd
curl -L -O http://downloads.sourceforge.net/project/nag		ios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz
  • 解压 NRPE 压缩包
tar xvf nrpe-*.tar.gz
  • 进入到解压后的目录
cd nrpe-*
  • 在编译前对 NRPE 进行配置
./configure --enable-command-args --with-nagios-user=nagios --with-nagios-group=nagios --with-ssl=/usr/bin/openssl --with-ssl-lib=/usr/lib/x86_64-linux-gnu
  • 编译并安装 NRPE
  make all
  make install
  make install-xinetd
  make install-daemon-config
  • 打开 xinetd 启动脚本
vi /etc/xinetd.d/nrpe
  • 修改 only_from 这一行,添加私有 IP 地址:
only_from = 127.0.0.1 YourPrivateIp
  • 重启 xinetd 服务并启动 NRPE:
service xinetd restart

第六步:编辑配置文件

  • 打开 Nagios 配置文件
vi /usr/local/nagios/etc/nagios.cfg
  • 找到下面的一行内容,并删除 # 取消注释:
#cfg_dir=/usr/local/nagios/etc/servers
  • 创建一个目录,用于存储每一台被监控的服务器的配置文件:
mkdir /usr/local/nagios/etc/servers
  • 打开另外一个配置文件 commands.cfg
vi /usr/local/nagios/etc/objects/commands.cfg
  • 将下面的内容添加到文件底部:
define command{
        command_name check_nrpe
        command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
      }
  • 使用 htpasswd 创建一个管理员用户,叫做 “nagiosadmin”:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
  • 重启 Nagios 和 Apache
systemctl daemon-reload
systemctl start nagios.service
systemctl restart httpd.service

第七步:访问网页界面

使用如下地址访问你的 Nagios 网页界面

http://服务器 IP 地址/nagios

输入管理员用户名和密码:

Nagios.PNG

成功登录后,你将看到 Nagios 的首页:

Nagios Home page.PNG

第八步:设置要监控的服务器

首先登录到你需要监控的服务器。

  • 安装 EPEL
yum install epel-release
  • 安装 Nagios 插件与 NRPE
yum install nrpe nagios-plugins-all
  • 更新 NRPE 配置文件
vi /etc/nagios/nrpe.cfg
  • 找到 allowed_hosts 字段,并添加 Nagios 服务器地址到行末,多个地址用英文逗号隔开。
allowed_hosts=127.0.0.1,yournagiosserverip
  • 重启 NRPE 使新配置生效:
systemctl restart nrpe.service
systemctl enable nrpe.service

登录到 Nagios 服务器,并添加如下变更

  • 编辑配置文件
vi /usr/local/nagios/etc/servers/yourhost.cfg
  • 将下面的代码加入到配置文件中,并修改 host_name 为你要监控的服务器主机名,address 为你要监控的服务器 IP 地址, alias 为简单的描述:
define host {
        use                             linux-server
        host_name                       服务器主机名
        alias                           简单的描述
        address                         服务器 IP
        max_check_attempts              5
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
      }

*重启 Nagios

systemctl restart nagios
  • 进入 Nagios 网页界面查看

Nagios hosts.PNG

第九步:添加其他的服务

你可以添加其他的监控服务到配置文件中 /usr/local/nagios/etc/servers/yourhost.cfg

添加 SSH 服务监控

define service {
        use                             generic-service
        host_name                       主机名
        service_description             SSH
        check_command                   check_ssh
        notifications_enabled           0
      }

添加 Ping 服务监控

define service {
        use                             generic-service
        host_name                       主机名
        service_description             PING
        check_command                   check_ping!100.0,20%!500.0,60%
      }

进入 Nagios 网页界面查看

Nagios moni.PNG

关联文章