我正在开展一个项目,其中安装了多个传感器,它们以不同的采样率生成数据。
是否可以使用 Nagios 插件来检查特定传感器或设备是否有数据传入?
如果可能的话,哪个插件可以用于此目的?我搜索了 Nagios 插件网站和互联网,但找不到任何与此相关的内容。
有不同的传感器以 Ascii 格式生成数据,因此传感器是数据生成的主要来源,然后我们使用 rsync 将这些数据同步到我们的中央 MySQL 数据库中。每个传感器都有不同的采样率。例如,温度传感器每 2 分钟生成一次数据,湿度传感器每 5 分钟生成一次数据。这些数据通过使用 rsync 存储在文本文件中。我想根据源采样率监控数据是每 2 分钟还是每 5 分钟到来一次。因此,自定义 nagios 脚本将帮助我了解缺失数据的状态。
有人可以指出有关自定义插件/脚本的有用教程来处理这种情况吗?(我是 Nagios 新手,如能得到任何帮助我将不胜感激。)
答案1
您需要创建自己的插件:
如果您在原始问题中添加有关如何从传感器收集数据的更多详细信息,我可能会bash
在需要时为您提供帮助。
编辑:最终答案
享受它:=)
有任何问题都可以告诉我
#!/bin/bash
# How to execute ./sensor.sh tem_sensor
HOUR=$(date +%H)
MIN=$(date +%M)
# Directory where they are sensor directorys
DIR=/home/robbin/Desktop/sensor_collection/
# Name of selected sensor
SENSOR=$1
# Name of sensor's directoris
SENSORS=(tem_sensor tem_sensor2 tem_sensor3)
# Loop in every folder
for i in ${SENSORS[@]}
do
# We only want the specified sensor so we will skip until we found it
if [[ $SENSOR != $i ]]; then continue ; fi
# You take the hour and minute value from last file
LHOUR=$(ls -lrt $DIR/$i| tail -n1 | awk '{ print $8}' | awk -F ':' '{ print $1}')
LMIN=$(ls -lrt $DIR/$i | tail -n1 | awk '{ print $8}' | awk -F ':' '{ print $2}')
# We calculate the diferences
let FHOUR=($HOUR - $LHOUR)
let FMIN=($MIN - $LMIN)
# I normally put echo to "debug if i need"
# echo "------------- SENSOR $i ---------------"
# echo "LHOUR : $LHOUR LMIN : $LMIN"
# echo "HOUR : $HOUR MIN : $MIN"
# echo "FHOUR : $FHOUR FMIN : $FMIN"
# echo "---------------------------------------"
# if the diference is greater than 2
if [[ $FMIN -gt 02 ]]; then
echo "WARNING - More than 2 minutes withouth recieving data"
exit 1 # We put warning!
# Else if it is not more than 2
# We check if we have an hour of diference!
elif [[ $FMIN -gt 04 ]]; then
echo "CRITICAL - More than 4 minutes withouth recieving data"
exit 2 # We put Red alert!
else
echo "OK - We recieve data"
exit 0 # Green alert if we dont have problems
fi
done
echo "UNKNOW - Sensor not found"
exit 3
# If we got unkwnow (Grey alert)
# with exit 3 it's because you finished the loop
# and you shouldn't, that will be because you misspelled the sensor name