运维软件nagios的使用
阅读数:154 评论数:0
跳转到新版页面分类
应用软件
正文
一、简介
nagios结构上来说,可分为核心和插件两个部分。nagios的核心部分只提供了很少的监控功能,所以需要安装插件来增强监控功能,插件可以从官网下载,也可以自己根据实际要求编写所需要的插件。
nagios软件需安装在一台独立的服务吕上运行,这台服务器称为监控中心,监控中心服务器可以采用Linux或Unix操作系统,每一台被监视的主机或服务都运行一个与监控中心服务器进行通信的后台程序。
1、NRPE
半被动模式,在客户端执行相关的脚本插件来获取数据,实现对客户端主机资源的监控。
开启的端口5666。
2、NSClient++
半被动模式,相当于linux系统的nrp
3、NDOUtils
不推荐用,用于将nagios的配置信息和各event产生的数据存入数据库中,以实现对这些数据的检索和处理。
4、NSCA
纯被动模式,需要同时安装在nagios的服务器和客户端。
二、安装
nagios xi是商业版,之前尝试用翻墙代理软件安装一直不成功,所以改安装开源版的nagios core。
1、准备
##安装
yum install centos-release-scl
yum install devtoolset-8
##源活
scl enable devtoolset-8 bash
yum update
2、安装LAMP
安装LAMP需要安装Apache, MariaDB(Mysql的分支)和PHP7
yum install httpd mariadb-server php php-mysql
安装完MariaDB后,可以进行安全配置
systemctl start mariadb.service
mysql_secure_installation
把MariaDB和Apache设置为开机启动
systemctl enable httpd.service
systemctl enable mariadb.service
3、安装需要的软件包
yum install glibc glibc-common wget gd gd-devel perl postfix
4、下载并安装nagios core
wget -O nagioscore.tar.gz https://github.com.cnpmjs.org/NagiosEnterprises/nagioscore/archive/nagios-4.4.6.tar.gz
tar xzf nagioscore.tar.gz
cd /tmp/nagioscore-nagios-4.4.6
./configure
make all
创建nagios用户和用户组,并把apache添加到nagios组中
make install-groups-users
usermod -a -G nagios apache
make install
运行初始化脚本
make install-daemoninit
安装nagios示例配置文件
make install-config
安装和配置nagios可以使用命令行工作
make install-commandmode
安装Apache web server配置文件
make install-webconf
systemctl restart httpd
5、创建nagios 管理员账号
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
到这步为止,nagios core基本已经安装完成。但为了Nagios core可以更好的工作,需要安装插件。
6、安装nagios插件
先要确保下面软件已经安装
yum install glibc glibc-common make gettext automake autoconf wget openssl-devel net-snmp net-snmp-utils epel-release perl-Net-SNMP
下载插件
wget --no-check-certificate -O nagios-plugins.tar.gz https://github.com.cnpmjs.org/nagios-plugins/nagios-plugins/archive/release-2.3.3.tar.gz
tar zxf nagios-plugins.tar.gz
cd nagios-plugin-release-2.3.3/
./tools/setup
./configure
make
make install
7、访问nagios core
现在以启动nagios服务
systemctl start nagios
防火墙开放80端口
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --reload
访问http://ip-addr/nagios,使用nagiosadmin登录。
三、使用NRPE监控Centos7
下面的操作是在被监控的主机上操作
1、安装需要依赖的软件
yum install -y glibc glibc-common openssl openssl-devel perl wget
2、下载nrpe
wget --no-check-certificate -O nrpe.tar.gz https://github.com.cnpmjs.org/NagiosEnterprises/nrpe/archive/nrpe-4.0.3.tar.gz
tar xzf nrpe.tar.gz
3、编译
cd /nrpe-nrpe-4.0.3/
./configure --enable-command-args
make all
4、添加用户和用户组
make install-groups-users
5、安装二制文件
make install
6、安装配置文件
make install-config
7、更新Service File
/etc/services文件用于在通过网络连接机器时把人类可读的服务名转换为端口号。
echo >> /etc/services
echo '# Nagios services' >> /etc/services
echo 'nrpe 5666/tcp' >> /etc/services
8、安装Daemon
make install-init
systemctl enable nrpe.service
9、配置防火墙
firewall-cmd --zone=public --add-port=5666/tcp
firewall-cmd --zone=public --add-port=5666/tcp --permanent
firewall-cmd --reload
10、配置文件修改
(1)/user/local/nagios/etc/nrpe.cfg
allowed_hosts=中添加nagios core server的ip
dont_blame_nrpe=1,
sed -i '/^allowed_hosts=/s/$/,10.25.5.2/' /usr/local/nagios/etc/nrpe.cfg
sed -i 's/^dont_blame_nrpe=.*/dont_blame_nrpe=1/g' /usr/local/nagios/etc/nrpe.cfg
11、启动
systemctl start nrpe.service
测试
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
12、安装nagios插件,参考上面。
在/usr/local/nagios/etc/nrpe.cfg有
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
使用check_load命令来测试NRPE
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load
如果看到类似下面的输出,说明正常。
OK - load average: 0.01, 0.13, 0.12|load1=0.010;15.000;30.000;0; load5=0.130;10.000;25.000;0; load15=0.120;5.000;20.000;0;
四、在nagios中添加监控主机和服务
1、修改主配置文件
在装好nagios后,可以通过web界面看到一个名为localhost的本地监控事例,这是由于nagios配置文件生成的模板,该配置位于/usr/local/nagios/etc/objects/localhost.cfg
$ tree /usr/local/nagios/etc/ # Nagios 配置文件目录
/usr/local/nagios/etc/
|-- cgi.cfg # web接口配置文件
|-- htpasswd.users # 登录 Nagios Web 页面时的用户名密码认证文件
|-- nagios.cfg # 主配置文件
|-- nrpe.cfg # 客户端配置文件
|-- objects # 包含其他配置文件的目录
| |-- localhost.cfg # 用于定义对主机监控
不建议将新增要监控的主机配置写在里面,因为当所要监控的主机太多,这部分会很受伤,所以,可以在/usr/local/nagios/etc/下通过建立专用文件夹,存放主机和服务的配置信息,并且可以通过不同的文件夹,来区分不同功能的服务、或不同平台的机器。
我们在/usr/local/nagios/etc下新建一个servers的文件夹
mkdir /usr/local/nagios/etc/servers
为了让nagios在启动的时候会读取该目录中我们的配置文件,修改/usr/local/nagios/etc/nagios.cfg,新增一条
cfg_dir=/usr/local/nagios/etc/servers
2、主配置文件nagios.cfg介绍
# Nagios 检索监控命令配置文件的路径
cfg_file=/etc/nagios/objects/commands.cfg
# Nagios 针对全局的变量配置文件,也称为资源(宏)定义文件
resource_file=/etc/nagios/resource.cfg
# Nagios 的状态存储数据文件,获取到的监控信息存在该文件中
status_file=/usr/local/nagios/var/status.dat
# Nagios 的监控状态间隔配置,默认多少秒执行一次监控命令
status_update_interval=10
# Nagios 服务的运行用户
nagios_user=nagios
# Nagios 服务的运行组
nagios_group=nagios
# Nagios 若需要在 Web 界面中发送命令需开启该配置项
check_external_commands=1
# Nagios 设置检查时间单位间隔长度,默认为 60s
interval_length=60
# Nagios 是否启用通知功能,1表示启用通知,0表示关闭通知。
enable_notifications={1|0}
# Nagios 设置服务检测命令的执行超时时长,若是超过该时间未能获取返回数据则判定为超时
service_check_timeout=60
# Nagios 设置主机检测命令的执行超时时长,若是超过该时间未能获取返回数据则判定机器挂掉了
host_check_timeout=30
# Nagios 设置是否启用主动服务检测机制,1表示启用,0表示关闭。
execute_service_checks={1|0}
# Nagios 设置是否接受被动服务检测的结果,1表示接受,0表示拒绝。
accept_passive_service_checks={1|0}
# Nagios 设置是否启用主动主机检测机制,1表示启用,0表示关闭。
execute_host_checks={1|0}
# Nagios 设置是否接受被动主机检测的结果,1表示接受,0表示拒绝。
accept_passive_host_checks={1|0}
# Nagios 设置是否启用事件处理,1表示启用,0表示关闭,也就是在服务出错时执行设置好的处理机制。
enable_event_handlers=1
# Nagios 产生日志文件的路径
log_file=/usr/local/nagios/var/nagios.log
# Nagios 指定日志转储的方法,n代表不做日志回滚
log_rotation_method={n|h|d|w|m}
3、添加监控主机相关的信息配置文件
vim /usr/local/nagios/etc/servers/test.cfg
# 通过 define host 关键字来让系统识别中间的内容块是用于设置设备信息的
define host {
# use 关键字表示使用的模版,模版将在后续讲解,此处使用的是 linux-server 模版
use linux-server
# host_name 关键字表示机器的名字,也是在 Web 界面中显示的名字
host_name test
# alias 表示机器的别名,一般用作机器别名的描述
alias My first Apache server
# address 设置该机器的 IP 地址,以便与数据的获取与被动监控的请求
address 127.0.0.1
# 最大的尝试次数,也就是在某服务监控出错再次运行监控命令获取数据的次数
max_check_attempts 3
# 检测的时间段
check_period 24x7
# 发送消息提醒的时间间隔
notification_interval 30
# 发送消息提醒的时间段
notification_period 24x7
}
当然还会有这样的一些配置项:
hostgroups web # 所属主机组,通常可以使用主机组来管理监控内容
check_command check-host-alive # 检测命令
check_interval 5 # 检测间隔
retry_interval 1 # 重试间隔,一次检测失败后,重试的间隔
contacts shiyanlou # 联系人
contact_groups linux-admins # 联系人组,在机器出现问题的时候告警信息发送的人员组
notification_options d,u,r # 哪种状态进行通知;d(Down),u(UNREACHABLE),r- (recovery),f,s } ,各状态及其表示符如下:
参数 含义
d —— DOWN #挂了
u —— UNREACHABLE #不可达
r —— UP(host recovery) #重新恢复态
f —— flapping #异常
s 调试宕机时间开始或结束
4、检查配置文件
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
无误的话,重启nagios。
5、添加监控服务
监控主机只能看到主机的开关机状态,但我们往往更关心主机上所运行的业务是否正常,所以,我们还需要在nagios上添加我们需要监控的服务。
创建监控服务配置文件
一般把监控主机和监控服务分开放置在两个配置文件中,比如下面的文件结构:
|-- servers
|-- test_Host.cfg
`-- test_Service.cfg
define service {
host_name test
service_description Check SSH
check_command check_ssh
max_check_attempts 2
check_interval 2
retry_interval 2
check_period 24x7
notification_interval 2
notification_period 24x7
notifications_enabled 1
register 1
}
host_name:该配置项告知 Nagios 该监控服务针对哪台设备
use:这里没有使用 use 关键字,但是在 service 中也有模版的概念,用法与 host 中的一样
check_command:该配置项指定此监控服务使用的命令(使用的命令必须在 commands.cfg 配置文件中有所指定)
max_check_attempts:该配置项指定当服务检查出现问题是最大的尝试次数
6、命令配置文件
在服务的配置文件中有一项名为check_command的配置项,它指定了监控服务所用的命令,而这个命令,就是由commands.cfg所定义的,它存在于:/usr/local/nagios/etc/objects/commands.cfg
查看一下这份文件,可以看到里面定义了一系列的命令。
7、添加联系统人
在监控的默认联系人为nagiosadmin,如果需要更改,请在/usr/local/nagios/etc/objects/contact.cfg
文件中指定:
可以根据默认的模板进行修改,不做解释了
8、添加组
当遇到类似功能或具有相同业务的服务时,我们可以分组管理,定义组的语法如下:
define hostgroup{
hostgroup_name test_servers
alias Servers For Test
members T1,T2,T3
}
alias是对该组的一个描述
定义组成员的方式,如果不想把members字段写得老长老长,还可以在每个主机的配置文件中添加下面的配置项:
hostgroups test_servers
当我们需要对一组服务器,统一监控每台服务器上的某个服务(假设是ssh服务),可以在service
的定义中加入hostgroup_name
,于是对应组的成员便都会监控该服务,这样就可以省下了许多重复性的配置工作。