Nagios 是一款自动化运维工具,可以协助运维人员监控服务器的运行状况,并且拥有报警功能。本文章将介绍其安装方法和详细的配置方法。

总结

  1. 可以做资源,网络,应用服务的监控
  2. 配置上需要配置被监控的,服务,账号等信息
  3. 有 web 管理界面可操作
  4. 教程里没有提及被监控端的配置,暂止,估计坑多。

nagios 监控服务应用指南

  • 本地资源:负载,CPU,磁盘,内存。IO,RAID,温度,passwd文件变化,本地所有文件指纹识别
  • 网络服务:端口,URL,丢包,进程,网络流量
  • 其他设备:交换机,打印机,windows等。
  • 业务数据:用户登录失败次数,用户登录网站次数,输入验证码失败的次数,某个API接口流量并发,电商网站订单,支付交易的数量

nagios主要功能

  • 网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
  • 主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)
  • 指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
  • 通过配置Nagios远程执行插件远程执行脚本
  • 远程监控支持SSH或SSL加通道方式进行监控
  • 简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)
  • 包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
  • 可并行服务检查
  • 能够定义网络主机的层次, 允许逐级检查, 就是从父主机开始向下检查
  • 当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知
  • 能够自定义事件处理机制重新激活出问题的服务或主机
  • 自动日志循环
  • 支持冗余监控
  • Web界面可以查看当前网络状态,通知,问题历史,日志文件等

机器分配

本次项目只对被监控端做简单测试,所以被监控端不需安装nagios插件。
角色 IP地址 所用软件
监控端 10.211.55.4 nagios-4.4.2、nagios-plugins-2.2.1
被监控端 10.211.55.5

操作步骤

安装环境包

yum install -y \
-- gcc \
-- glibc \
-- glibc-common \
-- gd \
-- gd-devel \
-- xinetd \
-- openssl-devel

创建管理用户
useradd -s /sbin/nologin nagios

创建安装目录,指定属主属组
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios

编译安装nagios

wget http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.4.2/nagios-4.4.2.tar.gz
tar -zxvf nagios-4.4.2.tar.gz -C /opt

cd /opt/nagios-4.4.2
./configure --prefix=/usr/local/nagios
make all
make install
make install-init
make install-commandmode
make install-config

验证安装结果
ls /usr/local/nagios

安装nagios-plugins

wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz
tar xvzf nagios-plugins-2.2.1.tar.gz -C /opt

cd /opt/nagios-plugins-2.2.1
./configure --prefix=/usr/local/nagios
make && make install

配置nagios监控系统

修改httpd.conf
vim /etc/httpd/conf/httpd.conf
User nagios
Group nagios //修改原用户名apache为nagios

  DirectoryIndex index.html index.php //增加index.php

AddType application/x-httpd-php .php //插入该句

增加安全验证配置
为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件最后插入如下信息:

vim /etc/httpd/conf/httpd.conf
#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"

AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd

Require valid-user

Alias /nagios "/usr/local/nagios/share"

AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user

设置登陆用户名及密码
htpasswd -c /usr/local/nagios/etc/htpasswd chen

配置nagios

配置nagois 一般在目录/usr/local/nagios/etc/下

templates.cfg
主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用。contact_groups 联系组属性改成 np 将在后面的contacts.cfg文件中定义

vim /usr/local/nagios/etc/object/templates.cfg
contact_groups np //文中有五处都需修改

resource.cfg文件
resource.cfg是nagios的变量定义文件 一般无需更改

commands.cfg文件
此文件默认是存在的,无需修改即可使用,当然如果有新的命令需要加入时,在此文件进行添加即可

hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,注意书写格式,不要有多余的空格

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{

use linux-server //引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name Nagios-Linux //主机名,自定义
alias Nagios-Linux //主机别名
address 10.211.55.5 //被监控的主机地址,这个地址可以是ip,也可以是域名。
}

define hostgroup{ //定义一个主机组
hostgroup_name bsmart-servers //主机组名称,可以随意指定。
alias bsmart servers //主机组别名
members Nagios-Linux //主机组成员,其中“Nagios-Linux”就是上面定义的主机。

}

localhost.cfg
用来监控本机 一般无需更改

services.cfg
此文件默认也不存在,需要手动创建,主要用于定义监控的服务和主机资源

vim /usr/local/nagios/etc/objects/services.cfg
define service{

use local-service //引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
host_name Nagios-Linux //指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。
service_description check-host-alive //对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive //指定检查的命令。
}

contacts.cfg
contacts.cfg是一个定义联系人和联系人组的配置文件,注意书写格式。

vim /usr/local/nagios/etc/objects/contacts.cfg
define contact{
contact_name chen //联系人的名称,这个地方不要有空格
use generic-contact //引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
alias Nagios Admin
email 332846174@qq.com //填入真实可用邮箱,也可不写
}
define contactgroup{
contactgroup_name np //联系人组的名称,同样不能空格
alias Technical Support //联系人组描述,言简意赅,能懂什么意思就行
members chen //联系人组成员,其中“chen”就是上面定义的联系人,如果有多个联系人则以逗号相隔
}

    cgi.cfg

此文件用来控制相关cgi脚本,由于nagios的web监控界面验证用户为chen,所以只需在cgi.cfg文件中添加此用户的执行权限

default_user_name=chen
authorized_for_system_information=nagiosadmin,chen

authorized_for_configuration_information=nagiosadmin,chen

authorized_for_system_commands=chen
authorized_for_all_services=nagiosadmin,chen

authorized_for_all_hosts=nagiosadmin,chen
authorized_for_all_service_commands=nagiosadmin,chen

authorized_for_all_host_commands=nagiosadmin,chen //配置文件末尾插入

nagios.cfg
将对象配置文件在Nagios.cfg文件中进行引用

vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg //合适的位置插入
command_check_interval=10s //该变量用于设置nagios对外部命令检测的时间间隔,插入即可。

验证配置文件准确性
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

重启服务
systemctl restart httpd.service
systemctl restart nagios.service

访问nagios网站

该网站设置了登陆验证,所以在访问网站是输入之前设置的用户名和密码即可登陆网站。

http://10.211.55.4/nagios/

增加主机数

修改hosts.cfg文件
此文件默认不存在,需要手动创建,hosts.cfg主要用来指定被监控的主机地址以及相关属性信息,注意书写格式,不要有多余的空格

vim /usr/local/nagios/etc/objects/hosts.cfg
define host{

use linux-server //引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name Nagios-Linux //主机名,自定义
alias Nagios-Linux //主机别名
address 10.211.55.5 //被监控的主机地址,这个地址可以是ip,也可以是域名。
}

define host{
use linux-server
host_name Nagios-Linu
alias Nagios-Linu
address 10.211.55.6
}

define hostgroup{ //定义一个主机组
hostgroup_name bsmart-servers //主机组名称,可以随意指定。
alias bsmart servers //主机组别名
members Nagios-Linux,Nagios-Linu //主机组成员,其中“Nagios-Linux”就是上面定义的主机。

}

重启服务
systemctl restart httpd。service
systemctl restart nagios.service

参考

CentOS 7.4 下安装部署Nagios监控系统详细攻略

最新文章

  1. Java手动添加SSL证书
  2. 在虚拟上安装kali
  3. cf666 C. Codeword 组合数学 离线分块思想
  4. C# 验证IP是否正确简易方法 源代码
  5. hadoop配置错误
  6. SIP SDP RTSP RTP RTCP webrtc
  7. css字体大小设置em与rem的区别
  8. PHP接口的声明与引用
  9. Unity3D中使用KiiCloud总结一
  10. Android批量图片加载经典系列——使用二级缓存、异步网络负载形象
  11. B. Pasha and Phone
  12. 一个有意思的Python小程序(全国省会名称随机出题)
  13. HOG OpenCV 代码片段
  14. VIM学习一: VIM命令学习及插件介绍
  15. 《JavaScript 高级程序设计》读书笔记四 变量 作用域 内存
  16. 三个线程T1,T2,T3.保证顺序执行的三种方法
  17. css 样式 记录
  18. nginx概述
  19. Python pickle 模块
  20. Python open 对应的参数

热门文章

  1. JavaScript数据类型 String字符串类型
  2. Elasticsearch6.3.2启动过程源码阅读记录
  3. [物理学与PDEs]第2章习题3 Laplace 方程的 Neumann 问题
  4. MVC控制器返回一个list 视图接收
  5. 支持动态调频_配置AXP228电源管理_4核8核兼容设计_iTOP-4418/6818开发板
  6. 函数语法:JS获取浏览器窗口大小 获取屏幕,浏览器,网页高度宽度(转载)
  7. Leetcode#521. Longest Uncommon Subsequence I(最长特殊序列 Ⅰ)
  8. ve2.0 v-for循环报错的解决方案
  9. Kotlin 检查空类型
  10. python模块 - pywinauto(windows自动化安装软件)