溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nagios檢測一些記序

發(fā)布時間:2020-06-25 14:14:15 來源:網(wǎng)絡(luò) 閱讀:6277 作者:煮酒品茶 欄目:移動開發(fā)

檢測命令篇:
文中內(nèi)容包括:序述nagios從發(fā)現(xiàn)主機到web界面顯示出狀態(tài)再到郵件報警的整個過程。方面以后進行排錯,還有如何編寫特定應(yīng)用的特定檢測程序。
煮酒品茶:文章需要改進的有如何做觸發(fā)報警的條件,警告等。

更新:
1、說明一些定義一些宏資料。

  $ARGn$:The nth argument passed to the command (notification, event handler, service check, etc.). Nagios supports up to 32 argument macros ($ARG1$ through $ARG32$).
$USERn$:The nth user-definable macro. User macros can be defined in one or more resource files. Nagios supports up to 256 user macros ($USER1$ through $USER32$).

 2、解決問題,報警四種狀態(tài)。

Nagios檢測一些記序

服務(wù)和主機配置文件中的“check_command           check-host-alive”是什么意思呢?
 
[root@weihack objects]# pwd
/usr/local/nagios/etc/objects
[root@weihack objects]# cat commands.cfg #發(fā)現(xiàn)這么一項:
 define command{
        command_name    check-host-alive
        command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
        }
看看命令行:$USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
[root@weihack libexec]# pwd
/usr/local/nagios/libexec
[root@weihack libexec]# ./check_ping -H 192.168.100.85 -w 3000.0,80% -c 5000.0,100% -p 5
PING OK - Packet loss = 0%, RTA = 0.05 ms|rta=0.055000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0
# Web界面 Status Information 里面是不是出現(xiàn)了PING OK - Packet loss = 0%, RTA = 0.05 ms這樣的東東。
# -h 使用方法都出來了,由此我們可以看出。ping 192.168.100.85 3000警告,5000直接報警。目前為0.055ms 發(fā)送五個包。那很很清晰了。
 [root@weihack libexec]# ./check_ping -h
Use ping to check connection statistics for a remote host.
 
Usage:check_ping -H <host_address> -w <wrta>,<wpl>% -c <crta>,<cpl>%
 [-p packets] [-t timeout] [-4|-6]
 
Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 -4, --use-ipv4
    Use IPv4 connection
 -6, --use-ipv6
    Use IPv6 connection
 -H, --hostname=HOST
    host to ping
 -w, --warning=THRESHOLD
    warning threshold pair
 -c, --critical=THRESHOLD
    critical threshold pair
 -p, --packets=INTEGER
    number of ICMP ECHO packets to send (Default: 5)
 -L, --link
    show HTML in the plugin output (obsoleted by urlize)
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
 
# 倒底有多少個這樣的定義的命令的?
 [root@weihack objects]# cat commands.cfg |grep command_name
command_name notify-host-by-email
command_name notify-service-by-email
        command_name    check-host-alive
        command_name    check_local_disk
        command_name    check_local_load
        command_name    check_local_procs
        command_name    check_local_users
command_name check_local_swap
command_name check_local_mrtgtraf
        command_name    check_ftp
        command_name    check_hpjd
        command_name    check_snmp
        command_name    check_http
command_name check_ssh
command_name check_dhcp
        command_name    check_ping
        command_name    check_pop
        command_name    check_imap
        command_name    check_smtp
command_name check_tcp
command_name check_udp
command_name check_nt
command_name process-host-perfdata
command_name process-service-perfdata
 
#挑一條notify-host-by-email,可以清楚的看到發(fā)送郵件的過程。
 define command{
        command_name    notify-host-by-email
        command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
        }
#打散開來看,是不是可以定制郵件發(fā)送格式了?
 /usr/bin/printf "%b" "***** Nagios *****\n\n
Notification Type: $NOTIFICATIONTYPE$\n
Host: $HOSTNAME$\nState: $HOSTSTATE$\n
Address: $HOSTADDRESS$\n
Info: $HOSTOUTPUT$\n\n
Date/Time: $LONGDATETIME$\n
" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
 
#到手的郵件是這樣子的。
 主 題: ** RECOVERY Host Alert: rsync-89 is UP **   [新窗口打開]
時 間:  2013-03-13 22:57 (星期三)
發(fā)件人: nagios<nagios@phx2-ss-5-lb.cnet.com>   [添加聯(lián)系人]  [郵件往來]  [拒收]
收件人:  我<zwhset@163.com>
**** Nagios *****
Notification Type: RECOVERY
Host: rsync-89
State: UP
Address: 192.168.100.89
Info: PING OK - Packet loss = 0%, RTA = 0.32 ms
Date/Time: Wed Mar 13 22:57:44 CST 2013
 
#那我們加一個監(jiān)控服務(wù),看看全程如何工作的。查看端口22是否保持鏈接。check_tcp,我們先看看用法。
 [root@weihack libexec]# ./check_tcp -h
Usage:check_tcp -H host -p port [-w <warning time>] [-c <critical time>] [-s <send string>]
[-e <expect string>] [-q <quit string>][-m <maximum bytes>] [-d <delay>]
[-t <timeout seconds>] [-r <refuse state>] [-M <mismatch state>] [-v] [-4|-6] [-j]
[-D <days to cert expiry>] [-S <use SSL>] [-E]
 
Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information
 -H, --hostname=ADDRESS
    Host name, IP Address, or unix socket (must be an absolute path)
 -p, --port=INTEGER
    Port number (default: none)
 -4, --use-ipv4
    Use IPv4 connection
 -6, --use-ipv6
    Use IPv6 connection
 -E, --escape
    Can use \n, \r, \t or \ in send or quit string. Must come before send or quit option
    Default: nothing added to send, \r\n added to end of quit
 -s, --send=STRING
    String to send to the server
 -e, --expect=STRING
    String to expect in server response (may be repeated)
 -A, --all
    All expect strings need to occur in server response. Default is any
 -q, --quit=STRING
    String to send server to initiate a clean close of the connection
 -r, --refuse=ok|warn|crit
    Accept TCP refusals with states ok, warn, crit (default: crit)
 -M, --mismatch=ok|warn|crit
    Accept expected string mismatches with states ok, warn, crit (default: warn)
 -j, --jail
    Hide output from TCP socket
 -m, --maxbytes=INTEGER
    Close connection once more than this number of bytes are received
 -d, --delay=INTEGER
    Seconds to wait between sending string and polling for response
 -w, --warning=DOUBLE
    Response time to result in warning status (seconds)
 -c, --critical=DOUBLE
    Response time to result in critical status (seconds)
 -t, --timeout=INTEGER
    Seconds before connection times out (default: 10)
 -v, --verbose
    Show details for command-line debugging (Nagios may truncate output)
 
#這似乎是具體方法,讓我們看看command里定義的。
 define command{
        command_name    check_tcp
        command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
        }
#對照上表-H 主機地址,-p 端口 接受參數(shù)1 2
#我找不到定義的文件在哪呢,$USER1$是路徑也就是/usr/local/nagios/libexec,后面三個也一樣。那么可構(gòu)造 check_tcp 22,$ARG1$ $ARG2$用!號隔開。$USER1$的定義在文件:
[root@weihack objects]# cat /usr/local/nagios/etc/resource.cfg |grep USER1
 # Nagios supports up to 32 $USERx$ macros ($USER1$ through $USER32$)
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
$ARGn$:The nth argument passed to the command (notification, event handler, service check, etc.). Nagios supports up to 32 argument macros ($ARG1$ through $ARG32$).
$USERn$:The nth user-definable macro. User macros can be defined in one or more resource files. Nagios supports up to 256 user macros ($USER1$ through $USER32$).
我們添加服務(wù)
 [root@weihack objects]# vim services.cfg 
define service {
        host_name        rsync-89
        service_description   check_tcp 80
        check_period          24x7
        max_check_attempts    4
        normal_check_interval 3
        retry_check_interval  2
        contact_groups        ktm
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        check_command           check_tcp!80
        }
#驗證下并滑溜運行程序。
[root@weihack objects]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 
[root@weihack nagios]# kill -Hup 8670
#運行成功,那我們想自由自在的構(gòu)造一些檢測,如何實現(xiàn)?做個實驗.
#check_ping 主要輸出這些:PING OK - Packet loss = 0%, RTA = 0.06 ms|rta=0.061000ms;3000.000000;5000.000000;0.000000 pl=0%;80;90;0
 [root@weihack libexec]# cat /test/passwd |wc -l
25
#假設(shè)有用戶則顯示用戶數(shù),無用戶為空則報警。如何設(shè)計?
[root@weihack libexec]# touch /test/passwda
[root@weihack libexec]# cat check_user
#check_user_nagios  cwtea
#blog: cwtea.blog.51cto.com
cu=`cat /test/passwda |wc -l`
 
if [ $cu -ne 0 ]; then
echo "User OK - User is running (UserNumber: ${cu})"
else
echo "User CRITICAL,"User is none""
fi

 

[root@weihack libexec]# ./check_user

 User CRITICAL,User is none

 

 [root@weihack libexec]# ./check_user
User OK - User is running (UserNumber: 25)
#添加一個定義check_user
[root@weihack objects]# vim commands.cfg 
 #check user
define command{
        command_name    check_user
        command_line    $USER1$/check_user 
        }
#添加一項服務(wù)
[root@weihack objects]# vim services.cfg
 define service {
        host_name        rsync-89
        service_description   check_user
        check_period          24x7
        max_check_attempts    4
        normal_check_interval 3
        retry_check_interval  2
        contact_groups        ktm
        notification_interval   10
        notification_period     24x7
        notification_options    w,u,c,r
        check_command           check_user
        }
#kill -Hup 23377
#web界面看看,已經(jīng)出現(xiàn)了。
 

Nagios檢測一些記序

#我們把文件弄成空的。
[root@weihack objects]# rm -rf /test/passwd
[root@weihack objects]# touch /test/passwd
#狀態(tài)顯示是OK的,但是信息欄已經(jīng)出現(xiàn)了我們想要的。
check_user OK 03-14-2013 00:20:29 0d 0h 3m 25s 1/4 User CRITICAL,User is none 
#我們加個返回狀態(tài)碼 exit 2
[root@weihack libexec]# cat check_user
 #check_user_nagios  cwtea
#blog: cwtea.blog.51cto.com
cu=`cat /test/passwd |wc -l`
 
if [ $cu -ne 0 ]; then
echo "User OK - User is running (UserNumber: ${cu})"
        #Is OK.
        exit 0
else
echo "User CRITICAL,"User is none""
exit 2
fi
#過會兒,再看已經(jīng)down掉了。
Nagios檢測一些記序
#郵件報警等了好久才來
 主 題:  ** PROBLEM Service Alert: rsync 89/check_user is CRITICAL **   [新窗口打開]
時 間:  2013-03-14 00:32 (星期四)
發(fā)件人:  nagios<nagios@phx2-ss-5-lb.cnet.com>   [添加聯(lián)系人]  [郵件往來]  [拒收]
收件人:  我<zwhset@163.com>
***** Nagios *****
Notification Type: PROBLEM
Service: check_user
Host: rsync 89
Address: 192.168.100.89
State: CRITICAL
Date/Time: Thu Mar 14 00:32:39 CST 2013
Additional Info:
User CRITICAL,User is none
 

 

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI