nagios 常见场景使用技巧记录(ioc应用场景)

nagios 常见场景使用技巧记录(ioc应用场景)

文章精选heiyunw2024-04-30 18:47:097A+A-

一:安装错误

1.关闭selinux

/usr/sbin/sestatus -v

getenforce

setenforce 0


2.Error: Could not read object configuration data!

nagios 未启动

/etc/rc.d/init.d/nagios start

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


3.It appears as though you do not have permission to view information for any of the hosts you requested

解决:

登陆 nagios web接口的用户,需要和 /usr/local/nagios/etc/cgi.cfg 里面配置的用户匹配,没有可以手动添加,用逗号隔开

添加或修改为一致的用户


4.HTTP/1.1 403 Forbidden

运行的nagios 用户无法访问默认的apache 目录,不具备权限

赋值即可


5.监控上看到的 PENDING 状态

实属未获取到数据,等待即可

6.NRPE 参数传递不成功

因为编译的时候未带上参数

./configure --enable-command-args

同时配置nrpe.cfg

dont_blame_nrpe=1


7.CHECK_NRPE: Error - Could not complete SSL handshake.

nrpe.cfg 中未添加允许监控机访问

allowed_hosts=192.168.146.172


8. sendmail

Program mode requires special privileges, e.g., root or TrustedUser.

属主不正确

chown root.smmsp /bin/mail

chown root.smmsp /usr/sbin/sendmail.sendmail

重启sendmail

/etc/init.d/sendmail stop

/etc/init.d/sendmail start


9.sendmail 错误

can not chdir(/var/spool/clientmqueue/): Permission denied

chown -R smmsp.nagios /var/spool/clientmqueue

调整为 nagios 允许用户访问


10.syntax illegal for recipient addresses

undisclosed-recipients:

默认配置中无相关配置

修改mail 配置文件

#sendmail.cf:#O NoRecipientAction=none

submit.cf:#O NoRecipientAction=none

改成:add-to

# action to take if there are no recipients in the message

#O NoRecipientAction=add-to-undisclosed

如果邮件在标题行中没有收件人的信息,NoRecipientAction选项指示sendmail采取的措施。

? add-appanently-to:添加一个“Appanently-To”标题。

? add-bcc:添加一个空“BCC”标题行以便遵循RFC 821规范。

? add-to:添加一个“To”标题,以及从邮件“信封”获得的收件人。

? add-to-undisclosed:添加一个空“To:undisclosed-recipients:;”标题。

? none:不修改邮件内容便发送。


11.It appears as though you do not have permission to view information you requested........

方法1:

改cgi.cfg文件里的一个参数 use_authentication=1 将1改为0,重启nagios即可

方法2:

vi /usr/local/nagios/etc/cgi.cfg

nagiosadmin是我们用来登录nagios的管理员,而cgi.cfg就是用来验证管理员身份的!

如果你生成的管理员用户不是nagiosadmin,验证的时候就会失败

将以下的几项中的nagiosadmin改为你实际的用户名即可,其实也可以在后面加上你的用户名,与前面用逗号隔开

authorized_for_system_information=nagiosadmin

authorized_for_configuration_information=nagiosadmin

authorized_for_system_commands=nagiosadmin

authorized_for_all_services=nagiosadmin

authorized_for_all_hosts=nagiosadmin

authorized_for_all_service_commands=nagiosadmin

authorized_for_all_host_commands=nagiosadmin


12.CHECK_NRPE: Error - Could not complete SSL handshake.

监控机IP无权限访问,需要添加allows_hosts

13.NRPE: Unable to read output

自定义脚本无执行权限

chmod 777 file.sh

二:增加windows支持

增加windows 监控

1.NSClient - ERROR: Invalid password.

vi commands.cfg

找到 check_nt 修改密码

# 'check_nt' command definition

define command{

command_name check_nt

command_line $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$ -s redhat

}

2.修改nsclient++配置文件增加密码项:

C:\Program Files\NSClient++\ nsclient.txt

; PASSWORD - Password used to authenticate againast server

password = redhat

重启服务

检测:

./check_nt -H 10.0.0.52 -p 12489 -s redhat -v UPTIME

q:

CRITICAL - Socket timeout after 10 seconds

define command{

command_name check_nrpe

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 30 # 加上一个 -t 30 指定时间为 30 秒

}

重启nagios服务

windows 客户端安装:

1.双击

NSCP-0.4.3.77-x64

2.下一步

选typical

3选参数

4.填监控端IP 及密码

4.安装

5.确定服务启动正常

services.msc

6.确认防火墙正常

7.检测是否通讯正常

./check_nt -H 10.0.0.56 -p 12489 -s redhat -v UPTIME

进程检测

./check_nt -H 10.0.0.52 -p 12489 -s redhat -v PROCSTATE -l Explorer.exe


三:其他场景技巧

#网络流量监控

./check_traffic.sh -V 2c -C public -H 10.0.0.100 -I 2 -w 1200,1500 -c 1700,1800 -B

#nagios警告级别分离

nagios警告级别分离,可以定义不同的联系人,对不同的联系人定义不同的警告级别即可实现,其做法如下:

a、在contacts.cfg配置文件定义不同联系人

1、定义名为leader的联系人

vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:

define contact{

contact_name leader #联系人的名称

alias leader relation #联系人的别名

service_notification_period 24x7 #联系人接收服务警告邮件时段

host_notification_period 24x7 #联系人接收主机警告邮件时段

service_notification_options c,r #联系人接收服务警告级别,c-(CRITICAL) r-(RECOVERY)

host_notification_options d,r #联系人接收主机警告级别,d-(DOWN) r-(RECOVERY)

service_notification_commands notify-service-by-email

host_notification_commands notify-host-by-email

email fanjingjian@hk515.com , mawei@hk515.com #联系人邮箱

}

2、定义名为nagiosadmin的联系人

vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:

define contact{

contact_name nagiosadmin #联系人名

use generic-contact #调用模板中的通用联系人

alias Nagios Admin #别名

email readom@189.cn,401596186@qq.com #值班手机

}

3、定义名为:admins的联系人组

vi /usr/local/nagios/etc/objects/contacts.cfg 添加如下内容:

define contactgroup{

contactgroup_name admins #组名

alias Nagios Administrators #组别名

members nagiosadmin,tyyd #组成员

}

b、修改templates.cfg中主机和服务告警联系人组为admins (默认即是)

c、通过以上修改 tyyd只会收到服务警告类型为CRITICAL,RECOVERY以及主机警告类型为DOWN,RECOVERY的邮件,联系人nagiosadmin会收到全部的邮件


#Nagios邮件报警的配置

安装sendmail 组件

首先要确保sendmail 相关组件的完整安装,我们可以使用如下的命令来完成sendmail 的安装:

yum install -y sendmail*

然后重新启动sendmail服务:

service sendmail restart

然后发送测试邮件,验证sendmail的可用性:

echo "Hello World" | sendmail shiye.meng@cnlaunch.com

邮件报警的配置

在上面我们已经简单配置过了/usr/local/nagios/etc/objects/contacts.cfg 文件,Nagios 会将报警邮件发送到配置文件里的E-mail 地址。

配置发生告警频率

template.cfg 文件

services 节

notification_interval 60 ; Re-notify about service problems every hour

默认为60分钟,可调整该参数


#NRPE 添加自定义命令

监控Nagios-Linux 的swap 使用情况。但是在nrpe.cfg 中默认没有定义这个监控功能的命令。怎么办?手动在nrpe.cfg 中添加,也就是自定义NRPE命令

现在我们要监控swap 分区,如果空闲空间小于20%则为警告状态 -> warning;如果小于10%则为严重状态 -> critical。我们可以查得需要使用check_swap插件,完整的命令行应该是下面这样。

/usr/local/nagios/libexec/check_swap -w 20% -c 10%

在被监控机(Nagios-Linux)上增加check_swap 命令的定义

# vi /usr/local/nagios/etc/nrpe.cfg

增加下面这一行

command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%

我们知道check_swap 现在就可以作为check_nrpe 的-c 的参数使用了

修改了配置文件,当然要重启。

如果你是以独立的daemon运行的nrpe,那么需要手动重启;

在监控机(Nagios-Server)上增加这个check_swap 监控项目

define service{ use local-service host_name Nagios-Linux service_description Check Swap check_command check_nrpe!check_swap }

Nagios-Linux 上我还开启了http 服务,需要监控一下,按照上面的做法,在被监控机(Nagios-Linux)上增加check_http 命令的定义

# vi /usr/local/nagios/etc/nrpe.cfg

增加下面这一行

command[check_http]=/usr/local/nagios/libexec/check_http -I 127.0.0.1

在监控机(Nagios-Server)上增加check_http 监控项目

define service{ use local-service host_name Nagios-Linux service_description HTTP check_command check_nrpe!check_http }

所有的配置文件已经修改好了,现在重启Nagios。

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

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

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

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

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

自定义命令:

脚本:

如检查目录下的文件数量

sh check_file_num.sh -w 10 -c 62

WARING File num 61

vi check_file_num.sh

#!/bin/bash
c_path="/usr/local/nagios/libexec"
f_num="`ls $c_path|wc -l`"
w_arg="$2"
c_arg="$4"
msg=""
if [[ $# -lt 2 ]]
  then
   echo "Usage `basename $0 ` -w \$arg -c \$arg"
   exit 1
fi
if [[ $f_num -ge $w_arg && $f_num -lt $c_arg ]]
  then
   msg="WARING"
 fi
if [[ $f_num -ge $c_arg ]]
  then
   msg="Critical"
 fi
 #show msg
  echo "$msg  Current File $f_num"
exit  

模式1:固定数字

注册到 nrpe.cfg 中

#command[check_file_num]=/usr/local/nagios/libexec/check_file_num.sh -w $ARG1$ -c $ARG2$

command[check_file_num1]=/usr/local/nagios/libexec/check_file_num.sh -w 20 -c 40

重启nrpe (KILL 进程)

(如果不需要更换命令名字,则不需要注册command.cfg 和services.cfg)

注册到command.cfg 文件中

#check_file

define command{

command_name check_file_num

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ $ARG2$

}

添加services.cfg 中,使之生效

define service{

use local-service

host_name nagios-admin,nagios-client

service_description Current File Num

check_command check_file_num!check_file_num

}

[不变更命令名]

添加services.cfg 中,使之生效

define service{

use local-service

host_name nagios-admin,nagios-client

service_description Current File Num

check_command check_nrpe!check_file_num

}

监控机上

重启nagios 服务

/etc/init.d/nagios reload

检测脚本是否执行超过

./check_nrpe -H 192.168.146.170 -c check_file_num1

./check_nrpe -H 10.0.0.64 -c check_mysql_slave

模式2 带参数

nrpe 安装中带 --enable-command-args 参数

nrpe.cfg 中添加

dont_blame_nrpe=1 才能接受用户传递参数

command[check_file_num]=/usr/local/nagios/libexec/check_file_num.sh $ARG1$

监控机上

command.cfg 【改名】

#check_file

define command{

command_name check_file_num

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -a $ARG2$

}

#services.cfg 文件

define service{

use local-service

host_name nagios-client

service_description Current File Num

check_command check_file_num!check_file_num!"-w 40 -c 70"

}

./check_nrpe -H 192.168.146.170 -c check_file_num -a 40 80

KILL 进程并重启nrpe

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

重启监控机上的nagios服务

/etc/init.d/nagios reload

#############固定端口检测

1.agent 配置修改

nrpe.cfg

command[check_port_80]=/usr/local/nagios/libexec/check_port 80

2.重启nrpe 客户端

kill -9 nrpe

/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

3.添加脚本

vi /usr/local/nagios/libexec/check_port

#!/bin/bash

port="$1"

tips="`netstat -anpl|grep -iE \":${1}\b\"|grep LISTEN|wc -l`"

if [ $tips -gt 0 ]

then

echo 1

else

echo 0

fi

4.监控机服务添加

define service{

use hk-service,service-pnp

host_name haproxy_136

service_description http_80

check_command check_nrpe!check_port_80

}

5.重载nagios服务

/etc/init.d/nagios reload

自定义Nagios NRPE脚本EXIT退出值和nagios状态都应关系:

状态

EXIT退出值

输出

例子

OK

0

echo "OK - it's ok."

echo "OK - it's ok."

exit 0

WARNING

1

echo "WARNING - it's warning."

echo "WARNING - it's warning."

exit 1

CRITICAL

2

echo "CRITICAL - it's critical."

echo "CRITICAL - it's critical."

exit 2

UNKNOWN

3

echo "UNKNOWN - it's unknown."

echo "UNKNOWN - it's unknown."

exit 3

错误的例子:

shell脚本中echo和退出值:

echo "OK - it's ok."

exit 1

此时,Nagios会显示:

这条服务对应的状态是”WARNING“,但是输出的信息是”OK - it's ok."

点击这里复制本文地址 以上内容由黑云学习网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交
qrcode

黑云学习网 © All Rights Reserved.  Copyright Your WebSite.Some Rights Reserved.