Мониторинг погоды посредством Zabbix

Posted by

P.S: Данная заметка актуальта только отчасти, за обновленными сведениями прошу сюда.

Долго меня интересовала задача, каким образом производить мониторинг уличной погоды – т.е. формировать статистику в течении дня, недели, месяца как она изменяется. Вот если вспомнить если конечно кто-то помнит, к примеру я помню со школьной поры, как нас учительница географии заставляла в течение месяца вести таблицу таких параметров: день, время, направление ветра, влажность, температура. Ну тогда я был маленький и еще не знал, что буду системным администратором с уклоном в самостоятельное решение проблем и вот я поставил себе небольшую задачку. Хочу имея такой инструмент как Zabbix вести мониторинг за такими параметрами, но не в блокнотике, а в виде графика. Сейчас я покажу, на примере значений влажности и температуры, как это добиться. Ниже пошаговые действия ориентированные на ось .5 Server amd64 и Zabbix версии (2.2.13).

Информацию по погоде через консоль можно получить так:

ekzorchik@srv-mon:~$ sudo apt-get install weather-util -y

ekzorchik@srv-mon:~$ weather

weather: error: id required for conditions

Чтобы узнать ID места с которого запрашивать и получать информацию состояния погоды нужно зайти через браузер на сайт: http://weather.noaa.gov/

После выбираем страну (в которой сейчас находимся, в моем случае это Россия) Russian и нажимаем Go!

Чтобы узнать ID места с которого запрашивать и получать информацию состояния погоды нужно зайти через браузер на сайт: http://weather.noaa.gov/После указываю город текущего расположения:

Most recently observed weather conditions for Russian: Select a location: т.к. я живу в подмосковье, а информацию можно запросить только с ближайших аэропортов на которых находится метеостанция это: Внуково, Шереметьево, Домодедово – то я выбираю Moscow/Domodedovo как наиболее близ лежащий к моему дому и нажимаю Go, получаю следующий вывод

Информация полученная от метеостанции аэропорта "Домодедово"

В данном выводе меня интересует идентификатор аэропорта “Домодедова”, а именно: UUDD

Теперь зная идентификатор информацию по погоде на консоль можно вывести с использованием утилиты weather так:

ekzorchik@srv-mon:~$ weather --id=UUDD

Current conditions at Moscow / Domodedovo, Russia (UUDD) 55-24N 037-54E (UUDD)

Last updated Jun 12, 2016 — 10:30 AM EDT / 2016.06.12 1430 UTC

Temperature: 53 F (12 C) Температура

Relative Humidity: 76% Относительная влажность

Wind: from the WSW (250 degrees) at 16 MPH (14 KT) gusting to 27 MPH (23 KT) (direction variable)

Weather: Cumulonimbus clouds observed

Sky conditions: mostly cloudy

Теперь посредством консоли командной строки мне нужно получить градусы и относительную влажность которую я буду мониторить:

ekzorchik@srv-mon:~$ weather --id=UUDD | grep 'Temperature' | awk '{print $4}' | sed -e 's/(//g'

15

ekzorchik@srv-mon:~$ weather --id=UUDD | grep 'Relative Humidity' | awk '{print $3}'

54%

ekzorchik@srv-mon:~$ weather --id=UUEE | grep 'Relative Humidity' | awk '{print $3}' | sed 's/^\(.*\).$/\1/'

55

Имея данные значения можно настроить элементы данных, т.к. эти данные ни как не связаны с другими, то для них создам шаблон: Template_Weather

http://IP&DNS – user&pass – Configuration – Templates – Create Template —

Template Name: Template Weather

GroupsZabbix servers

а после нажимаю Save, теперь перехожу в данный Template и создаю элементы (Items) данных: → Create Item

  • Name: Temperature
  • Type: Zabbix agent
  • Key: temp
  • Type of information: Numeric (unsigned)
  • Data type: Decimal
  • Units: C
  • New application: Temperature
  • Enabled: Отмечаю галочкой и нажимаю Save

и еще один элемент данных для влажности:

  • Name: Relative Humidity
  • Type: Zabbix agent
  • Key: humi
  • Type of information: Numeric (unsigned)
  • Data type: Decimal
  • Units: %
  • Applications: выбираю Temperature
  • Enabled: Отмечаю галочкой и нажимаю Save

Для того, чтобы с сервера Zabbix можно было осуществлять проверку данного элемент данных, нужно на сам сервер поставить агент zabbix:

ekzorchik@srv-mon:~$ sudo apt-get install zabbix-agent=1:2.2.13-1+precise -y

Создаю скрипты получения информации о температуре и относительной влажности:

ekzorchik@srv-mon:~$ sudo nano /usr/lib/zabbix/externalscripts/temp

#!/bin/bash

/usr/bin/weather --id=UUDD | grep 'Temperature' | awk '{print $4}' | sed -e 's/(//g'

exit

ekzorchik@srv-mon:~$ sudo nano /usr/lib/zabbix/externalscripts/humi

#!/bin/bash

/usr/bin/weather --id=UUDD | grep 'Relative Humidity' | awk '{print $3}' | sed 's/^\(.*\).$/\1/'

exit

Изменяю права доступа до скриптов и делаю их исполняемыми:

ekzorchik@srv-mon:~$ sudo chmod 755 /usr/lib/zabbix/externalscripts/*

ekzorchik@srv-mon:~$ sudo chmod +x /usr/lib/zabbix/externalscripts/*

ekzorchik@srv-mon:~$ sudo ls -l /usr/lib/zabbix/externalscripts/

total 8

-rwxr-xr-x 1 root root 114 Apr 25 16:59 humi

-rwxr-xr-x 1 root root 102 Apr 25 16:47 temp

После конфигурационный файл Zabbix-агента на хосте будет следующим:

ekzorchik@srv-mon:~$ sudo nano /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid

LogFile=/var/log/zabbix/zabbix_agentd.log

LogFileSize=10

DebugLevel=3

EnableRemoteCommands=1

LogRemoteCommands=1

Server=localhost

ListenPort=10050

Hostname=srv-mon

UserParameter=temp[*],/usr/lib/zabbix/externalscripts/temp

UserParameter=humi[*],/usr/lib/zabbix/externalscripts/humi

Перезапускаю сервис Zabbix-агента:

ekzorchik@srv-mon:~$ sudo service zabbix-agent restart

После проверяю получение Zabbix-агентом данных и скриптов:

ekzorchik@srv-mon:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t humi

humi [t|66]

ekzorchik@srv-mon:~$ sudo zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -t temp

temp [t|13]

Отлично результаты возвращаются. Теперь нужно данный шаблон (Template) нацепить на текущий хост на котором у меня развернут сам сервис по мониторингу за инфраструктурой. Ну а далее можно в самом шаблоне создать график на который и вывести оба значения от элементов данных которые посредством скрипта получают необходимое.

http://IP&DNS – user&pass – Configurations – Templates – Group – Zabbix Servers – Template Weather – Graphs – Create graph

  • Name: Current Temperature
  • Items: Template Weather: Relative Humidity & Template Weather: Temperature

все остальные поля оставляю дефолтными, а после нажимаю Save

Теперь если обратиться к графикам, то картина по шаблону Template Weather будет следующей:

http://IP&DNS – user&pass – Monitoring – Graphs,

  • Group: Zabbix Servers
  • Host: Zabbix server
  • Graph: Current Temperature

Мониторинг температуры на основе данных с аэропорта Домодедово

По сути все сводится выбору инструмента и составлению скрипта на основе которого будет извлекаться необходимые значения по которым нужно вести мониторинг и еще в конфигурационном файле /etc/zabbix/zabbix_agentd.conf нужно обратить внимание на правильность указания пути до скриптов. А так все работает, на этом я прощаюсь и до новых заметок, с уважением автор блога – ekzorchik.