Назад | Перейти на главную страницу

Мониторинг входящих данных от датчика через Nagios

Я работаю над проектом, в котором установлено несколько датчиков, которые генерируют данные с разной частотой дискретизации.

Можно ли использовать плагин 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