求: linux下 nagios中文汉化包,及详细 使用 说明

求: linux下 nagios中文汉化包,及详细 使用 说明,第1张

nagios是目前非常流行的系统,服务器监控免费软件,很多大的国内站点像搜狐,网易都在使用nagios进行服务器监控。

nagios的有点在于他本身只是一个框架,对于nagios扩展监控模块,以及报警模块非常方便,能很方便的加入自己编写的服务监控,以及手机短信,邮件,gtalk ,msn报警等等。

以下是nagios在linux REDHAT AS4U4 下的安装和简单的配置过程:

下载软件:

wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/nagios-3.0.3.tar.gz

wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.12.tar.gz

wget http://nchc.dl.sourceforge.net/sourceforge/nagiosplug/nagiosmib-1.0.0.tar.gz

添加用户:

useradd -m nagios

passwd nagios

groupadd nagcmd

usermod -G nagcmd nagios

usermod -G nagcmd daemon

编译安装nagios

tar -xvzf nagios-3.0.3.tar.gz

cd nagios-3.0.3

./configure --with-command-group=nagcmd

make all

make install

make install-init

make install-config

make install-commandmode

设置apache服务器访问密码:

cd /usr/local/nagios/etc/

/usr/local/apache/bin/htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

cd /usr/local/apache/conf/

vi httpd-vhosts.conf

配置apache的cgi ,具体配置如下:

ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin

<Directory "/usr/local/nagios/sbin">

Options ExecCGI

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

Alias /nagios /usr/local/nagios/share

<Directory "/usr/local/nagios/share">

Options None

AllowOverride None

Order allow,deny

Allow from all

AuthName "Nagios Access"

AuthType Basic

AuthUserFile /usr/local/nagios/etc/htpasswd.users

Require valid-user

</Directory>

重启apache

/usr/local/apache/bin/apachectl configtest

/usr/local/apache/bin/apachectl stop

/usr/local/apache/bin/apachectl start

安装nagios插件

tar -xvzf nagios-plugins-1.4.12.tar.gz

cd nagios-plugins-1.4.12

./configure --with-nagios-user=nagios --with-nagios-group=nagios

make

make install

chkconfig --add nagios

chkconfig nagios on

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

service nagios start

现在你可以通过浏览器访问监控的界面了,http://www.example.com/nagios

现在你仅仅能看到对于本机的监控,接下来我们添加一个http服务的监控

cd /usr/local/nagios/

vi nagios.cfg

添加一行:

cfg_file=/usr/local/nagios/etc/objects/wwws.cfg

编写配置wwws.cfg

touch objects/hosts.cfg objects/wwws.cfg

vi objects/wwws.cfg

具体内容如下:

define host{

use generic-host

host_name maycode

alias www.maycode.com

address 10.11.24.42

hostgroups webhosts

max_check_attempts 10

}

define hostgroup{

hostgroup_name webhosts

alias web service hosts

members maycode

}

define service{

use generic-service

host_name maycode

service_description HTTP

check_command check_http! -H www.maycode.com

}

请根据具体情况修改为你要监控的主机以及域名,现在来看看你的配置文件是否正确:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

如果争取,请重启nagios服务器

service nagios start

接下来请去浏览器看看吧,如果在host部分看到pending别奇怪啊,我们只设置了监控www服务器,如果你需要监控alive ,请参考localhost.cfg配置文件。

在libexec目录下,所有的监控脚本和应用都在,你可以用 prog -h ,查看如何使用这些监控脚本和程序。如果你自己写的程序最好也放在这个目录下。

文章出处:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090317/162219.html)

如果你找不到可以满足自身要求的一款插件,也很容易自行编写,本文就介绍了如何自行编写插件。

Nagios插件可以用任何一门编程语言来编写,只要该编程语言在运行Nagios的平台上得到支持。Bash是用来编写Nagios插件的一门流行语言,因为它功能强大、使用简单。

借助插件进行的每一次有效的Nagios检查(Nagios check)都会生成一个数字表示的退出状态。可能的状态有:

0--各方面都正常,检查成功完成。

1--资源处于警告状态。某个地方不太妙。

2--资源处于临界状态。原因可能是主机宕机或服务未运行。

3--未知状态,这未必表明就有问题,而是表明检查没有给出一个清楚明确的状态。

插件还能输出文本消息。默认情况下,该消息显示在Nagios web界面和Nagios邮件警报信息中。尽管消息并不是硬性要求,你通常还是可以在可用插件中找到它们,因为消息告诉用户出了什么岔子,而不会迫使用户查阅说明文档。

用Bash编写的一个简单的Nagios插件类似这样。这个示例插件检查一个指定的文件:

#!/bin/bash

#将第一个实参($1)指定为文件名

filename=$1

#先检查该文件是否存在。这是你应该开始的第一个检查,也是最基本的检查。

if [ ! -e $filename ]thenecho "CRITICAL status - file $filename doesn't exist"

exit 2 #返回临界状态,那是由于你的最糟糕情况是该文件根本就不存在。

#如果前一个条件通过(文件存在),那么接下来检查该文件是否可读:

elif [ ! -r $filename ]thenecho "WARNING status - file $filename is not readable."

exit 1 #返回警告状态,那是由于该状态胜于根本不存在文件;

#如果前一个条件通过,检查它是不是一个普通文件,而不是目录或设备文件。

elif [ ! -f $filename ]thenecho "UNKNOWN status - file $filename is not a file."

exit 3 #返回未知状态;

#如果所有上述检查均通过,那么表明它正常:

elseecho "OK status - file is OK"exit 0 #Return OK statusfi

注释(Bash中以#开始)解释了代码;如果你需要更清晰的解释,或者想进一步了解Bash的文件测试 *** 作符,请查阅说明文档(http://tldp.org/LDP/abs/html/fto.html)。

尽管这个实例很简单,但它清楚地表明了如何实现Nagios插件逻辑。始终首先要寻找最糟糕的情况。只有当所有检查均通过,脚本退出时才会显示状态正常。确保在退出之前指定明确消息。

使用插件

默认情况下,所有的Nagios插件均存放在用$USER1宏命令定义的目录中,具体在文件/etc/nagios/private

/resource.cfg中定义。在来自EPEL存储库(http://fedoraproject.org/wiki/EPEL)的典型Nagios

安装环境下,$USER1被定义为/usr/lib/nagios/plugins。你对插件应该做的头一件事就是,把它拷贝到用$USER1宏命令定义

的目录中。插件通常归root所有,其权限设置为755。Nagios在属于nagios群组的用户nagios下工作,所以脚本需要读取和执行其他群组

的权限。

一旦你把脚本放在/usr/lib/nagios/plugins目录中,就要在文件/etc/nagios/objects/commands.cfg里面把它定义成Nagios命令。假设你将脚本命名为check_file.sh,添加下列命令定义:

#我们的自定义文件检查命令:

define command{command_namecheck_filecommand_line$USER1$/check_file.sh $ARG1$}

这应当相当清楚。变量$ARG1$代表传递给Nagios命令的第一个实参;在本例中,这第一个实参应该是文件名称。如果你想传递更多的实参,可以将$ARG2$用作第二个实参,将$ARG3$用作第三个实参,以此类推。

想开始使用你的插件,应在你的nagios配置文件(比如service.cfg)中将其定义成一项服务:

define service{use local-servicehost_name localhostservice_description Check the file /etc/passwdcheck_command check_file!/etc/passwd}

上述服务是为本地主机(host_name

localhost)定义的,为本地服务使用模板(使用local-service),详见文明文档的对象继承部分

(http://nagios.sourceforge.net/docs/3_0/objectinheritance.html),即可了解模板及模

板的工作原理。最重要的部分是check_command指令。它指定了命令check_file,然后是作为分隔符的感叹号,后面是作为实参的文件名

称。如果你的插件有不止一个实参,可以用另外的感叹号来分隔。

远程运行Nagios插件

示例check_file plugin存在的一个明显缺点是它本地运行,这意味着无法检查远程服务器上的文件。你有许多办法可以解决这个问题。

第一个办法就是使用ssh命令,远程执行代码。这需要你把脚本拷贝到远程服务器上,并利用ssh可

以运行远程命令的功能。这还需要你为Nagios服务器及其nagios用户配置无密码密钥登录。如果这方面你不太确信如何 *** 作,可以参阅本文

http://www.techrepublic.com/blog/opensource/remotely-monitor-servers-

with-the-nagios-checkbyssh-plugin/321,了解所有的相关细节。

这第一个办法的优点是,你拥有了针对被监控的服务器,本地运行命令所具有的功能和灵活性。缺点就是,Nagios服务器必须能够借助密钥,无密码登录到远程服务器。这是个安全问题,不推荐敏感环境使用。

第二个比较安全的办法是,使用SNMP扩展功能。这要求你已在远程服务器上安装和配置好了net-snmp程序包(面向CentOS)。

想使用SNMP扩展命令,先将check_file.sh脚本拷贝到远程服务器上。比如说,你可以把该脚本放在目录/usr/bin/中。

接下来,将配置指令extend check_passwd_file /usr/bin/check_file.sh

/etc/passwd添加到远程服务器上的文件/etc/snmp/snmpd.conf。语法是extend some_alias command

argument。下面是这种方法存在的主要不便之处:你得为每一次独立的检查定义一个别名,在本例中这意味着为我们想要测试的每一个独立文件定义一个别

名,因为无法通过SNMP来传送实参。

文件/etc/snmp/snmpd.conf只要出现变化,都需要你用service snmpd

reload命令(面向CentOS),重新装入snmpd服务。之后,你可以用snmpget命令来测试新的检查,就跟在snmpget -v2c

-c public -OvQ 10.0.0.2

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"check_passwd_file\"中一样。这个示例

snmpget命令通过SNMP版本2c,以"public"共用字符串查询服务器10.0.0.2。自定义SNMP扩展命令的对象标识符(OID)是

NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"some_alias\"。

遗憾的是,上面这个命令无法直接用Nagios来实现。如果snmpget正常工作,可以连接至远程主机,它总是会返回状态0,这表明每方面都正

常,因为程序snmpget本身退出时没有错误。因而,即使某个文件不存在,检查脚本也会返回状态0,不过它会输出文件不存在的正确消息。

你可以解决这个问题,只要充分利用针对Nagios的名为check_snmp_extend.sh的特殊插件。这个插件取得状态消息的第一个单词

后,根据该单词来设定状态。由于预计使用这个插件,我们在示例脚本check_file.sh中设定了消息,以便从OK(正常)、CRITICAL(临

界)、WARNING(警告)和UNKNOWN(未知)开始。

想开始使用check_snmp_extend.sh插件,先下载该插件(http://www.logix.cz/michal/devel

/nagios/check_snmp_extend.sh),然后把它放到Nagios服务器上的目录/usr/lib/nagios

/plugins($USER1宏命令)。在CentOS上,你得编辑脚本check_snmp_extend.sh,并把/usr/local

/nagios/libexec/utils.sh换成/usr/lib/nagios/plugins/utils.sh,这是utils.sh脚本的

正确路径。

之后,你就可以像使用其他任何插件那样使用check_snmp_extend.sh。首先,把它定义为一个命令:

define command{command_name check_snmp_extendcommand_line $USER1$/check_snmp_extend.sh $HOSTADDRESS$ $ARG1$}

之后,定义一项服务:

define service{use generic-servicehost_name somehost.example.orgservice_description Check For /etc/passwdcheck_command check_snmp_extend!check_passwd_file}

使用SNMP的扩展选项就跟你的SNMP配置一样安全。这个办法只需要在远程主机上进行极少的改动,又确保了标准的设置环境符合安全方面的最佳实

践。你可以找到用于类似用途的其他Nagios插件,比如nrpe,但是它们要求远程安装额外服务,从安全和兼容性的角度来看这并非总是一个好主意。

如你所见,很容易用自行编写的插件来扩展Nagios。Nagios允许这种扩展,这一点正是许多管理员青睐它、而不是青睐其他监控解决方案的原因之一。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11195613.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存