﻿PingSTAT v2.03 /Linux

Оглавление

1. Назначение и основные возможности
2. Условия распространения и использования
3. Системные требования
4. Состав дистрибутива
5. Использование программы
  5.1. Установка
  5.2. Конфигурирование
  5.3. Запуск
  5.4. События, обрабатываемые программой
  5.5. Формирование web-страницы
  5.6. Работа по протоколу SNMP
6. История версий


1. Назначение и основные возможности

Программа PingSTAT предназначена для приема и обработки UDP пакетов, генерируемых устройствами сетевого мониторинга ("пингерами") PING1 и PING2 производства Equicom (http://www.equicom.dp.ua). Программа формирует web-страницу, в которой в виде таблицы отображается информация по всем контролируемым пингерам: версия устройства (PING1/PING2), время приема последнего пакета, средний интервал между пакетами, состояние внешних цифровых входов, значение температуры (если к входу АЦП подключен термодатчик). Имеется возможность настройки стиля таблицы и окраски ее элементов в зависимости от характера событий, происходящих с каждым пингером. 

Программа позволяет получить полную информацию обо всех контролируемых пингерах при обращении к ней по протоколу SNMP v1, v2. Благодаря этому появляется возможность использовать ее практически с любой стандартной системой мониторинга, собирающей данные о контролируемых объектах по протоколу SNMP.

При наступлении любого события с пингером (например: изменилось состояние внешнего цифрового датчика, прекратился или возобновился поток пакетов, температура вышла за допустимые пределы) запускается скрипт, которому в качестве входных параметров передается полная информация о состоянии данного пингера. При помощи этого скрипта можно соответствующим образом отреагировать на событие, например, добавить строку в log-файл, отправить сообщение на e-mail или SMS на мобильный телефон, вывести сообщение на экран компьютера, отправить SNMP Trap сообщение и т.д.

Программа может контролировать любое количество пингеров.


2. Условия распространения и использования

Программа распространяется бесплатно и может использоваться без каких-либо ограничений, в том числе и без ограничений на извлекаемую из этого прибыль. Программа распространяется по принципу "как есть", компания Equicom не дает никаких гарантий по поводу работоспособности и пригодности этой программы, не берет на себя каких-либо обязательств и не несет ответственности за моральный и материальный ущерб, связанный с использованием этой программы. Вы используете эту программу на свой собственный страх и риск. Программа должна распространяться только в оригинальном архиве.


3. Системные требования

Программа поставляется в виде сборок под следующие операционные системы:

Linux x32 (протестировано под Ubuntu-11.04, Mint-11, openSUSE-11.4)
Linux x64 (протестировано под Ubuntu-11.04)
Linux CentOS x32 (протестировано под CentOS-5.7)
Linux CentOS x64 (протестировано под CentOS-5.7)


4. Состав дистрибутива

В архиве pinfstat2.02.tar.gz находятся следующие файлы:

run_pingstat.sh - скрипт для запуска программы
pingstat - исполнимый файл для запуска в обычном режиме
pingstatd - исполнимый файл для запуска в режиме демона
pingstat.conf - файл конфигуриции
pingstat.html.tpl - шаблон формируемой web-страницы
pingstat.sh - скрипт, запускаемый автоматически при наступлении различных событий
mailer - программа для отправки сообщений по электронной почте
mailer.txt - краткое описание программы mailer
sms_dead.txt и sms_alive.txt - образцы входных файлов для программы mailer
ReadMe_utf-8.txt - описание программы в кодировке utf-8
ReadMe_KOI-8.txt - описание программы в кодировке KOI-8
/lib/ - папка с библиотеками, необходимыми для работы программы
/etc/snmp/pingstat.conf - файл конфигурации, предназначенный для задания строки
                          READ COMMUNITY, действующей при обращении к программе
                          по протоколу SNMP
/etc/snmp/snmp.conf - файл конфигурации, необходимый для корректной работы
                      протокола SNMP
pingstat.mib - mib файл


5. Использование программы

5.1. Установка

Создайте пустую папку и скопируйте в нее все файлы из дистрибутива, а также папку /lib/ со всем содержимым. Все файлы из папки /etc/snmp/ дистрибутива скопируйте в одноименную папку файловой системы /etc/snmp/ (если папка отсутствует, ее необходимо создать).


5.2. Конфигурирование

Все параметры программы настраиваются при помощи файла pingstat.conf, находящегося по умолчанию в папке программы. В нем также содержится описание всех пингеров, которые программа будет контролировать. К каждому параметру в файле имеется комментарий, что позволяет в нем разобраться без дополнительной документации.

Имеется еще один файл с аналогичным названием, расположенный по пути /etc/snmp/pingstat.conf  Он предназначен исключительно для задания строки READ COMMUNITY, действующей при обращении к программе по протоколу SNMP. Эта строка  задается как параметр "com2sec" в самом начале файла.

Для того, чтобы программа видела адресованные ей пакеты, необходимо правильно задать параметры пингеров:

Dst MAC - указать MAC адрес того сетевого интерфейса, который непосредственно будет принимать пакеты. В устройствах PING1 и PING2 не реализована поддержка протокола ARP, поэтому данный адрес необходимо задавать вручную.

Dst IP - указать IP адрес сервера, на котором запущена программа PingSTAT. В общем случае данный IP адрес никак не связан с Dst MAC, эти адреса могут принадлежать абсолютно разным устройствам, расположенным в разных подсетях. Главное, чтобы был обеспечен роутинг пакетов от интерфейса с заданным Dst MAC к устройству с заданным Dst IP.

Src IP - задается по усмотрению администратора сети из диапазона доступных IP адресов с учетом обеспечения роутинга пакетов к устройству с заданным Dst IP.


5.3. Запуск

Для запуска программы предназначен скрипт run_pingstat.sh  Программа может быть запущена в обычном режиме с выдачей служебных сообщений на экран, либо в режиме демона. Чтобы выбрать способ запуска, необходимо в скрипте run_pingstat.sh изменить имя исполнимого файла на pingstat (для запуска в обычном режиме) либо на pingstatd (для запуска в режиме демона).

Исполнимый файл имеет единственный необязательный параметр - имя файла конфигуриции с полным путем. При запуске без параметров программа ищет файл pingstat.conf в текущей папке. 

Выполнение программы, запущенной в обычном режиме, можно прервать комбинацией клавиш <ctrl>+c. Если программа запущена в режиме демона, для выгрузки ее из памяти используйте команду "killall pingstatd".


5.4. События, обрабатываемые программой

Программа может обрабатывать следующие события (все параметры задаются в файле pingstat.conf):

- принято N пакетов от пингера (событие "Timer")
- от пингера нет пакетов в течение времени Ping_warning_timeout (событие
  "Warning")
- от пингера нет пакетов в течение времени Ping_timeout (событие "Dead")
- поток пакетов от пингера возобновился (событие "Alive")
- изменилось значение бита (событие "BitX", где X = 0..7)
- температура понизилась ниже значения MinTemp (событие "MinTempError")
- температура вернулась в норму - стала больше или равна значению MinTemp
  (событие "MinTempOk")
- температура повысилась выше значения MaxTemp (событие "MaxTempError")
- температура вернулась в норму - стала меньше или равна значению MaxTemp
  (событие "MaxTempOk")

При наступлении любого события запускается скрипт pingstat.sh, которому передается 21 входной параметр - полная информация о пингере и о событии, которое с ним произошло. Все параметры описаны в примере скрипта, в нем также приведены примеры обработки этих параметров: вывод сообщения на экран, формирование log-файла, отправка сообщения SMS, отправка SNMP Trap сообщения. Окончательно отредактировать данный скрипт под собственные нужды предоставляется конечному пользователю.

Сразу после запуска программа начинает контролировать состояние пингеров, при приеме первого пакета от каждого пингера для него наступает событие "Alive".


5.5. Формирование web-страницы

В процессе работы программа формирует web-страницу ping.html, ее внешний вид задается при помощи шаблона pingstat.html.tpl. Шаблон содержит конструкции языка html и переменные, вместо которых программа в процессе работы подставляет необходимые значения. В первой части файла задаются следующие css-стили для раскраски элементов таблицы:

.bit1 - ячейка таблицы при нормальном значении бита
.bit0 - ячейка таблицы при ненормальном значении бита
.bit_disabled - ячейка таблицы при неактивном бите
.Live - строка таблицы, если пакеты от пингера приходят нормально
.Warning - строка таблицы, если от пингера долго не приходят пакеты
           (событие "Warning")
.Dead    - строка таблицы, если от пингера прекратился поток пакетов
           (событие "Dead")
.TemperatureStateOk    - ячейка таблицы с нормальным значением температуры
.TemperatureStateError - ячейка таблицы с ненормальным значением температуры
.temperature_disabled  - ячейка таблицы при неактивной функции отображения
                         температуры


5.6. Работа по протоколу SNMP

Программа поддерживает мониторинг состояния всех контролируемых пингеров по протоколу SNMP v1, v2 (только чтение). Для этой цели можно использовать любые программные средства, работающие с указанными версиями протокола. Программа выступает в качестве SNMP агента, принимая запросы на стандартный UDP порт 161.

Перечень поддерживаемых программой OID содержатся в файле pingstat.mib  Все переменные сгруппированы в ветке iso.org.dod.internet.private.enterprise.equicom.pingstat (1.3.6.1.4.1.35160.2)

Аутентификация пользователя осуществляется при помощи строки Read Community, которая задается в файле /etc/snmp/pingstat.conf  Значение по умолчанию - public

Полный список OID:

.1.3.6.1.4.1.35160.2.2.0 - numberOfPingers (Integer32)
                           Количество пингеров в системе

.1.3.6.1.4.1.35160.2.3.0 - uptimeSeconds (Integer32)
                           Общее время работы программы в секундах

.1.3.6.1.4.1.35160.2.4.0 - programVersion (DisplayString)
                           Версия программы

Для всех следующих OID: x - номер пингера (1..numberOfPingers)

.1.3.6.1.4.1.35160.2.1.1.2.x - ip (IpAddr)
                               IP адрес пингера

.1.3.6.1.4.1.35160.2.1.1.3.x - address (DisplayString)
                               Место расположения пингера (текстовая строка)

.1.3.6.1.4.1.35160.2.1.1.4.x - description (DisplayString)
                               Текстовое описание пингера

.1.3.6.1.4.1.35160.2.1.1.5.x - state (Unsigned32 (0..2))
                               Состояние пингера: 
                               0-OK, 1-Warning, 2-Dead

.1.3.6.1.4.1.35160.2.1.1.6.x - lastTime (Unsigned32)
                               Время приема последнего пакета (отсчет ведется в
                               секундах от 01.01.1970, для перевода в реальную
                               дату и время можно использовать команду 
                               date -d @<lastTime>).
                               Если от пингера не получено ни одного пакета,
                               lastTime=0. В этом случае все его остальные
                               параметры, считываемые по протоколу SNMP,
                               являются не определенными.

.1.3.6.1.4.1.35160.2.1.1.7.x - averageTime (Unsigned32)
                               Среднее время между пакетами в мс.

.1.3.6.1.4.1.35160.2.1.1.8.x - ax (Unsigned32 (0..255))
                               Значение байта AX (результат работы АЦП)
                               в неизменном виде

.1.3.6.1.4.1.35160.2.1.1.9.x - dx (Unsigned32 (0..255))
                               Значение байта DX (состояние внешних входов)

.1.3.6.1.4.1.35160.2.1.1.10+b.x - bit<b> (Unsigned32 (0..1))
                               Значение бита с номером b (0..7) из байта DX

.1.3.6.1.4.1.35160.2.1.1.18.x - temperature (Integer32)
                               Значение температуры в единицах 0,1 градуса,
                               вычисленное из байта AX (то же, что отображается
                               на html странице)

.1.3.6.1.4.1.35160.2.1.1.19.x - temperatureState (Integer32 (0..2))
                               Состояние температуры:
                               0: temperature < MinTemp
                               1: MinTemp <= temperature <= MaxTemp
                               2: temperature > MaxTemp


6. История версий

v2.03
------
Возвращена старая нумерация пингеров на web-странице и при обращении по протоколу SNMP с 1 до numberOfPingers (в версии 2.02 было с 0 до numberOfPingers-1)


v2.02
------
Добавлена возможность получать информацию о пингерах по протоколу SNMP

Добавлен гистерезис, используемый для фиксации пересечения температурой пороговых значений

Добавлена возможность принудительного запуска скрипта pingstat.sh после приема N пакетов от пингера (событие "Timer")

Теперь в скрипт передается 21 параметр (добавлено значение температуры)

Изменено поведение программы после запуска: теперь после получения первого пакета от каждого пингера наступает только одно событие - "Alive" (раньше формировалось много событий по изменению каждого параметра)


v2.01
------
Из файла pingstat.conf удален параметр Log_name

В файл ping.html.tpl добавлен стиль .temperature_disabled

Исправлена ошибка с неправильной передачей параметров в скрипт при первом запуске программы

Написан файл документации

Добавлены комментарии в pingstat.conf и pingstat.sh

В дистрибутив включена программа mailer


v2.0
------
Исходная версия

