使用 Nagios

来自 PostgreSQL Wiki
跳到导航跳到搜索

为什么使用 Nagios?

Nagios 是一个应用广泛的开源网络监控系统,它监管指定的设备(硬件)和服务(软件),并在它们的行为异常时发出警报。

配置监控服务器

需求

  • 网络服务器(本指南假设使用 Apache)
  • PHP(用于网络界面)
  • GCC
  • Libgd(显示状态图所需的图形库)
  • Perl
  • 邮件服务器 (可选。用于发送邮件告警)

安装(作为 root 用户)

创建一个 nagios 用户

useradd -m nagios
passwd nagios

安装 nagios

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.0.6.tar.gz
gunzip -dc nagios-3.0.6.tar.gz | tar xvf -
cd nagios-3.0.6
./configure --with-command-group=nagios
make all
make install
make install-init
make install-config
make install-commandmode

配置

编辑文件 /usr/local/nagios/etc/objects/contacts.cfg

此更改用于指示向其发送已配置告警的电子邮件。

reemplazar “nagios@localhost” por el correo del administrador

配置网络界面

make install-webconf
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
chown nagios.nagios /usr/local/nagios/etc/htpasswd.users
chmod 664 /usr/local/nagios/etc/htpasswd.users
service httpd restart

安装 Nagios 插件

我们稍后会手动安装 PostgreSQL 插件,出于以下两个原因

  1. 为了安装最新版本,并且
  2. 为了防止在监控服务器上未安装 PostgreSQL 时出现依赖性问题
cd ..
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
gunzip -dc nagios-plugins-1.4.13.tar.gz | tar xvf -
cd nagios-plugins-1.4.13
./configure --with-nagios-user=nagios --with-nagios-group=nagios --without-pgsql
make
make install

启动 Nagios

cd /etc/init.d
chkconfig --add nagios
chkconfig nagios on

为了检查一切是否正常

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

最终

service nagios start

现在已经可以在 Nagios 中输入,打开浏览器并输入以下地址:https://127.0.0.1/nagios
以 nagiosadmin 作为用户名输入,并输入配置网络界面时我指示的密钥。
如果安装在将要受到监控的同一台机器上,请继续安装 PostgreSQL 插件,否则请继续执行下一个部分。

配置待监控的机器

需求

  • PostgreSQL(本手册中的说明已通过版本 8.3.7 测试)
  • Xinetd
  • GCC
  • Perl

创建一个 Nagios 用户

useradd -m nagios
passwd nagios

安装 Nagios 插件

稍后我们会手动安装 PostgreSQL 插件,以确保使用最新版本。

wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
gunzip -dc nagios-plugins-1.4.13.tar.gz | tar xvf -
cd nagios-plugins-1.4.13
./configure --with-nagios-user=nagios --with-nagios-group=nagios --without-pgsql
make
make install
chown -R nagios.nagios /usr/local/nagios

安装 Nagios 的 nrpe 模块

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
gunzip -dc nrpe-2.12.tar.gz | tar xvf -
cd nrpe-2.12
./configure
make all
make install-plugin 
make install-daemon 
make install-daemon-config 
make install-xinetd

配置 nrpe 模块

修改文件 /etc/xinet.d/nrpe

modificar el valor del campo “only_from” por la ip del servidor que se va a monitorear

修改文件 /etc/services

agregar la siguiente linea “nrpe		5666/tcp	#NRPE”

配置监控服务器,以便其检查远程机器上的服务

安装 Nagios 的 nrpe 模块

wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
gunzip -dc nrpe-2.12.tar.gz | tar xvf -
cd nrpe-2.12
./configure
make all
make install-plugin

测试 nrpe 模块

/usr/local/nagios/libexec/check_nrpe -H <ip servidor monitoreado>

编辑文件 /usr/local/nagios/etc/objects/commands.cfg

将以下行添加到文件的末尾

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

我们必须向 Nagios 指示我们会编辑文件 /usr/local/nagios/etc/nagios.cfg 来监控另一台机器,在“OBJECT CONFIGURATION FILE(S)”部分添加以下行

cfg_file = /usr/local/nagios/etc/objects/dbhost.cfg

在 dbhost.cfg 文件中创建主机定义

define host{
       use			linux-server
       host_name		dbserver
       alias			pgsql 8.3
       address			IP.del.servidor.PostgreSQL
       }


service nagios restart

安装用于监控 PostgreSQL 的插件(在将要监控的服务器上)

Descargar el archivo check_postgres.tar.gz desde http://bucardo.org/check_postgres
gunzip -dc check_postgres.tar.gz | tar xvf -
cd check_postgres
cp check_postgres.pl /usr/local/nagios/libexec/.
perl /usr/local/nagios/libexec/check_postgres.pl –symlinks

要安装检查,必须为我们在 /usr/local/nagios/etc/nrpe.cfg 文件中将要监控的每个服务创建一个条目,类似于(必须在 “COMMAND DEFINITIONS” 部分中添加):

command[check_postgres_locks]=/usr/local/nagios/libexec/check_postgres_locks -w 2 -c 3

命令可以从 http://bucardo.org/check_postgres/check_postgres.pl.html 获取。

然后,我们必须指示要监控的服务,在监控服务器上创建 /usr/local/nagios/etc/objects/dbhost.cfg 文件中的以下条目。

define service { 
       use                    generic-service 
       host_name              dbserver 
       service_description    PGSQL locks
       check_command          check_nrpe!check_postgres_locks
       }
define service{
       use			generic-service
       host_name		dbserver
       service_description	CPU Load
       check_command		check_nrpe!check_load
       }
define service{
       use			generic-service
       host_name		dbserver
       service_description	Current users
       check_command		check_nrpe!check_users
       }
define service{
       use			generic-service
       host_name		dbserver
       service_description	Total Processes
       check_command		check_nrpe!check_total_procs
       }
define service{
       use			generic-service
       host_name		dbserver
       service_description	Zombie Processes
       check_command		check_nrpe!check_zombie_procs
       }