启动日志
[root@bjyh-48-86 nagios]
[1433471109] Nagios 4.1.0rc1 starting... (PID=5136)
[1433471109] Local time is Fri Jun 05 10:25:09 CST 2015
[1433471109] LOG VERSION: 2.0
[1433471109] qh: Socket '/var/nagios/rw/nagios.qh' successfully initialized
[1433471109] qh: core query handler registered
[1433471109] nerd: Channel hostchecks registered successfully
[1433471109] nerd: Channel servicechecks registered successfully
[1433471109] nerd: Channel opathchecks registered successfully
[1433471109] nerd: Fully initialized and ready to rock!
[1433471109] wproc: Successfully registered manager as @wproc with query handler
[1433471109] wproc: Registry request: name=Core Worker 5141;pid=5141
[1433471109] wproc: Registry request: name=Core Worker 5140;pid=5140
[1433471109] wproc: Registry request: name=Core Worker 5139;pid=5139
[1433471109] wproc: Registry request: name=Core Worker 5138;pid=5138
[1433471109] Warning: Service 'icmp' on host 'bjyh-48-86' has no notification time period defined!
格式
@service command \0
@service 服务名,使用@做为前缀
command 命令参数
\0 结束符,表示命令结束
测试
echo -e '@echo Query handler is working properly!\0' | nc -U /var/nagios/rw/nagios.qh
import socket, sys, os
nagios_qh = '/var/nagios/rw/nagios.qh'
message = 'Test Message!'
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(nagios_qh)
s.sendall('@echo ' + message + '\0' )
results = s.recv(len (message))
s.close()
print type (results), results
<type 'str' > Test Message!
@core
@core服务,获取和配置nagios process相关信息
@core squeuestats
@core squeuestats\0
查询queue of scheduled jobs的信息
import socket, sys, os
nagios_qh = '/var/nagios/rw/nagios.qh'
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(nagios_qh)
s.sendall('@core squeuestats\0' )
result = ''
while True :
b = s.recv(1 )
if ord (b) == 0 :
break
result += b
s.close()
result = sorted (result.split(";" ))
print "\n" .join(result)
CHECK_PROGRAM_UPDATE=1
CHECK_REAPER=1
COMMAND_CHECK=0
EXPIRE_COMMENT=0
EXPIRE_DOWNTIME=0
HFRESHNESS_CHECK=0
HOST_CHECK=2
LOG_ROTATION=1
ORPHAN_CHECK=1
PROGRAM_RESTART=0
PROGRAM_SHUTDOWN=0
RESCHEDULE_CHECKS=0
RETENTION_SAVE=1
SCHEDULED_DOWNTIME=0
SERVICE_CHECK=2
SFRESHNESS_CHECK=1
SLEEP=0
SQUEUE_ENTRIES=11
STATUS_SAVE=1
USER_FUNCTION=0
@core loadctl
获取和配置load control settings的值
@core loadctl
@core loadctl setting=value
@core loadctl setting1=value1;setting2=value2;...
import socket, sys, os
nagios_qh = '/var/nagios/rw/nagios.qh'
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(nagios_qh)
s.sendall('@core loadctl\0' )
result = ''
while True :
b = s.recv(1 )
if ord (b) == 0 :
break
result += b
s.close()
result = sorted (result.split(";" ))
print "\n" .join(result)
backoff_change=4723
backoff_limit=2.50
changes=0
jobs_limit=15745
jobs_max=15745
jobs_min=20
jobs_running=0
load=0.00
nofile_limit=65535
nproc_limit=15845
options=0
rampup_change=1180
rampup_limit=0.80
@nerd
@nerd list\0
@nerd subscribe <channel>\0
@nerd unsubscribe <channel>\0
hostchecks Host check results
servicechecks Service check results
opathchecks Host and service checks in gource s log format
格式如下:
主机 <hostname> from <old_code> -> <new_code>: <description>
服务 <hostname>;<servicename> from <old_code> -> <new_code>: <description>
0 UP
1 DOWN
2 UNREACHABLE
0 OK
1 WARNING
2 CRITICAL
3 UNKNOWN
# output
bjyh-48 -81 ;icmp from 0 -> 0 : OK - 192.168 .48 .81 : rta 0.511 ms, lost 0 %|rta=0.511 ms;500.000 ;500.000 ;0 ; pl=0 %;80 ;80 ;; rtmax=0.695 ms;;;; rtmin=0.375 ms;;;;
bjyh-48 -81 from 0 -> 0 : OK - 192.168 .48 .81 : rta 0.493 ms, lost 0 %|rta=0.493 ms;500.000 ;500.000 ;0 ; pl=0 %;80 ;80 ;; rtmax=0.520 ms;;;; rtmin=0.464 ms;;;;
bjyh-48 -87 ;icmp from 0 -> 2 : CRITICAL - 192.168 .48 .87 : rta nan, lost 100 %|rta=0.000 ms;500.000 ;500.000 ;0 ; pl=100 %;80 ;80 ;; rtmax=0.000 ms;;;; rtmin=0.000 ms;;;;
bjyh-48 -87 from 0 -> 1 : CRITICAL - 192.168 .48 .87 : rta nan, lost 100 %|rta=0.000 ms;500.000 ;500.000 ;0 ; pl=100 %;80 ;80 ;; rtmax=0.000 ms;;;; rtmin=0.000 ms;;;;
import socket
import re
host_status = {'0' : 'UP' , '1' : 'DOWN' , '2' : 'UNREACHABLE' }
service_status = {'0' : 'OK' , '1' : 'WARNING' , '2' : 'CRITICAL' , '3' : 'UNKNOWN' }
nagios_qh = '/var/nagios/rw/nagios.qh'
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(nagios_qh)
s.sendall('@nerd subscribe hostchecks\0' )
s.sendall('@nerd subscribe servicechecks\0' )
while True :
line = s.recv(1024 )
m = re.match('(.*?);(.*?) from ([0-9]+) -> ([0-9]+): (.*)$' , line)
if m:
print '[ service ] host: %s, service: %s, check_status: %s, info: %s .' % (m.group(1 ), m.group(2 ), service_status[m.group(4 )], m.group(5 ))
else :
m = re.match('(.*?) from ([0-9]+) -> ([0-9]+): (.*)$' , line)
print '[ host ] host: %s, check_status: %s, info: %s .' % (m.group(1 ), host_status[m.group(3 )], m.group(4 ))
s.close()
[ service ] host: bjyh-48-87, service: icmp, check_status: CRITICAL, info: CRITICAL - 192.168.48.87: rta nan, lost 100%|rta=0.000ms;500.000;500.000;0; pl=100%;80;80;; rtmax=0.000ms;;;; rtmin=0.000ms;;;;
[ host ] host: bjyh-48-87, check_status: DOWN, info: CRITICAL - 192.168.48.87: Host unreachable @ 192.168.48.86. rta nan, lost 100%|rta=0.000ms;500.000;500.000;0; pl=100%;80;80;; rtmax=0.000ms;;;; rtmin=0.000ms;;;;
[ host ] host: bjyh-48-85, check_status: UP, info: OK - 192.168.48.85: rta 0.501ms, lost 0%|rta=0.501ms;500.000;500.000;0; pl=0%;80;80;; rtmax=0.608ms;;;; rtmin=0.446ms;;;;
[ service ] host: bjyh-48-83, service: icmp, check_status: OK, info: OK - 192.168.48.83: rta 0.449ms, lost 0%|rta=0.449ms;500.000;500.000;0; pl=0%;80;80;; rtmax=0.505ms;;;; rtmin=0.364ms;;;;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类