Nagios监控服务
nagios监控的主要内容:
- 本地资源:负载uptime,CPU(top,sar),磁盘(df),内存(free),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主要组成部分
主程序Nagios+插件Nagios-plugins和一些可选的附加程序(NRPE、NSClient++、NSCA)等
- 服务器端必须安装nagios主程序和nagios-plugins
- 客户端必须安装nagios-plugins
- NRPE半被动模式:工作于被监控端,用于在被监控的远程linux主机上执行脚本插件获取数据回传给监控端,以实现对这些主机资源的监控,守护进程开启端口5666
NRPE运行原理
NRPE.PNG nrpe.PNGNagios 通过NRPE 来远端管理服务
-
Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
-
通过SSL,check_nrpe 连接远端机子上的NRPE daemon
-
NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
-
最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
-
Nagios 依次读取队列中的信息,再把结果显示出来。
Nagios服务器端安装:
Nagios核心和插件一键自动化安装脚本:
#!/bin/bash
##########################################################################
#Description: install Nagios Core and Nagios Plugins from source on CentOS
#Author: ZhangZihao
#Date: 2017/02/24
#Email:
##########################################################################
#判断执行此脚本的用户是否为root管理员用户
if [ $UID -ne 0 ];then
echo "Please Run This As Root"
exit 1
else
echo "开始安装Nagios"
sleep 5
fi
function install_deps(){
echo "安装系统需要的依赖包"
sleep 5
yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip
}
function download(){
echo "下载Nagios和Nagios_plugins插件"
sleep 5
cd /tmp
if [ ! -e "nagios-4.3.1.tar.gz" ];then
wget
elif [ ! -e "nagios-plugins-2.1.4.tar.gz" ];then
wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz#_ga=1.227722973.1943152835.1487897544
fi
}
function add_user(){
echo "添加Nagios的相关系统用户"
sleep 5
useradd nagios
groupadd nagcmd
usermod -a -G nagios,nagcmd apache
}
function install_nagios_core(){
echo "安装Nagios核心"
sleep 5
cd /tmp
tar zxvf nagios-4.3.1.tar.gz
cd nagios-4.3.1
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
}
function install_nagios_plugins(){
echo "安装Nagios插件"
sleep 5
cd /tmp
tar zxvf nagios-plugins-2.1.4.tar.gz
cd nagios-plugins-2.1.4
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make && make install
}
function webuser(){
echo "添加web用户和密码"
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
}
function start_nagios_httpd(){
echo "启动并设置Nagios服务"
sleep 5
/etc/init.d/nagios start
/ect/init.d/httpd start
chkconfig httpd on
chkconfig nagios on
}
function main(){
install_deps
download
add_user
install_nagios_core
install_nagios_plugins
webuser
start_nagios_httpd
}
main
服务器端NRPE一键安装脚本:
#!/bin/bash
cd /tmp
wget
tar zxvf tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
yum install openssl* -y
#安装NRPE源码包
./configure
make all && make install-plugin
if [ -e "/usr/local/nagios/libexec/check_nrpe" ];then
echo "安装成功"
else
echo "请重新检查安装步骤"
fi