Я работаю над проектом, в котором установлено несколько датчиков, которые генерируют данные с разной частотой дискретизации.
Можно ли использовать плагин Nagios, чтобы проверить, поступают ли данные для определенного датчика или устройства?
Если возможно, то какой плагин можно использовать для этой цели? Я искал на сайте плагинов Nagios и в Интернете, но не нашел ничего, что казалось бы связанным с этим.
Существуют различные датчики, которые генерируют данные в формате Ascii, поэтому датчики являются основными источниками генерации данных, поэтому мы используем rsync для синхронизации этих данных с нашей центральной базой данных MySQL. и каждый датчик имеет разную частоту дискретизации. . Например, датчик температуры генерирует данные каждые 2 минуты, а датчик влажности генерирует данные каждые 5 минут. эти данные хранятся в текстовом файле с помощью rsync. ..Я хочу отслеживать, поступают ли данные каждые 2 или 5 минут в зависимости от частоты дискретизации источника. Таким образом, пользовательский сценарий nagios поможет мне узнать о состоянии отсутствующих данных.
Может ли кто-нибудь указать на полезный учебник о настраиваемых плагинах / скриптах для решения такой ситуации? (Я новичок в Nagios и буду благодарен за любую помощь.)
Вам необходимо создать собственный плагин:
Как: создать подключаемый модуль Nagios с помощью сценария BASH
Если вы отредактируете исходный вопрос, указав более подробную информацию о том, как данные собираются с датчиков, я мог бы помочь вам с 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