开发者学堂课程【PostgreSQL快速入门:21 PostgreSQL 监控2 趋势监控数据收集和分析nagios实时监控部署和自定义监控】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/16/detail/80
21 PostgreSQL 监控2 趋势监控数据收集和分析 nagios 实时监控部署和自定义监控
三、nagios 客户端安装
1、安装 nagios-pluging 下载最新稳定版
例如此时监控另一台服务器,在另一台服务器上输入
wget http://prdownloads. sourceforge.net/ sourceforge/nagiosplug/nagios-plugins-1.5.tar.gz
[root@db-172-16-3-39 soft_bak]# tar -zxvf nagios-plugins-1.5. t ar . gz
[root@db-172-16-3-39 soft_bak]# cd nagios-plugins-1.5
添加执行监控脚本的用户.可以忽略.因为你可能会用 postgres 用户进行监控.
[root@db-172-16-3-39 nagios-plugins-1.5]# useradd nagios
下载完成后编译安装
[root@db-172-16-3-39 nagios-plugins-1.5]#./configure --with-nagios-user=postgres --with-nagios-group=postgres --
prefix=/opt/nagios
//我们使用的为 nagios 安装,若不想使用 nagios 监控,可以使用 postgre。若有些操作只能连接后监控,那么使用 postgre 用户监控,此处修改为 postgre 即可
[root@db-172-16-3-39 nagios-plugins-1.5]# make
[root@db-172-16-3-38 nagios-plugins-1.5]# make install
[root@db-172-16-3-39 nagios-plugins-1.5]# chown nagios:nagios / opt/nagios
[root@db-172-16-3-39 nagios-plugins-1.5]# chown -E nagios:nagios /opt/nagios/libexec
2、安装 xinetd 服务
[root@db-172-16-3-39 nagios-plugins-1.5]# yum install -y xinetd
3、安装 NRPE - Nagios Remote Plugin Executor
NRPE 是一个远程的插件, nagios server 通过 check_nrpe 来调用远端的这个插件监控远端服务.(nagios 通过调用nrpe 服务探测客户端状态,nrpe 再调用远程服务端脚本来达到监控目的)
其实 nagios server 通过 check_by_ssh 也可以来监控远端服务.只是使用 check_by_ssh 的 CPU 开销比较大.当被监控的服务很多的时候.就不适用了.所以推荐使用 check_nrpe.
图中有一个统一接口,例如返回值有统一规定,返回内容中也有一些统一的格式
NRPE 下载地址
http: //downloads.sourceforge.net/ project/nagios/ nrpe-2.x/ nrpe-2.15/nrpe-2.15. tar . gz?r=&ts=133786540&use_mirror=hivelocity
nrpe 已经更新到2.15,下载2.15版本
解压
[root@db-172-16-3-39 soft_bak]# tar -zxvf nrpe-2.15. tar . gz
[root@db-172-16-3-39 soft_bak]# cd nrpe-2.15
//nrpe 安装在客户端
[root@db-172-16-3-39 nrpe-2.15]# . /configure --prefix=/ opt/nagios
// 安装到 opt/nagios 客户端
[root@db-172-16-3-39 nrpe-2.15]# make all
[root@db-172-16-3-39 nrpe-2.15]# make install-plugin
[root@db-172-16-3-39 nrpe-2.15]# make install-daemon
[root@db-172-16-3-39 nrpe-2.15]# make install-daemon-config
[root@db-172-16-3-39 nrpe-2.15]# make install-xinetd
//通过配置 xinetd 启上述服务
编辑 xinetd nrpe 配置文件.(注意此处不使用 nagios,使用 postgres)
修改 only_from,允许本地 lp 和 nagios server ip 连接.新增 log_type 配置.不写日志.
[root@db-172-16-3-33 nrpe-2.15]# vi /etc/xinetd.d/nrpe
#default : on
#description: NRPE (Nagios Remote Plugin Executor )
service nrpe
{
flags =REUSE
socket_type = stream
port = 5666
wait = no
user = postgres
group = postgres
server=/opt/nagios/bin/nrpe
server_args =-c/opt/nagios/etc/nrpe.cfg--inetd
log_ on_ failure +=USERID
disable= no
only_ from=127.0.0.1 172.16.3.150
//only_from 需要添加主机,例如客户端为172.16.3.150
log_type =FILE/dev/null //可以不写日志,将日志写入空文件
}
修改/etc/services
[root@db-172-16-3-39 nrpe-2.15]# vi /etc/services
nrpe 5666/tcp # NRPE
,添加到文件末尾
每次修改/etc/xinetd.d/nrpe或/opt/nagios/etc/nrpe.cfg
后需要重启 xinetd 服务.
[root@db-172-16-3-39 nrpe-2.15]# service xinetd restart
//启动服务
Stopping xinetd: [FAILED]
Starting xinetd: [ OK ]
查看 nrpe 是否正常启动
[root@db-172-16-3-39 rarpe-2.15]# netstat -anpo|grep xinetd
tcp 0 00.0.0.0:5666 0.0.0.0:*LISTEN 933/xinetd off (0. 00/0/0)
unix 2[ ] DGRAM 7822940 933/xinetd
//例如此处输入netstat -anp|grep 5666
,结果可以看到5666已经监控起来
[root@db-172-16-3-39 nrpe-2.15]# netstat -at|grep nrpe
tcp 0 0*:nrpe *:* LTSTEN
使用 check_nrpe 命令检查nrpe后台进程是否启动.
[root@db-172-16-3-39 nrpe-2.15]#/opt/nagios/libexec/ check_nrpe -H localhost
//使用check_nrpe 检测
NRPE v2.15
//NRPE 版本为2.15
以上返回表示正常.
使用 check_nrpe 通过tcp调用远端/opt/nagios/etc/nrpe.cfg
中配置的 command.
[root@db-172-16-3-39 nrpe-2.15]#/opt/nagios/libexec/ check_nrpe -H localhost -c check_load
//通过 tcp 远端调用查看是否可以正常检测到负载
OK - load average:0.00,0.02,0.00| load1=0.000;15.000;30.00;0;load5=0.020;10.000;25.000;0; load15=0.000;5.000; 20.000;0;
//检测正常
nagios server 也是通过调用 check_nrpe 来检测远端服务.所以在 nagios server 端需要安装 check_nrpe 插件.
四、nagios 服务端配置
安装 check_nrpe 插件.注意 prefi x与客户端不一样.还有只需要安装插件即可.
[root@db-172-16-3-33 soft_bak]# tar -zxvf nrpe-2.15. tar . gz
[root@db-172-16-3-33 soft_bak]# cd nrpe-2.15
[root@db-172-16-3-33 nrpe-2.15]# ./ configure --prefix=/ opt/nagios-4.0.3
//服务端放到opt/nagios 下
[root@db-172-16-3-33 nrpe-2.15]# make all
[root@db-172-16-3-33 nrpe-2.15]# make install-plugin
配置主配置文件/opt/nagios-4.0.3/etc/nagios.cfg
# You can specify individual object config files as shown below;
cfg_file=/opt/nagios-4.0.3/etc/ objects/ commands. cfg
cfg_file=/opt/nagios-4.0.3/etc/objects/contacts.cfg //包含联系人
cfg_file=/ opt/nagios-4.0.3/etc/objects/ timeperiods.cfg //超时
cfg_file=/opt/nagios-4.0.3/etc/objects templates.cfg //模板
#Definitions for monitoring the local (Linux) host
cfg_file=/opt/nagios-4.0.3/ etc/objects/localhost.cfg
nagios 启动时会解析并加载这些配置文件.
编辑/opt/nagios-4.0.3/etc/objects/commands.cfg
将 check_nrpe 添加进去.
[root@db-172-16-3-33 db_servers]# vi /opt/nagios-4.0.3/etc/objects/ commands. Cfg
# add by digoal
define command {
command name check nrpe
command_line $USER1$/check_nrpe -H $HDSTADDRESS$ -c $AEG1$
}
//通过用户进行调用 nrpe 探测主机地址 -c 为服务端提供的 argument $HDSTADDRESS$与$AEG1$ 后期传入
上面的 $USER1$ 定义在环境变量文件:/opt/nagios-4.0.3/etc/resource.cfg
(接着在 resource.cfg 中配置环境变量)
#Sets $USER1$ to be the path to the plugins
$USER1$=/ opt/nagios-4.0.3/libexec
//进入后看到 USER1 已经定义好,不需要再进行修改
# Sets $USER2$ to be the path to event handlers
$USER2$=/opt/nagios-4.0.3/libexec/eventhanders
# Store some usernames and passwords (hidden from the CGIs)
#$USER3$=someuser
#$USER4$=somepassword
(可选)定义一个 linux 主机模板.名为 linux-box,原始的模板也在 templates.cfg 这个文件中.后面也会用到原始模板:
[root@db-172-16-3-33 db_servers]# vi / opt/nagios-4.0.3/ etc/objects/ templates.cfg
# add by digoal
#host template linux-box
//什么主机
define host {
name linux-box : Name of this template
use generic-host: Inherit default values
check_period 24x7
//监控的频度
check_interval 5
retry_interval 1
max_check_attempts 10
check_command check host-alive
notification period 24x7
notification interval 30
notification_options d,r
contact_groups admins
register 0 :DONT REGISTER THIS - ITS A TEMPLATE
}
配置完后可以检查配置文件,输入
/opt/nagios-4.0.3/bin/nagios -v /opt/nagios-4.0.3/etc/nagios.cfg
当然我们也可以定制配置文件目录,目录中以 cfg 结尾的文件,在 nagios 启动时都会解析和加载.修改主配置文件.在OBJECT CONFIGURATION FILE 配置组中新增如下行:
cfg_dir=/opt/nagios-4.0.3/etc/db_servers
//例如将所有的服务器配置文件定义到 db_servers 文件中
新建目录,修改权限
[root@db-172-16-3-33 etc]# mkdir -p / opt/nagios-4.0.3/ etc/ db_servers
[root@db-172-16-3-33 etc]# chown nagios : nagios /opt/nagios-4.0.3/etc/db_servers
//将权限赋予给 nagios 用户
在该目录中新建配置文件:
配置主机:
[root@db-172-16-3-33 etc]# cd / opt/nagios-4.0.3/ etc/ db_servers/
[root@db-172-16-3-33 db_servers]# vi hosts.cfg
define host{
//定义一台主机,该主机为监控主机3_33
use linux-box ; Inherit default values from a template
//使用 linux-box 的 template
host_name db_3_33 : The name we' re giving to this server
alias postgresql_3_33 :A longer name for the server
address 172.16.3.38 :IP address of the server
}
[root@db-172-16-3-33 db_servers]# chown nagios:nagios hosts.cfg
配置主机对应的服务∶
[root@db-172-16-3-33 db_servers]# cd /opt/nagios-4.0.3/etc/db_servers/
[root@db-172-16-3-33 db_servers]#vi services.cfg
define service {
//新增 service 文件,为监控内容
use generic-service
host_name db_3_33: this is host.host_name
//主机名为3_33
service_description Current Users
check_command check_nrpe| check_users :check_users
对应客户湍/ opt/nagios/ etc/nrpe.cfg
中定义的 command,后面亦如此
远程调用 check_nrpe,里面的 command为check_users,后面将 check_users 替换为/opt/nagios/libexec/check_users -w 5 -c 10
,执行该命令
}
//远程调用check_nrpe
define service{
use generic-service
host_name db_3_33
service_description CPU Load
check_command check_nrpe | check_load
}
define service{
use generic-service
host_name db_3_3
service_description / dev/hda1 Free Space
check_command check_nrpe!check_hda1
}
define service{
use generic-service
host_name db_3_3
service_description / dev/hda2 Free Space
check_command check_nrpe!check_hda2
}
define service{
use generic-service
host_name db_3_33
service_description Total Processes
check_command check_nrpel check_total_procs
}
define service{
use generic-service
host_name db_3_33
service_description Zombie Processes
check_command check_nrpe! check_zombie _procs
}
服务定义好后修改配置文件权限
[root@db-172-16-3-33 db_servers]# chown nagios:nagios *. cfg
//显示结果都为 nagios 用户
检测配置文件是否合法
[root@db-172-16-3-33 db_servers]#/ opt/nagios-4.0.3/bin/ nagios -v /opt/nagios-4.0.3/ etc/nagios.cfg
过程显示如图:显示目前监控13个服务、2台主机
如果配置文件没有错误的话,重启 nagios
nagios 显示截图如下:
Nagios 左侧菜单栏 Hosts,点击就会发现有两台主机。点击 Services 可以看有多少服务。PENDING 表示目前还没有对它进行探测,过一段时间就会探测,因为有时间间隔,探测后状态才会变成正常状态。
重启服务:
[root@db-172-16-3-33 db_servers]# service nagios restart
Running configuration check . . done.
Stopping nagios: done.
Starting nagios: done.
客户端对应的 nrpe.cfg 配置
[root@db-172-16-3-39 nrpe-2.15]#vi/opt/nagio/etc/nrpe.cfg
command[check_users]=/opt/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/opt/nagios/libexec/check_load-w15,10,5-c 30,25,20
command[check_hda1 ]=/opt/nagios/libexcec/ check_disk -w 20% -c 10% -p/
command[check_zombie_procs]=/ opt/nagios/libexec/ check_procs -w 5 -c 10 -s z
command[check_total_procs]=/ opt/nagios/libezec/check_ procs -w 150 -c 200
自定义监控也是配置这些东西.配置完后需要重启 xinetd 服务.
[rootedb-172-16-3-39 rarpe-2.15]# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]