Nagios
通過 Nagios 監控來自感測器的傳入數據
我正在開展一個項目,我們安裝了多個感測器,它們以不同的採樣率生成數據。
是否可以使用 Nagios 外掛來檢查特定感測器或設備的數據是否到來?
如果可能的話,那麼哪個外掛可以用於這樣的目的?我搜尋了 Nagios 外掛站點和網際網路,但找不到任何與此相關的內容。
有不同的感測器以 Ascii 格式生成數據,因此感測器是數據生成的主要來源,然後我們使用 rsync 將這些數據同步到我們的中央 MySQL 數據庫中。每個感測器都有不同的採樣率。.例如,溫度感測器每 2 分鐘生成一次數據,濕度感測器每 5 分鐘生成一次數據。此數據使用 rsync 儲存在文本文件中。..我想根據源採樣率監控數據是每 2 分鐘還是 5 分鐘來一次。所以自定義 nagios 腳本將幫助我了解失去的數據狀態。
有人可以指出一個有用的關於自定義外掛/腳本的教程來處理這種情況嗎?(我是 Nagios 的新手,如果有任何幫助,我將不勝感激。)
您需要創建自己的外掛:
如果您使用有關如何從感測器收集數據的更多詳細資訊來編輯原始問題,如果您需要,我可能會為您提供幫助
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