看我出招之:我用Nagios(技术细节)
作为系统管理员,我最担心那些重要的在线系统在我不知情的情况下停机或者停止网络服务,而且那些发生故障的服务或主机有时候可能要好长一段时间才知道(这种情况多发生在节假日),只要一到节假日,很多系统管理员就紧张不已。要改变这种被动局面,我在这里推荐网络监控软件Nagios,个人认为它最大的好处是可以发故障报警短信—只要Nagios监控的对象发生故障,系统就会自动发送短信到手机上。下面摘录Nagios官方网站的描述:
Nagios is an open source host, service and network monitoring program. Who uses it? Lots of people, including many big companies and organizations:Nagios是一个用来监控主机、服务和网络的开放源码软件,很多大的公司或组织都在使用它。在我来到现在这个机构之前,已经有一个Netsaint(nagios的老版本)在监控那些在线服务器,但是不完善,后来我立了一个项,部署了新的监控平台nagios把所有的在线服务器都监控起来了;到目前为止,监控了413个主机和754个服务。
虽然Nagios十分受用,但配置起来确是麻烦,根据其读音我给它取可一个中文名-难够死。基于这样的原因,我将尽可能详细地向大家讲述我用Nagios的过程以及心得,希望对初学者有所帮助。
(一) 安装所需软件
一、安装Nagios
Nagios可以运行在各种版本的linux及主流的unix环境,我试过的环境有Redhat linux,Centos,Debian等。在实际的运维中,我是以centos 4来部署nagios的。安装完操作系统之后,需要把多余的服务都关掉,只留sshd这个服务。然后用wget下载源码包nagios-2.6.tar.gz和httpd-2.2.0.tar.gz。接下来先分别安装软件,过程如下:
1、 解压nagios. tar zxvf nagios-2.6.tar.gz
2、 配置nagios. cd nagios ; ./configure –prefix=/usr/local/nagios
3、 编译nagios. make all
4、 安装nagios。与别的软件安装稍有不同,nagios的安装要好几步才能完成。第一步执行make install安装主要的程序、CGI及HTML文件,第二步执行 make install-commandmode 给外部命令访问nagios配置文件的权限,第三步执行 make install-config 把配置文件的例子复制到nagios的安装目录。按照安装向导的提示,其实这里还有一个 make install-init的步骤,它的作用是把nagios做成一个运行脚本,使nagios随系统开机启动,这是一个很方便的措施。但本人是一个喜欢把问题简化的人,没有执行这样的操作。
5、 验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在 etc、bin、 sbin、 share、 var这五个目录,如果存在则可以表明程序被正确的安装到系统了。后表是五个目录功能的简要说明:
|
Nagios执行程序所在目录,这个目录只有一个文件nagios
|
|
Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
|
|
Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录
|
|
|
|
|
二、安装nagios的插件
没有插件,nagios将什么作用也没有,插件也是nagios扩展功能的强大武器,除了下载常用的插件外,我们还可以根据实际要求编写自己的插件。Nagios的插件nagios-plugins-1.4.5在www.nagios.org上可以找到,接着我们用wget下载它。注意:插件与nagios之间的版本关联不大,不一定非得用nagios-plugins-1.4.5这个版本。下载完成后,安装它是很简单的:先执行配置 ./configure –prefix=/usr/local/nagios ,接着编译安装 make ; make install即可。这里需要说明一下的是在配置过程指定的安装路径是/usr/local/nagios,而不是/usr/local/nagios-plus,安装完成后,将在目录/usr/local/nagios生成目录libexec(里面有很多文件),这正是nagios所需要的。
三、安装web服务器apache
Web服务不是nagios所必须的,但是如果nagios没有web,查看监控对象的状态将是非常费事和没有趣味的事情(只有通过查看nagios的日志来判断状态)。我不愿干特无聊的事,所以就花少许时间把web安装一下。
在unix/linux世界,apache是web服务器的首选对象,其下载网站为www.apache.org 。建议下载源码。因为我们不需要很复杂的web功能,因此简单的执行一下几个步骤就可以正确的把apache安装到系统:
1、 解包、配置:tar zxvf httpd-2.2.0.tar.gz ; cd httpd-2.2.0 ; ./configure –prefix=/usr/local/apache 。
2、 编译安装: make ; make install 。
安装完成后,执行命令 ./usr/local/apache/bin/apachectl –t 检查一下apache是否正确安装。
(二)、配置前的处理
最主要的工作是创建nagios用户及其属组,让nagios的运行用户为nagios而不是root。再把目录/usr/local/nagios的属主设置为nagios,以保证系统的安全。Nagios可以以root用户运行,但并不推荐这样做。用下面的步骤来完成上述过程:
1、添加系统帐户nagios: useradd nagios 就很容易的把用户和组nagios添加到系统。有的类型的linux发行版添加用户和组要麻烦一些-需要手动添加组,然后再执行 useradd –g nagios nagios这样的操作。在实际的运用场景,nagios用户并没有必要作为系统用户来登录linux系统,因此可以不必设置nagios的用户密码,甚至可以把nagios用户的登录shell设置成/bin/false。
2、更改目录属组:chown –R nagios.nagios /usr/local/nagios 。请注意,有的unix/linux的版本用户和属组分隔符号不是“.”,可能会是这样的形式 chown –R nagios:nagios /usr/local/nagios 。
3、sendmail。看看sendmail是否正常运行?我们需要使用sendmail来发送故障报警信息,所以这个包必须能够正常工作。Sendmail分为服务器和客户端两部分,有2种发送报警邮件的方式:(1)nagios所在的机器通过sendmail客户端程序把邮件发送到专门的邮件服务器,再由邮件服务器把消息发送到用户邮箱。(2)邮件客户端和服务器端就用nagios所在系统sendmail。第一种方式用起来非常规范,但更麻烦,例如需要做地址解析、修改邮件服务器的配置;另外还有一个问题-它还依赖别的系统,增加了故障点和复杂度。第二种方法十分简单,只需启动sendmail服务即可,而且它不再依赖于别的系统和服务。在我工作的实际场景,这两种方法都使用,用专门的邮件服务器会有发送延迟的情况(因为邮件服务器要处理很多其他用户邮件的收发);而直接用sendmail做服务器和客户端就异常简单和方便了。非常幸运的是,几乎所有的linux/unix发行版都默认安装sendmail,费了这么多笔墨,其实就做一个动作-把sendmail服务运行起来。
4、手机短信发送工具。我现在的公司是sp,有自己的短信通道,直接把发送短信的客户端程序sms_send拷贝到目录/usr/local/bin/下。如果没有短信下发的网关通道,那怎么办呢?网络上有很多短信发送的客户端程序,很有名的就是smsclient,把它下载下来,解包后安装。不要忘记购买手机modem和手机卡,modem只支持SIM卡而不支持cdma。安装完smsclient软件和硬件modem后,测试一下是否正常。如果没有modem又怎么办?办法还是有的:让你的手机号可以接受邮件,这需要你去营业厅开通这项功能。短信报警功能是最有用的功能,我们不可能成天盯着监视屏幕,也不可能成天接受电子邮件,但我们的手机却可以24小时在线,只要被监控对象发生故障,马上就可以收到故障报警短信。以前,我很怕放长假,因为最担心关键的设备或服务在假期出故障而自己不知道,所以放假就变成了值班;想必很多网络管理员都有类似的经历。在我动手部署nagios以前,曾经在网上搜索关于nagios配置的文章,发现绝大部分都没有介绍使用手机短信这个方便的功能,真是遗憾呀!在此,强烈建议启用nagios的短信故障报警功能。
(二)、配置
配置是nagios最复杂的部分,它涉及到多个文件的配置,为了方便描述,这里逐个的进行配置。
一、apache 配置。
我们分两个步骤来完成这个配置。第一步是修改apache的配置文件httpd.conf,这里的文件路径是 /usr/local/apache/conf/httpd.conf 。把apache的运行用户[1]和运行组改成nagios,往下把下面的行追加到文件httpd.conf的末尾:
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory "/usr/local/nagios/sbin"> //Cgi文件所在目录
AuthUserFile /usr/local/nagios/etc/htpasswd //验证文件路径
Alias /nagios /usr/local/nagios/share
<Directory "/usr/local/nagios/share"> //nagios页面文件目录
AuthUserFile /usr/local/nagios/etc/htpasswd //验证文件路径
|
上述文本块的作用是对nagios的目录进行用户验证,只有合法的授权用户才可以访问nagios的页面文件。第二步是生成用户验证文件:只要执行命令 /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd sery ,就会生成web的合法访问用户sery;命令交互执行,需要输入2次密码,然后就在文件/usr/local/nagios/etc/htpasswd写入一行-第一个字段是刚生成的用户名,第二个是加密后的密码,如果还要添加更多的用户,执行命令 htpasswd 就不需要选项 “-c”,否则就会覆盖所有已经生成的行。
配置完成后,执行/usr/local/apache/bin/apachctl –t 检查apache配置文件是否有语法错误,无误后用/usr/local/apache/bin/apachctl start & 把apache启动,然后从另外的机器的浏览器输入nagios 的访问地址(如:http://ip/nagios),如果正常,将出现下图的登录验证窗口等待用户输入:
输入用htpasswd创建的用户名和密码测试一下,没有问题的话,进行下一步配置操作。
刚安装完成的nagios,其配置文件的目录是/usr/local/nagios/etc,下图是其etc目录的文件:
先把这些文件改名,如 cgi.cfg-sample改成cgi.cfg ,用命令cp cgi.cfg-sample cgi.cfg …依样把余下的几个*.cfg-sample都复制成*.cfg文件。从nagios2.6版开始,不用修改配置文件localhost.cfg就可以直接运行../bin/nagios –v nagios.cfg验证程序是否能正常运行(nagios2.5及以前版本的最小运行的配置文件是minimal.cfg,但需要修改这个文件多处才能验证成功)。当然,我们不能指望这个最小的配置文件能够满足实际的需求,因此,需要对现有的配置文件进行修改,其次增加自定义的一些配置文件。这里,我们分两步进行:先修改配置文件再增添自定义文件。
(一) 修改配置文件
Nagios的主配置文件是nagios.cfg,我们就从这个文件开始修改。用vi编辑nagios.cfg,注释行 #cfg_file=/usr/local/nagios/etc/localhost.cfg[2],然后把下面几行的注释去掉:
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
|
改check_external_commands=0为check_external_commands=1 .这行的作用是允许在web界面下执行重启nagios、停止主机/服务检查等操作。把command_check_interval的值从默认的1改成command_check_interval=10s(根据自己的情况定这个命令检查时间间隔,不要太长也不要太短)。主配置文件要改的基本上就是这些,通过上面的修改,发现/usr/local/nagios/etc并没有文件hosts.cfg等一干文件,怎么办?稍后手动创建它们。
第二个要修改的配置文件是cgi.cfg,它的作用是控制相关cgi脚本。先确保use_authentication=1。曾看过不少的文章,都是建议把use_authentication的值设置成”0”来取消验证,这是一个十分糟糕的想法。接下来修改default_user_name=sery ,再后面的修改在下表列出:
authorized_for_system_information=nagiosadmin,sery
authorized_for_configuration_information=nagiosadmin,sery
authorized_for_system_commands=sery //多个用户之间用逗号隔开
authorized_for_all_services=nagiosadmin,sery
authorized_for_all_hosts=nagiosadmin,sery
authorized_for_all_service_commands=nagiosadmin,sery
authorized_for_all_host_commands=nagiosadmin,sery
|
那么上述用户名打那里来的呢?是执行命令 /usr/local/apache/bin/htpasswd –c /usr/local/nagios/etc/htpasswd sery 所生成的,这个要注意,不能随便加没有存在的验证用户,为了安全起见,不要添加过多的验证用户。
第3个修改的配置文件是misccommands.cfg,这个文件的主要功能是用来发送报警短信和报警邮件,对其的修改如下所示:
#host-notify-by-sms //发送短信报警
command_name host-notify-by-sms
command_line /usr/local/bin/sms_send "Host $HOSTSTATE$ alert for $HOSTNAME$! on '$DATETIME$' " $CONTACTPAGER$
#service notify by sms //发送短信报警
command_name service-notify-by-sms
command_line /usr/local/bin/sms_send "'$HOSTADDRESS$' $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$
|
主机和服务的邮件报警通知已经在文件中,不须更改。也可以把短信和邮件报警通知这些配置块写到文件commands.cfg中,效果是一样的。
先创建简单的配置文件timeperiods.cfg,其内容如下:
alias 24 Hours A Day, 7 Days A Week
|
这个文件的定义明晰易懂,不多做说明。另建议7X24小时监控。
第二个手动创建的配置文件是 contacts.cfg,其格式如下:
alias system administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-
notify-by-email //这个命令读配置文件miscommands.cfg
host_notification_commands host-notify-by-email,host-noti
fy-by-sms //这个命令读配置文件miscommands.cfg
pager 13333333333 //手机号,收报警短信
alias system administrator
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-
host_notification_commands host-notify-by-email,host-noti
|
上面的文件定义了2个联系人,如果有更多联系人的话,照这个格式在后面追加即可。服务通知选项(service_notification_options)与主机通知选项(host_notification_options)的几个选项在这里说明一下:w-warning , u-unknown,c-critical,r-recovery;d-down,u-unreachable,注意一下,主机报警和服务报警有些差异。
紧接着的第三个手动创建的配置文件是contactgroups.cfg文件,这个文件是依照上一个文件contacts.cfg来的,contactgroups文件相对简单一些,其格式如下:
contactgroup_name sagroup //不要用空格
alias system administrator group
members sa,sery //本例有2个成员
|
多个成员之间用逗号做分界符,如果有更多的联系组,就依相同的格式在文件中追加余下的组。
关键的角色终于登场,这就是配置文件hosts.cfg。下面是我定义的两个主机的基本样式:
############################################
############################################
contact_groups sagroup //多个联系组用逗号分隔,数据来源于contactgroups.cfg
check_command check-host-alive
notification_interval 10 //值可调,大小什么值合适需自己测定
notification_options d,u,r
check_command check-host-alive //down机就发报警通知
notification_options d,u,r
|
更多的主机依此格式逐个追加进来。小技巧,如果是连续的ip段,最好自己写个脚本生成hosts.cfg文件,为了以后维护方便,尽可能在文件中使用易读的注释(如本例# Wangjing IDC servers #)。
再一个重量级的配置文件是services.cfg,没有这个文件,什么监控也没用。下面给出一个样式文件:
###########################################
# Wangjing IDC servers service for host-live #
###########################################
host_name nagios-server //来源:hosts.cfg
service_description check-host-alive
contact_groups sagroup //来源:contactgroups.cfg
notification_options w,u,c,r
check_command check-host-alive //检查主机是否存活
service_description check_tcp 80
notification_options w,u,c,r
check_command check_tcp!80 //检查tcp 80端口服务是否正常
|
书写时要注意的是,check_tcp与要监控的服务端口之间要用”!”做分隔符。如果服务太多,以应该考虑用脚本来生成。
主机组配置文件hostgroups.cfg,这是一个可选的项目,它建立在文件hosts之上,其格式如下:
hostgroup_name sa-servers
members nagios-server,24-25,24-26 //用逗号间隔多个主机
|
多个主机组依上面的格式逐个追加上去。后面给一个主机组的截图。
千辛万苦,终于把这些配置给做好保存,现在几乎有点迫不及待了,运行程序/usr/local/nagios –v /usr/local/nagios/etc/nagios.cfg来检查所有配置文件的正确性。如果十分幸运的话,运行完毕将在输出尾部出现
border-right: medium
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
监控服务可以归为一个服务模板,便于管理。Cacti与Nagios是两种流行的开源网络监控工具,它们各自有着不同的侧重点。...总之,了解和掌握Cacti和Nagios的使用,对于任何规模的企业网络运维都是非常有价值的。
Nagios是一款广泛使用的系统、网络和应用监控工具,它能实时检测服务器、网络设备、服务的状态,并在出现问题时及时发出警报,确保系统的稳定运行。 一、Nagios概述 Nagios起源于1999年,由Niklas Fiekas创建,最初...
Nagios 使用手册 Nagios 是一种开源的计算机系统和网络监控工具,可以监控 Windows、Linux、Unix 等操作系统,提供实时的系统状态信息,帮助管理员快速地检测和解决问题。本文档将详细介绍 Nagios 的使用手册,包括...
该项目现已弃用。 更多信息:英文版:https://www.lolokaiconseil.com/fully-automated-nagios-fan-2/ 法文版:https://www.lolokaiconseil.com/fully-automated-nagios-fan/ FAN 是基于在 CentOS 上。 所有 CentOS ...
Nagios插件是用各种编程语言(如C、Python、Perl或Shell脚本)编写的独立程序,它们接收Nagios服务器的请求,执行特定任务,然后返回状态信息。这些状态信息包括服务是否正常、性能数据等。Nagios插件遵循以下原则:...
标题中的"Nagios使用教程"表明本文档是关于如何安装、配置和使用Nagios这个开源的系统和服务监测工具。Nagios能够监控网络和系统资源,包括服务器、网络、交换机、应用和网络服务等。它能够远程监测服务的状态,以及...
Nagios是一款广泛使用的开源网络监控系统,它能够监控网络服务、主机以及各种系统资源,及时发现并通知系统管理员可能出现的问题。在“Nagios监控服务器架设”过程中,我们需要了解和掌握以下几个关键知识点: 1. *...
1. **Windows监控**:使用NRPE(Nagios Remote Plugin Executor)在Windows主机上执行Nagios Plugins。 2. **Linux监控**:直接在Linux服务器上安装Nagios Core和Plugins,配置相应的监控项。 3. **FreeBSD监控**...
Nagios的强大之处在于其丰富的插件生态系统,通过这些插件可以监控CPU负载、内存使用、磁盘空间、网络流量等各种指标。另外,Nagios还可以与其他监控系统集成,如Icinga、Nagios XI等,以增强其功能和管理效率。 ...
【Nagios配置安装详解】 Nagios是一款开源的网络监控系统,用于实时监控网络服务、主机以及应用程序的状态。本文将详细介绍如何在Linux环境中配置和安装Nagios,包括搭建LAMP环境、下载安装Nagios及其插件,以及...
### Nagios基本使用详解 #### 一、Nagios简介 Nagios是一款非常流行的开源系统及网络监控工具,能够高效地监控Windows、Linux以及Unix等操作系统主机的状态,同时还支持路由器、交换机乃至打印机等设备的监控。...
- 配置Nagios随系统启动自动启动,例如在Red Hat/CentOS系统中,使用`chkconfig nagios on`。 7. 测试和优化: - 访问Web界面,确认Nagios能够正确显示监控信息。 - 根据需求调整报警策略,设置通知接收方式...
- 使用命令"zypper in nagios nagios-plugins"安装Nagios及其插件。 - 安装过程中,可以使用"-n"参数表示非交互模式,自动接受默认配置。 3. 创建用户:创建nagiosadmin用户,并为其设置密码,用于登录和管理...
- **解压**:首先需要将`pnp4nagios-0.6.26.tar.gz`文件解压缩,通常使用`tar -zxvf pnp4nagios-0.6.26.tar.gz`命令。 - **编译与安装**:按照官方文档指导,使用`./configure`、`make`和`make install`进行编译和...
【服务器监控nagios配套软件】是一套用于网络和系统监控的强大工具,主要由Nagios核心和一系列Nagios插件组成。Nagios是一款开源的、高度可定制的监控系统,它能够实时监控网络服务、主机状态以及各种基础设施设备,...
运维人员可以设置阈值,当系统资源(如CPU利用率、内存使用、网络带宽等)超过设定值时,Nagios会触发警报。 6. 安装流程: - 安装依赖库:如GD库、Perl模块等。 - 解压缩所有文件到适当目录。 - 配置Nagios ...
使用`/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg`命令检查Nagios配置文件的正确性。 8. **启动Nagios服务**: 分别启动Nagios服务和Apache服务,以便Nagios开始监控和Web界面正常工作。 ...
Nagios是一款强大的网络监控系统,它允许用户监控网络服务、服务器、网络设备以及应用程序的状态。这个开源项目因其灵活性和可扩展性而受到广大IT管理员的欢迎。在本教程中,我们将详细介绍如何搭建和配置Nagios,...
可以在支持OVAv2设备映像格式的任何VM上部署在Debian 7 64bit上完全运行的Nagios 4.1.1。 所有密码:astios2020如果您在生产中使用此密码,请更改密码。 更改密码:1)Nagios admin网站2)MySQL根目录(也在NagiosQL...