Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> подсчёт трафика —> darkstat

darkstat - самый простой мониторинг трафика, самый легковесный.

Автор: Morty.


Darkstat - Минималистическай тулза(94kb) по сбору
статистики трафика в сети.
Имеющая свой встроенный вэб сервер на котором отображаються
такие отчеты как трафик по хостам, портам, протоколам, а также
построение граффиков. Darkstat может быть запущен на любой современной
UNIX системе в которой имееться libpcap. Как заявлено на официальном сайте ,
может работать на следующих ОС:

AIX
FreeBSD
Linux (Archlinux, Debian, Fedora, Gentoo, OpenSUSE, Ubuntu)
Mac OS X
NetBSD
OpenBSD
Solaris

Установка для OC FreeBSD:
portinstall darkstat
cd /usr/ports/net-mgmt/darkstat/ && make install clean
pkg_add -r darkstat

mkdir /var/run/darkstat
chown nobody:nobody /var/run/darkstat/
touch /var/run/darkstat/darkstat.db
chmod 666 /var/run/darkstat/darkstat.db

/etc/rc.conf
darkstat_enable="YES"
darkstat_interface="re0"
darkstat_dir="/var/run/darkstat"
darkstat_pidname="darkstat.pid"
darkstat_dropuser="nobody"
darkstat_flags="-b 192.168.0.3 -l 192.168.0.0/255.255.0.0 \
--import darkstat.db --export darkstat.db"

darkstat_interface="re0" инт-йс локальной сети
-b : на каком интерфейсе будет работать вэб-интерфейс
-l : указываем сеть которую будем мониторить в формате network/netmask
--import ; --export: сохраняем данные при рестарте демона

проверям работоспособность:
запускаем сам демон:
/usr/local/etc/rc.d/darkstat start
Starting darkstat.

ps ax | grep dark
62216  ??  Ss     0:00,01 /usr/local/sbin/darkstat \
-i rl0 --chroot /var/run/darkstat --pidfile darkstat.pid \
--user nobody -b 192.168.0.3 -
62217  ??  Ss     0:00,00 darkstat: DNS child (darkstat)
62219  p0  S+     0:00,00 grep dark

наш вэб
sockstat -4 | grep dark
nobody   darkstat   62216 8  tcp4   192.168.0.3:667       *:*

наши данные
ll /var/run/darkstat/
total 26
-rw-rw-rw-  1 root    wheel     23K Feb 23 11:31 darkstat.db
-rw-------  1 nobody  nobody     6B Feb 23 11:31 darkstat.pid

ставим в крон (ежедневно или ежемесячно - каждый сам решит) следующий скрипт
#!/bin/sh
DB="/var/run/darkstat/darkstat.db"
pid() {
PIDFILE="/var/run/darkstat/darkstat.pid"
if [ -f $PIDFILE ]; then
  pid=`cat $PIDFILE`
fi
kill -SIGUSR1 $pid
}
pid
mv $DB /var/run/darkstat/"darkstat-`date +%Y-%m`"
touch $DB && chmod 666 $DB 
pid

/etc/crontab :
@monthly    root    /usr/local/scripts/darks.sh

с целью обновлять нашу статистику и делать ротацию дб.файла.

кушать подано , можно пробовать
lynx 192.168.0.3:667

немного скриншотов:
протоколы


хосты


графики


Официальный сайт : http://dmr.ath.cx/net/darkstat/



размещено: 2010-02-23,
последнее обновление: 2010-03-11,
автор: Morty


0dmin, 2010-02-24 в 13:35:21

после успешного инсталла, в стате вываливается статистика для всех интерфейсов (днс-имена, белые ипы и.т.п).... так и должно?

imn, 2010-02-24 в 15:18:57

после запуска /usr/local/scripts/darks.sh статистика тупо обнуляется

WarWar, 2010-02-24 в 16:47:39

Нераскрыт механизм фильтрации хостов.
Во внутреней сети попадаются и внешние адреса (почему-то с MAC адресом)

morty, 2010-02-24 в 19:42:33

2imn: см скрипт внимательно, он сгружает данные файл с именем(год-месяц) и "ротейтит" его на новый (пустой)раз в месяц

Andy, 2010-02-25 в 9:03:31

Есть еще vnstat. И он развивается, если не ошибаюсь.
http://humdi.net/vnstat/

Morty, 2010-02-25 в 10:12:22

есть , тоже пользуюсь :-)

Станислав, 2010-02-26 в 13:44:22

Извините за оффтоп... А разве vnstat показывает статистику по АйПишникам?

Денис, 2010-03-02 в 5:25:32

не знаю как у остальных, а у меня при перезагрузки папка /var/run/darkstat вычищалась полностью. И соответсенно при запуске darkstat ругался что файл darkstat.db не найден..

Перенес в /var/db/darkstat. И проблемо финита...

Фря 8-я

localhost, 2010-03-02 в 8:55:44

Думаю скрипт нужно немного дописать. :)
Статья хорошая, но маловато сказано о фильтрации, хотя это можно и самому додумать :) Спасибо!.

Stran, 2010-03-03 в 11:32:50

Черт когда уже разрабочтики повернутся лицом к пользователям, вывод в байтах это ппц как неудобно, где мегабайты? )

vfrcbv, 2010-03-10 в 16:46:46

зато точно

Cancer, 2010-03-10 в 21:57:15

Допиши старт демона, перед проверкой его работы!

posion, 2010-03-25 в 18:37:05

а юзеров отрубать можно?

skylego, 2010-04-13 в 12:51:59

FreeBSD 8
Тоже пришлось переносить в /var/run/db.

netc, 2010-06-16 в 11:39:19

папка /var/run/*
отчищаеться при перезапуске системы, поэтому, желательно вообще использовать папку /var/db/darkstat

gonzo111, 2010-06-24 в 17:28:51

 darkstat_enable="YES"
   darkstat_interface="tun0"
   darkstat_dir="/var/db/darkstat"
   darkstat_pidname="darkstat.pid"
   darkstat_dropuser="nobody"
darkstat_flags="-p 662 -b 10.0.0.1 --import darkstat.db --export darkstat.db  --hosts-max 900 \
--hosts-keep 100 --syslog  --wait 15 --no-promisc"

sypper-pit, 2010-09-01 в 9:35:28

народ , а как сделать подсчёт на несколько интерфейсов ?

sol, 2010-10-27 в 14:20:41

не показыает графики что может не поставленно или ? может кто сталкивался FreeBSD 7.2

Кэп, 2011-03-10 в 18:04:34

Кто нибудь разобрался как вывод в мегабайтах делать ?

alex117, 2011-11-16 в 8:37:40

[quote]не показыает графики что может не поставленно или ? может кто сталкивался FreeBSD 7.2[/quote]
Расширение php-gd не установлено, или установлено некорректно.

kex2k, 2012-05-10 в 18:22:26

1. в скрипт для крона хорошо бы внести перезапуск самого darkstat чтобы счетчик "Total" на странице graphs тоже обнулился

/usr/local/etc/rc.d/darkstat restart

2. чтобы посмотреть статистику за предыдущий период кроме как подмены текущей базы  пока не придумал (((

VovkaAnykey, 2018-02-13 в 2:34:56

на фряхе возможно нужно искать аналог darkstat,
т.к. при сборке ругается на

graph_db.c:198:16: warning: format specifies type 'long' but the argument has type 'time_t' (aka 'int') [-Wformat]
              last_real, t, td);
              ^~~~~~~~~
graph_db.c:198:27: warning: format specifies type 'long' but the argument has type 'time_t' (aka 'int') [-Wformat]
              last_real, t, td);
                         ^
graph_db.c:198:30: warning: format specifies type 'long' but the argument has type 'time_t' (aka 'int') [-Wformat]
              last_real, t, td);

соответственно и графики не отображаются, плюс в файле INSTALL разработчик пишет:

I, the darkstat maintainer, mostly develop darkstat on Debian GNU/Linux, but
mostly run darkstat on FreeBSD.

Установил на дебиан бары тикают все работает и отображается, на фре (10) графиков нет, иногда проскаивают какие то бары, но секундных в реал тайме нету.
По комментарию выше про php-gd переустонавливал, пробовал разные тестовые страницы, все отрабатывает. Кто силен в С допилите пожалуйста файл graph_db.c .
Если при ./configure указать --enable-silent-rules --enable-warnings , там еще больше варнингов сыпет про несоответствие типов.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0613 секунд
Из них PHP: 24%; SQL: 76%; Число SQL-запросов: 80 шт.
Исходный размер: 38922; Сжатая: 8613