Появилась задача помониторить внешние ресурсы на доступность простым ICMP опросом. Но данное решение как вы понимаете подойдет и для решения мониторинга узлов внутренней сети, короче говоря всего, что вы можете попинговать :)
У меня уже была поднята Grafana и influxdb - эта база данных идеально подходит для сбора и хранения подобных данных. Основным назначением является хранение больших объемов данных с метками времени.
И нам осталось только написать скрипт который будет опрашивать данные, и записывать их в БД. А настройки графаны для вывода графиков буду интуитивно понятны.
Сам скрипт таков:
from ping3 import ping, verbose_ping
from influxdb import InfluxDBClient
import datetime
host='localhost'
port=8086
user='ping'
password='ping'
dbname='pingdb'
client = InfluxDBClient(host, port, user, password, dbname)
servers = ['yandex.ru', 'vk.com', 'yota.ru', 'instagram.com', 'ok.ru']
def pingserver(server):
try:
return ping(server)*1000
except:
return 0.0
while True:
now = datetime.datetime.now()
for server in servers:
pingdata = [{
"measurement": "obit",
"tags": {
"host": server,
},
"time": now.strftime("%Y-%m-%d %H:%M:%S"),
"fields": {
"ping": pingserver(server)
}
}]
print(pingdata)
client.write_points(pingdata)
Комментариев нет:
Отправить комментарий