rstat

Клиент-серверное приложение для мониторинга и построения графиков загрузки сети и учёта работы различных сервисов. Для построения графиков используется MRTG. В пакет входит 2 программы:

  • rstats - Сервер мониторинга

Параметры:

ipfw num:num - Получать данные с ipfw
snmp oid:oid - Данные SNMP
iptable      - трафик с iptable
net_bufs     - FreeBSD net  buffer
load         - Загрузка системы
mysql        - Количество mysql запросов и медленных запросов 
memory       - Память
memnocache   - memory cache
swap         - Swap info
tuns_traf    - трафик по всем tun  интерфейсам
ppp_count    - количество активных pppd  интерфейсов
ng_count     - количество активных mpd 
tun_count    - Количество активных tun  интерфейсов
mikrotik_ppp - Количество ppp  сессий
mikrotik_load- Нагрузка на процессор
mikrotik_mem - Нагрузка на память
  • rstatc - Клиент для снятия данных с удалённого сервера

Другие файлы:

  • mrtg.cfg - Примеры настройки конфигурационного файла MRTG.

Возможности

  • Мониторинг проходящего трафика через интерфейс
  • Съём данных с ipfw (FreeBSD) iptables (Linux)
  • Мониторинг загрузки процессора
  • Мониторинг использования памяти
  • Мониторинг количества VPN сессий (tun, ng, pppd)
  • Мониторинг загрузки сервера баз данных (Mysql)
  • Мониторинг количества консольных пользователей
  • Мониторинг почтовой очереди
  • Поддержка ОС Linux, FreeBSD
  • Мониторинг сервисов как локально, так и на удалённых серверах

Установка

Скачиваем приложение для съёма статистики.

# git clone https://github.com/nabat/rstat.git
# cd rstat
# make install

Настройка

Берём MRTG пакет с сайта http://oss.oetiker.ch/mrtg/download.en.html

Пример mrtg.cfg:

WithPeak[_]: ymwd
XSize[_]: 300
XScale[_]: 1.5
Options[_]: growright, transparent
# Каталог для графиков. 
WorkDir: /usr/abills/webreports/
 
# Мониторинг загрузки fxp2 интерфейса на локальном сервере
Target[vpn_traf]: `/usr/local/sbin/rstats iface fxp2`
Options[vpn_traf]: growright, transparent
MaxBytes[vpn_traf]: 12500000
Title[vpn_traf]: VPN Interface
PageTop[vpn_traf]: <H1>Traffic Analysis for VPN interface </H1>

# Мониторинг количества активных VPN соединений
Target[vpn_count]: `/usr/local/sbin/rstats tun_count`
Ylegend[vpn_count]: VPN Counts
ShortLegend[vpn_count]: &nbsp;Users&nbsp
Options[vpn_count]: gauge,nopercent,noinfo,transparent,growright
MaxBytes[vpn_count]: 200
Title[vpn_count]: VPN Interface count
PageTop[vpn_count]: <H1>VPN interface count</H1>
Legend1[vpn_count]: Total users logged in
Legend2[vpn_count]: Unique users logged in
Legend3[vpn_count]: Maximal 5 Minute Incoming Traffic
Legend4[vpn_count]: Maximal 5 Minute Outgoing Traffic
LegendI[vpn_count]: &nbsp;Total Users:
LegendO[vpn_count]: &nbsp;Unique Users:
Colours[vpn_count]: SILVER#C0C0C0,BLACK#000000,DARKGREEN#006600,VIOLET#ff0

Создаём центральную страницу для графиков. Для дистрибутива ABillS каталог /usr/abills/webreports/.

# indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/abills/webreports/index.htm

Посмотреть графики можно за адресом:

 https://your.host:9443/reports/

/etc/crontab

*/5     *       *       *       *       root  /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg

Настройка мониторинга с удалённого сервера

Если VPN работает на удалённом сервере, тогда на локальном сервере правим в mrtg.cfg

/usr/local/sbin/rstats меняем на /usr/local/bin/rstatc remotehost

remotehost - Адрес удалённого сервера

На удалённом сервере.

# tar zxvf rstat.tgz

# cd rstat
# cp rstats /usr/local/sbin/

Правим /etc/services

rstats         30003/tcp

При использовании inetd:
Правим /etc/inetd.conf

rstats  stream  tcp     nowait  root    /usr/local/sbin/rstats rstats

Перезагружаем inetd

# killall -1 inetd

При использовании xinetd:

/etc/xinetd.d/rstats

service rstats
{
    disable                 = no
    port                    = 30003
    socket_type             = stream
    protocol                = tcp
    wait                    = no
    user                    = root
    passenv                 = PATH
    server                  = /usr/local/sbin/rstats
    env                     = HOME=/var/log
}

перезапуск сервиса:

# /etc/rc.d/xinetd restart

Дополнительно

Включение SNMP на Cisco

# snmp-server community 1XyJfhQM2rPLlXuj RO 50