Nagios监控基础安装与监控项部署(上)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nagios监控基础安装与监控项部署(上)相关的知识,希望对你有一定的参考价值。
前言:NAGIOS介绍:
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
主要功能
(1)网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
(2)主机资源监控(CPU load、diskusage、system logs),也包括Windows主机(使用NSClient++ plugin)
(3)可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
(4)可以通过配置Nagios远程执行插件远程执行脚本
(5)远程监控支持SSH或SSL加通道方式进行监控
(6)简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、php、C#等)
(7)包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
(8)可并行服务检查
(9)能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查
(10)当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知
(11)能够自定义事件处理机制重新激活出问题的服务或主机
(12)自动日志循环
(13)支持冗余监控
(14)包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等
Nagios工作原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。
要监控的服务 | 监控命令 |
cpu负载 | (check_linux_state.pl -C) |
当前用户登录数量 | (check_users) |
磁盘使用情况 | (check_disk) |
总进程数 | (check_procs) |
内存使用情况 | (check_linux_stats.pl -M) |
负载均衡 | (check_load) |
磁盘IO | (check_linux_stats.pl -I) |
网络流量 | (check_linux_stats.pl -N) |
打开的文件数量 | (check_linux_stats.pl -F) |
socket连接数 | (check_linux_stats.pl -S) |
进程使用的内存和CPU | (check_linux_stats.pl -T) |
指定的网站是否可连接 | (check_http) |
系统在线时长 | (check_uptime) |
报警功能
如果监控系统发现问题不能报警那就没有意义了,所以报警也是nagios很重要的功能之一。但是,同样的,Nagios 自身也没有报警部分的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成的。
Nagios 安装,是指基本平台,也就是Nagios软件包的安装。它是监控体系的框架,也是所有监控的基础。
打开Nagios官方的文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或者其他Nagios支持的系统。不过如果你没有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。关于apache的安装,网上有很多,照着安装就是了。安装之后要检查一下是否可以正常工作。
知道Nagios 是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远端服务器对象的。Nagios 系统提供了一个插件NRPE。Nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:
Nagios 通过NRPE 来远端管理服务
1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。
2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon
3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)
4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。
5. Nagios 依次读取队列中的信息,再把结果显示出来。
NAGIOS安装
一、nagios服务器端安装准备
1、Nagios服务器与客户端服务器列表:
系统版本 | CentOS release 6.8 (Final) |
监控服务器 (一台) | IP地址:10.1.1.66/24 主机名称:nagios01 |
远程客户端 (两台) | IP地址:10.0.0.8 主机名称:web01
IP地址:10.0.0.7 主机名称:web02 |
2、设置yum源
默认yum会从国外下载,速度慢,因此要换成国内提供的yum源,方便快捷。
先测试服务器是否可以上网: [[email protected] ~]# ping -c 1 aliyum.com PING aliyum.com (69.64.147.242) 56(84) bytes of data. 64 bytes from rc.hotkeys.com (69.64.147.242): icmp_seq=1 ttl=128 time=276 ms
然后更改yum源: [[email protected] ~]# cd /etc/yum.repos.d/ [[email protected] yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.ori [[email protected] yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo #---更新为阿里云提供的yum地址
3、解决perl软件编译问题
在安装好nagios监控服务后,还要安装perl插件程序,因此设置环境变量:
[[email protected] ~]# echo ‘export LC_ALL=C‘ >>/etc/profile [[email protected] ~]# tail -1 /etc/profile export LC_ALL=C [[email protected] ~]# echo $LC_ALL C [[email protected] ~]# source /etc/profile #---使环境变量生效
4、关闭nagios server端防火墙和selinux
[[email protected] ~]# /etc/init.d/iptables stop [[email protected] ~]# /etc/init.d/iptables status [[email protected] ~]# chkconfig iptables off [[email protected] ~]# chkconfig --list iptables -------------------------- [[email protected] ~]# cp /etc/selinux/config /etc/selinux/config.ori #---操作前的备份 [[email protected] ~]# sed -i ‘s#SELINUX=enforcing#SELINUX=disabled#g‘ /etc/selinux/config #---永久关闭,需要重启生效 [[email protected] ~]# grep SELINUX=disabled /etc/selinux/config [[email protected] ~]# setenforce 0 #---(临时生效) [[email protected] ~]# getenforce Permissive
5、解决系统时间同步问题
如果不解决时间服务器时间同步问题,可能会导致nagios整个服务配置异常甚至失败
[[email protected] ~]# yum install -y ntp #---yum安装ntp时间服务 [[email protected] ~]# /usr/sbin/ntpdate time.nist.gov 1 Jun 13:58:42 ntpdate[39489]: adjust time server 216.229.0.179 offset 0.021741 sec [[email protected] ~]# crontab -l #---设置定时任务,同步时间 #time sync by oldboy at 2010-2-1 */5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
前期准备完毕
6、安装nagios服务端所需软件包
[[email protected] ~]# yum install gcc glibc glibc-common -y #---编译软件升级 [[email protected] ~]# yum install gd gd-devel -y #---后期php出图所用包 [[email protected] ~]# yum install mysql-server -y #---若监控数据库,则需要提前安装 [[email protected] ~]# yum install httpd php php-gd -y #---apache php环境 检查LAMP环境: [[email protected] ~]# rpm -qa httpd mysql php httpd-2.2.15-59.el6.centos.x86_64 mysql-5.1.73-8.el6_8.x86_64 php-5.3.3-49.el6.x86_64
7、创建nagios服务端需要的用户和组
[[email protected] ~]# /usr/sbin/useradd -m nagios [[email protected] ~]# /usr/sbin/useradd apache -M -s /sbin/nologin useradd: user ‘apache‘ already exists #---使用yum安装httpd时,apache用户会同时创建好 [[email protected] ~]# /usr/sbin/groupadd nagcmd [[email protected] ~]# /usr/sbin/usermod -a -G nagcmd nagios [[email protected] ~]# /usr/sbin/usermod -a -G nagcmd apache [[email protected] ~]# id -n -G nagios nagios nagcmd [[email protected] ~]# id -n -G apache apache nagcmd #---注:如果通过编译安装的apache,默认用户为daemon,此时要执行 [[email protected] ~]# /usr/sbin/usermod -a -G nagcmd daemon [[email protected] ~]# groups apache #---也可以 groups 加用户名 查询 apache : apache nagcmd
8、上传软件包到指定目录或url下载
[[email protected] ~]# mkdir -p /home/oldboy/tools/nagios [[email protected] ~]# cd /home/oldboy/tools/nagios/ [[email protected] nagios]# wget https://jaist.dl.sourceforge.net/project/nagios/nagios-3.x/nagios-3.5.1/nagios-3.5.1.tar.gz [[email protected] nagios]# wget https://nagios-plugins.org/download/nagios-plugins-2.1.4.tar.gz [[email protected] nagios]# /etc/init.d/httpd restart #---启动LAMP环境的http服务 #报错是host解析有问题,以及httpd.conf中缺少ServerName的配置,可以在/etc/httpd/conf/httpd.conf加入ServerName 127.0.0.1:80即可 Stopping httpd: [ OK ] Starting httpd: httpd: apr_sockaddr_info_get() failed for nagios01 httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName [ OK ] [[email protected] nagios]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME httpd 39909 root 4u IPv6 54594 0t0 TCP *:http (LISTEN) httpd 39911 apache 4u IPv6 54594 0t0 TCP *:http (LISTEN)
二、安装配置Nagios服务器端
1、切换到软件包下载目录,编译安装
[[email protected] nagios]# cd /home/oldboy/tools/nagios [[email protected] nagios]# tar xf nagios-3.5.1.tar.gz [[email protected] nagios]# cd nagios [[email protected] nagios]# pwd /home/oldboy/tools/nagios/nagios [[email protected] nagios]# ./configure --with-command-group=nagcmd #---如果是编译安装的httpd,则需要加一个参数--with-httpd-conf=/usr/local/apache2/conf/extra,即指定编译nagios web配置的生成路径 ..略.. Review the options above for accuracy. If they look okay, type ‘make all‘ to compile the main program and CGIs. #---出现以上两行表示正常 [[email protected] nagios]# make all .. Enjoy. [[email protected] nagios]# make install .. make install-init - This installs the init script in /etc/rc.d/init.d make install-commandmode - This installs and configures permissions on the directory for holding the external command file make install-config - This installs sample config files in /usr/local/nagios/etc make[1]: Leaving directory `/home/oldboy/tools/nagios/nagios‘ #---根据提示进行后续操作: [[email protected] nagios]# make install-init #---安装初始化脚本到/etc/rc.d/init.d [[email protected] nagios]# make install-config #---生成nagios模板配置 [[email protected] nagios]# make install-commandmode #---安装配置目录,许可外部命令文件
2、安装nagios web配置文件及创建登录用户
(生成nagios对应apache里的配置文件)
[[email protected] nagios]# make install-webconf #---生成 /etc/httpd/conf.d/nagios.conf配置文件 /usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf *** Nagios/Apache conf file installed *** [[email protected] nagios]# cd .. [[email protected] nagios]# pwd /home/oldboy/tools/nagios 上面监控界面创建完,然后创建登录用户 [[email protected] nagios]# htpasswd -bc /usr/local/nagios/etc/htpasswd.users oldboy 123456 Adding password for user oldboy [[email protected] nagios]# cat /usr/local/nagios/etc/htpasswd.users oldboy:vdV.OwMSzfJrQ 重载apache服务 [[email protected] nagios]# /etc/init.d/httpd reload Reloading httpd:
3、添加监控信息接收的Email地址
[[email protected] nagios]# sed -i ‘s#[email protected]#[email protected]#g‘ /usr/local/nagios/etc/objects/contacts.cfg #---邮箱随意
然后开启邮箱服务
a)法1:启用依赖监控本机的邮箱服务postfix
[[email protected] nagios]# /etc/init.d/postfix start Starting postfix: [ OK ] [[email protected] nagios]# lsof -i :25 [[email protected] nagios]# chkconfig postfix on [[email protected] nagios]# chkconfig --list postfix postfix 0:off1:off2:on3:on4:on5:on6:off 若postfix启动缓慢,可以修改hosts做好ip和主机名的映射 [[email protected] nagios]# grep nagios /etc/hosts 10.0.0.71nagios01 发邮件测试服务启动状态: [[email protected] nagios]# mail -s "test" [email protected] </etc/hosts [[email protected] nagios]# mailq -Queue ID- --Size-- ----Arrival Time---- -Sender/Recipient------- ..略..
b)法2:使用第三方邮件服务商提供的服务,qq或163邮箱,只需要修改/etc/mail.rc即可,此处只做简单介绍
[[email protected] nagios]# echo "set [email protected] smtp=smtp.163.com smtp-auth-user=xxx smtp-auth-password=xxx smtp-auth=login" >>/etc/mail.rc
4、开机自启动apache服务
[[email protected] nagios]# /etc/init.d/httpd status httpd (pid 39991) is running... [[email protected] nagios]# chkconfig httpd on [[email protected] nagios]# chkconfig --list httpd httpd 0:off1:off2:on3:on4:on5:on6:off
此时浏览器打开http://10.0.0.71/nagios/(指server_ip)登录后显示如下界面,表示nagios web环境正常
5、安装nagios插件包
nagios插件包就是一些实现获取数据信息的命令及程序。nagios通过它们,才能够获取到需要的数据,然后进行报警和展示。
安装步骤如下:
1)基础依赖包
[[email protected] objects]# yum install perl-devel openssl-devel -y
2)安装nagios-plugins
[[email protected] nagios]# pwd /home/oldboy/tools/nagios [[email protected] nagios]# tar xf nagios-plugins-2.1.4.tar.gz [[email protected] nagios]# cd nagios-plugins-2.1.4
#开始编译
[[email protected] nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-prel-modules --with-mysql [[email protected] nagios-plugins-2.1.4]# make [[email protected] nagios-plugins-2.1.4]# make install
#编译完成,检查插件个数(大概60左右,不用纠结一两个的差异)
[[email protected] nagios-plugins-2.1.4]# cd .. [[email protected] nagios]# ls /usr/local/nagios/libexec/ |wc -l 60
6、安装nrpe软件
nrpe,在服务端与客户端都需要。服务端安装是因为:需要ckeck_nrpe插件做被动检查,没有nrpe软件就没有check_nrpe插件
另外,nagios服务端也需要做资源监控,nagios服务端既是服务端也是客户端
命令如下:
[[email protected] nagios]# wget https://jaist.dl.sourceforge.net/project/nagios/nrpe-2.x/nrpe-2.15/nrpe-2.15.tar.gz nrpe.2.15 [[email protected] nagios]# tar xf nrpe-2.15.tar.gz [[email protected] nagios]# cd nrpe-2.15 [[email protected] nrpe-2.15]# ./configure [[email protected] nrpe-2.15]# make all [[email protected] nrpe-2.15]# make install-plugin [[email protected] nrpe-2.15]# make install-daemon [[email protected] nrpe-2.15]# make install-daemon-config [[email protected] nrpe-2.15]# cd .. [[email protected] nagios]# ls /usr/local/nagios/libexec/check_nrpe [[email protected] nagios]# ls /usr/local/nagios/libexec/|wc -l #---检查插件 61
#注:nrpe生成的配置文件为/usr/local/nagios/etc/nrpe.cfg
7、配置并启动nagios服务
[[email protected] nagios]# chkconfig nagios on [[email protected] nagios]# chkconfig --list nagios nagios 0:off1:off2:on3:on4:on5:on6:off 或 [[email protected] nagios]# echo -e "#open nagios\n/etc/init.d/nagios start" >>/etc/rc.local [[email protected] nagios]# tail -2 /etc/rc.local
#---检查语法
[[email protected] nagios]# /etc/init.d/nagios checkconfig Running configuration check... OK.
#---使用命令行命令检查报错信息
[[email protected] nagios]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Total Warnings: 0 #---若其中一项不为0,必须解决,否则nagios无法启动 Total Errors: 0
#---启动nagios服务
[[email protected] nagios]# /etc/init.d/nagios start Starting nagios: done. [[email protected] nagios]# ps -ef |grep nagios|grep -v grep nagios 69131 1 0 14:48 ? 00:00:00 /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg [[email protected] nagios]# netstat -lntup |grep nagios #nagios服务没有端口号。。
三、安装配置Nagios客户端
1、环境准备和服务端一致
yum源安装、关闭nagios server端的iptables,及selinux,ntp系统时间同步问题
2、基础系统软件
[[email protected] ~]# yum install gcc glibc glibc-common -y [[email protected] ~]# yum install mysql-server -y
3、上次nagios相关软件包
[[email protected] ~]# cd /home/oldboy/tools/nagio
4、添加用户
[[email protected] nagios]# useradd nagios -M -s /sbin/nologin
5、安装nagios-plugins插件
[[email protected] nagios]# yum install perl-devel perl-CPAN openssl-devel -y [[email protected] nagios-plugins-2.1.4]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios --enable-prel-modules --with-mysql [[email protected] nagios-plugins-2.1.4]# make [[email protected] nagios-plugins-2.1.4]# make install [[email protected] nagios-plugins-2.1.4]# cd .. [[email protected] nagios]# ls /usr/local/nagios/libexec/ |wc -l #---插件数统计 60
6、安装nagios客户端nrpe软件
[[email protected] nagios]# tar xf nrpe-2.15.tar.gz [[email protected] nagios]# cd nrpe-2.15 [[email protected] nrpe-2.15]# ./configure [[email protected] nrpe-2.15]# make all [[email protected] nrpe-2.15]# make install-plugin [[email protected] nrpe-2.15]# make install-daemon [[email protected] nrpe-2.15]# make install-daemon-config #---生成nrpe.cfg [[email protected] nrpe-2.15]# cd ..
7、客户端其他相关软件的安装
[[email protected] nagios]# ls |egrep "^*[gz,rar]$" check_iostat.rar check_memory.rar check_mysql.rar #---对于rar文件解压: 下载:wget http://rarsoft.com/rar/rarlinux-4.0.1.tar.gz 然后解压,切换到解压目录,最后make。 Class-Accessor-0.31.tar.gz Config-Tiny-2.12.tar.gz libart_lgpl-2.3.17.tar.gz Math-Calc-Units-1.07.tar.gz Nagios-Plugin-0.34.tar.gz Params-Validate-0.91.tar.gz Regexp-Common-2010010201.tar.gz
#以下是ckeck_iostat插件需要安装的依赖包,若你不需要check_iostat可以忽略这儿一步
#---插件很小,可以批量执行
#------------------
[[email protected] scripts]# cat iostat.sh #!/bin/bash ############################################################## # File Name: iostat.sh # Version: V1.0 # Author: # Organization: # Created Time : 2017-06-04 16:49:00 # Description: ############################################################## for n in Params-Validate-0.91,Class-Accessor-0.31,Config-Tiny-2.12,Math-Calc-Units-1.07,Regexp-Common-2010010201,Nagios-Plugin-0.34 do cd /home/oldboy/tools/nagios/ tar -zxvf "$n".tar.gz cd $n perl Makefile.PL make && make install cd .. done #----------------------------------
#---安装系统性能分析的工具,监控系统性能时程序或脚本会调用这些工具
[[email protected] nagios]# yum install sysstat -y
关于sysstat工具:
sysstat 工具包中包含两类工具:
即时查看工具:iostat、mpstat、sar
累计统计工具:sar
也就是说,sar 具有这两种功能。因此,sar 是 sysstat 中的核心工具。
为了实现 sar 的累计统计,系统必须周期地记录当时的信息,这是通过调用 /usr/lib/sa/ 中的三个工具实现的:
sa1 :收集并存储每天系统动态信息到一个二进制的文件中,用作 sadc 的前端程序
sa2 :收集每天的系统活跃信息写入总结性的报告,用作 sar 的前端程序
sadc :系统动态数据收集工具,收集的数据被写入一个二进制的文件中,它被用作 sar 工具的后端
监视物理组件的高级linux命令小结:
内存 | top free vmstat mpstat iostat sar |
CPU | top vmstat mpstat iostat sar |
I/O | vmstat mpstat iostat sar |
进程 | ipcs ipcrm |
负载 | uptime |
8、配置监控内存、磁盘I/O脚本插件
[[email protected] scripts]# yum install dos2unix -y [[email protected] nagios]# pwd /home/oldboy/tools/nagios
#---将内存、I/O监控脚本放到nagios启动脚本目录下
[[email protected] nagios]# cp check_memory.pl /usr/local/nagios/libexec/ [[email protected] nagios]# cp check_iostat /usr/local/nagios/libexec/ [[email protected] nagios]# chmod 755 /usr/local/nagios/libexec/check_memory.pl [[email protected] nagios]# chmod 755 /usr/local/nagios/libexec/check_iostat [[email protected] nagios]# dos2unix /usr/local/nagios/libexec/check_memory.pl #---转换格式 dos2unix: converting file /usr/local/nagios/libexec/check_memory.pl to UNIX format ... [[email protected] nagios]# dos2unix /usr/local/nagios/libexec/check_iostat dos2unix: converting file /usr/local/nagios/libexec/check_iostat to UNIX format ...
9、nagios 客户端配置nrpc服务
[[email protected] local]# cd /usr/local/nagios/etc/ [[email protected] etc]# sed -n ‘81p‘ nrpe.cfg allowed_hosts=127.0.0.1 1)加入可以监控client的nagios server端ip: [[email protected] etc]# sed -i ‘s#allowed_hosts=127.0.0.1#allowed_hosts=127.0.0.1,10.0.0.71#g‘ nrpe.cfg [[email protected] etc]# sed -n ‘81p‘ nrpe.cfg allowed_hosts=127.0.0.1,10.0.0.71 #---注意:此处设置的为nagios server端Ip
2)添加监控内容:负载、内存、磁盘、虚拟内存、I/0 5个监控项
[[email protected] etc]# cat nrpe.cfg |awk ‘NR>=225&&NR<=230 {print}‘ #lookking I/O cpu command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20 command[check_mem]=/usr/local/nagios/libexec/check_memory.pl -w 10% -c 3% command[check_disk]=/usr/local/nagios/libexec/check_disk -w 15% -c 7% -p / command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10% command[check_iostat]=/usr/local/nagios/libexec/check_iostat -w 6 -c 10 -p
以上都是本地服务,原理:由nagios server通过nrpc插件,定时在client中执行脚本插件,并从nrpc服务上获取信息(这样的模式为被动监控,与nsca的客户端主动提交结果并不冲突)
3)启动客户端 nrpc的守护进程
[[email protected] etc]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d [[email protected] etc]# netstat -lntup |grep nrpe tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 57515/nrpe
重启nrpc方法:pkill nrpc 然后启动守护就可以,或者将服务加入开机自启动
至此,Nagios Server与Nagios Client端的基础安装配置就算完成了,之后会更新Nagios服务端配置监控项的知识---Nagios监控基础安装与监控项部署(上)
本文出自 “Linuxgao” 博客,谢绝转载!
以上是关于Nagios监控基础安装与监控项部署(上)的主要内容,如果未能解决你的问题,请参考以下文章