DNS Stats Collector

Allikas: Imre kasutab arvutit

Sissejuhatus

DSC (DNS Stats Collector) https://www.dns-oarc.net/tools/dsc/ lahenduse abil saab ülevaate mingist punktist läbi käivatest DNS päringutest.

Tööpõhimõte

DNS Stats Collector põhiline idee seiseb asjaolus, et andmed kogutakse võrgu tasemel, st mitte DNS teenusega tegeleva programmi logi vms kasutamisega. Selles mõttes on see äärmiselt hea lahendus, et teenus tegeleb teenuse pakkumisega ja statistika koguja statistika kogumisega.

Üldiselt on DSC lahenduse komponentideks

  • võrgus laiali paiknevad kollektorid (ingl. k. collector)
  • võrgus laiali paiknevad veebipõhised presenteerijad (ingl. k. presenter)
             auul-dns                                       moraal-dns

        auul-dns1  auul-dns2                       moraal-dns1   moraal-dns2   moraal-dns3
           ___       ___                             ___           ___           ___
          |   |     |   |                           |   |         |   |         |   |
          |___|     |___|                           |___|         |___|         |___|
            |         |                               |             |             |
            |         |                               |             |             |
                ...                                        ...
                                          ...
                 
                                           .

                           |               |                |
                         __|__           __|__            __|__
                        |     |         |     |          |     |
                        |_____|         |_____|          |_____|

                       present-1       present-2        present-3

kus

  • dsc serverid (auul-dns, moraal-dsc) - auul-dns puhul teenus, millele vastab kaks füüsilist nimeserveri; DSC lingos nimetatakse seda komplekti serveriks (idee poolest on neil üks ja sama ip aadress, aga nad asuvad erinevas kohtades võrgus ja ruutingu trikkide abil osade klientide päringud ruuditakse ühe ja osa teisse node'i)
  • node'id (auul-dns1, auul-dns2) - kaks serverit; DSC lingos nimetatakse neid node'ideks
  • *-dns{1,2,3} arvutites töötavad DSC kollektori protsessid (ühes arvutis võib töötada ka mitu
  • presenteerijad (present-1,2,3) võtavad kollektorite poolt saadetud andmeid vastu ning teevad tulemused veebipõhise kasutajaliidese abil kättesaadavaks

Erijuhul võib olla tegemist ühe arvutiga, kus töötab nii kollektor kui presenteerija. Ideaalne oleks käivitada DSC switchi vastava serveri pordi mirroril; alternatiiv on käivitada dsc kollektori protsess teenust pakkuval serveril vastava võrguliidese peal kuulama.

Kollektori paigaldamine

Kollektori paigaldamiseks sobib öelda

# apt-get install dsc-statistics-collector

tulemusena tekitatakse

  • kasutaja Debian-dsc-statistics
  • /etc/default/dsc-statistics-collector - üldine seadistusfail
  • /etc/init.d/dsc-statistics-collector - käivitusskript

Presenteerija paigaldamine

Presenteerija paigaldamiseks sobib öelda

# apt-get install dsc-statistics-presenter libswitch-perl

tulemusena tekitatakse

  • kasutaja Debian-dsc-statistics
  • /etc/dsc-statistics/dsc-grapher.cfg - seadistusfail
  • /etc/init.d/dsc-statistics-presenter - käivitusskript, arusaamatu funtsiooniga

Tundub, et lisaks tuleb teha failis /usr/share/perl5/DSC/grapher.pm selline muudatus, lisada sulud

< foreach my $u qw(years weeks days hours minutes) {
> foreach my $u (qw(years weeks days hours minutes)) {

vastasel korral saab brauserisse teate Internal Server Error ning logisse kirjutatakse, et

AH01215: Scalar found where operator expected at /usr/share/perl5/DSC/grapher.pm line 1582, near "$a": 
  /usr/lib/cgi-bin/dsc-statistics/dsc- grapher, referer: 
  http://192.0.0.118/cgi-bin/dsc-statistics/dsc-grapher?plot=rcode&server=localhost&window=172800&node=localhost
AH01215: \t(Missing semicolon on previous line?): /usr/lib/cgi-bin/dsc-statistics/dsc-grapher, referer:
  http://192.0.0.118/cgi-bin/dsc-statistics/dsc-grapher?plot=rcode&server=localhost&window=172800&node=localhost

Kollektori seadistamine ja kasutamine

Kollektori tööd juhivad seadistusfailid

  • /etc/dsc-statistics/dsc-collector.cfg
  • /etc/default/dsc-statistics-collector

Käivitamiseks sobib öelda

# systemctl start dsc-statistics-collector

Seejärel hakkab tööle dsc protsess ning lisaks töötab cron töö

# cat /etc/cron.d/dsc-statistics-collector 
# /etc/cron.d/dsc-collector: crontab entries for the dsc-collector package

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/5 *    * * *   root    test -x /usr/share/dsc-statistics-collector/upload-prep \
  && /usr/share/dsc-statistics-collector/upload-prep

Tulemusena tekitatakse failisüsteemi selliseid faile sellistesse kataloogidesse

  • dsc protsess kirjutab xml faile
/var/lib/dsc-statistics/default
  • /usr/share/dsc-statistics-collector/upload-prep kopeerib xml faile presentaatoritesse uploadimise juures kasutatavatesse kataloogidesse, seejärel allikast failid kustutatakse; upload-prep kopeerib kõigisse /var/lib/dsc-statistics/default/upload kataloogis olevatesse alamkataloogidesse, nt moodustuvad sellised failid
/var/lib/dsc-statistics/default/upload/present-1/2016-02-16/1455616920.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-1/2016-02-16/1455616980.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-1/2016-02-16/1455617040.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-1/2016-02-16/1455617100.dscdata.xml
..
/var/lib/dsc-statistics/default/upload/present-2/2016-02-16/1455616920.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-2/2016-02-16/1455616980.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-2/2016-02-16/1455617040.dscdata.xml
/var/lib/dsc-statistics/default/upload/present-2/2016-02-16/1455617100.dscdata.xml
...
  • /usr/share/dsc-statistics-collector/upload-rsync kopeerib xml failid laiali presenteerijatesse
# cat /etc/cron.d/dsc-statistics-collector
..
* * * * * Debian-dsc-statistics /usr/share/dsc-statistics-collector/upload-rsync default \
  present-1 Debian-dsc-statistics@presenter-1:/var/lib/dsc-statistics/data/moraal-dns/moraal-dns1
* * * * * Debian-dsc-statistics /usr/share/dsc-statistics-collector/upload-rsync default \
  present-2 Debian-dsc-statistics@presenter-2:/var/lib/dsc-statistics/data/moraal-dns/moraal-dns1
...

/usr/share/dsc-statistics-collector/upload-rsync skripti argumendid

  • default - lokaalse /var/lib/dsc-statistics kataloogi aluse alamkataloogi nimi
  • present-1 - lokaalse /var/lib/dsc-statistics/default/upload kataloogi aluse alamkataloogi nimi
  • /var/lib/dsc-statistics/data/moraal-dns/moraal-dns1 - presenteerija arvuti kataloog, moraal-dns/moraal-dns1 on nn 'server/node'

Kusjuures upload-rsync skriptis tuleb teha sellised muudatused

# diff /usr/share/dsc-statistics-collector/upload-rsync-orig /usr/share/dsc-statistics-collector/upload-rsync
8c8,9
< PREFIX=/usr/local/dsc
---
> # PREFIX=/usr/local/dsc
> PREFIX=/var/lib/dsc-statistics
28c29,30
< cd $PREFIX/run/$NODE/upload/$DEST
---
> # cd $PREFIX/run/$NODE/upload/$DEST
> cd $PREFIX/$NODE/upload/$DEST

Kasulikud lisamaterjalid

  • # zless /usr/share/doc/dsc-statistics-collector/examples/dsc.cfg.gz

Presenteerija seadistamine ja kasutamine

Presenteerija tööks on vajalik CGI võimeline Apache veebiserver, lisaks apache paigaldamisele tuleb öelda

# a2enmod cgi
# systemctl restart apache2

Seejärel peab olema näha mingit pilti aadressil http://10.103.9.47/cgi-bin/dsc-statistics/dsc-grapher. Presenteerija tööd juhib seadistusfail

# cat /etc/dsc-statistics/dsc-grapher.cfg
..
timezone Europe/Tallinn
...

kus

  • TODO

Andmete kopeerimine kollektorist presenteerijasse

# chown Debian-dsc-statistics:Debian-dsc-statistics /var/lib/dsc-statistics
# su - Debian-dsc-statistics
$ mkdir /var/lib/dsc-statistics/data/moraal-dns/moraal-dns1
$ mkdir /var/lib/dsc-statistics/data/moraal-dns/moraal-dns2

Cron tööd teisendavad xml faile dsc-grapher cgi skripti jaoks sobivamale kujule ning kustutavad vanu xml faile

# cat /etc/cron.d/dsc-statistics-presenter 
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * Debian-dsc-statistics /usr/share/dsc-statistics-presenter/refile-and-grok
* * * * * Debian-dsc-statistics find /var/lib/dsc-statistics/data -type f -name \*xml | \
 /usr/share/dsc-statistics-presenter/remove-xmls 10

Veebiliides paistab välja selline

Dsc-1.gif

kus

  • TODO

DSC kollektori kasutamine OpenBSD keskkonnas

Esmalt tuleb paigaldada paketid

# pkg_add p5-Proc-PID-File
# pkg_add libbind

ning tekitada kasutaja

# groupadd dsc
# useradd -d /opt/dsc -m -g dsc dsc

DSC kolletori tuleb 2015 aasta talve lõpus OpenBSD v. 5.8 keskkonnas kompileerida. Peale lähteteksti https://www.dns-oarc.net/dsc/download lahti pakkimist tuleb teha kolmes failis muudatused nii nagu head inimesed õpetavad aadressil https://marc.info/?l=openbsd-misc&m=145639747111075&w=2

# cd collector
# diff Makefile-orig Makefile                                                           
2c2
<       (cd dsc; test -s Makefile || ./configure ; $(MAKE) $@)
---
>       (cd dsc; test -s Makefile || ./configure CFLAGS="-I/usr/local/include/bind" LDFLAGS="-L/usr/local/lib/libbind"; $(MAKE) $@)
# diff dsc/inX_addr.c-orig dsc/inX_addr.c 
6c6
< #include <arpa/inet.h>
---
> #include "/usr/include/arpa/inet.h"
# diff dsc/query_classification_index.c-orig  dsc/query_classification_index.c          
6a7
> #include "/usr/include/arpa/inet.h"

ning öelda

# make

Tulemusena tekib fail

dsc

Programmide ja seadistusfailide paigutamine mõistlikumatesse kohtadesse

# mkdir -p /usr/local/dsc/{bin,etc} /var/dsc/run/default/upload/{presenter_1,presenter_2}
# cp dsc/dsc /usr/local/dsc/bin
# cp cron/upload-prep.pl cron/upload-rsync.sh /usr/local/dsc/bin
# chmod 0755 /usr/local/dsc/bin/upload-prep.pl /usr/local/dsc/bin/upload-rsync.sh
# cp dsc/dsc.conf.sample /usr/local/dsc/etc/dsc.conf
# chown dsc /var/dsc/run/default /var/dsc/run/default/upload/{presenter_1,presenter_2}

Seadistusfaili alguses sobib kasutada midagi sellist

# egrep -v "^#|^$" /usr/local/dsc/etc/dsc.conf                                                                                       
local_address 10.204.62.113;
run_dir "/var/dsc/run/default";
minfree_bytes 5000000;
pid_file "/var/run/dsc.pid";
bpf_program "port 53";
interface vlan112;
dataset qtype dns All:null Qtype:qtype queries-only;
...

Käivitamiseks sobib öelda, mõne minuti pärast hakkab ilmuma kataloogi /var/dsc/run/data .xml faile

# /usr/local/dsc/bin/dsc -f /usr/local/dsc/etc/dsc.conf

Andmete paigutamiseks kopeerimise lähtekataloogidesse tuleb öelda

# su - dsc
$ /usr/local/dsc/bin/upload-prep.pl

Ja parem cron tööna

# crontab -l -u dsc | tail -n 1
*       *       *       *       *       /usr/local/dsc/bin/upload-prep.pl

Tulemusena tekivad failid

# find /var/dsc/run/ -ls             
883457    4 drwxr-xr-x    3 root     wheel         512 Feb 27 00:41 /var/dsc/run/
883461    4 drwxr-xr-x    3 root     wheel         512 Feb 27 00:48 /var/dsc/run/default
883459    4 drwxr-xr-x    4 root     wheel         512 Feb 27 00:43 /var/dsc/run/default/upload
883460    4 drwxr-xr-x    3 root     wheel         512 Feb 27 00:43 /var/dsc/run/default/upload/presenter_1
883463    4 drwxr-xr-x    2 root     wheel         512 Feb 27 00:48 /var/dsc/run/default/upload/presenter_1/2016-02-26
883458   24 -rw-rw-r--    2 root     wheel       11584 Feb 27 00:43 /var/dsc/run/default/upload/presenter_1/2016-02-26/1456526580.dscdata.xml
883465   32 -rw-rw-r--    2 root     wheel       14950 Feb 27 00:44 /var/dsc/run/default/upload/presenter_1/2016-02-26/1456526640.dscdata.xml
883466   20 -rw-rw-r--    2 root     wheel        9143 Feb 27 00:45 /var/dsc/run/default/upload/presenter_1/2016-02-26/1456526700.dscdata.xml
..
883462    4 drwxr-xr-x    3 root     wheel         512 Feb 27 00:43 /var/dsc/run/default/upload/presenter_2
883464    4 drwxr-xr-x    2 root     wheel         512 Feb 27 00:48 /var/dsc/run/default/upload/presenter_2/2016-02-26
883458   24 -rw-rw-r--    2 root     wheel       11584 Feb 27 00:43 /var/dsc/run/default/upload/presenter_2/2016-02-26/1456526580.dscdata.xml
883465   32 -rw-rw-r--    2 root     wheel       14950 Feb 27 00:44 /var/dsc/run/default/upload/presenter_2/2016-02-26/1456526640.dscdata.xml
883466   20 -rw-rw-r--    2 root     wheel        9143 Feb 27 00:45 /var/dsc/run/default/upload/presenter_2/2016-02-26/1456526700.dscdata.xml
883467   24 -rw-rw-r--    2 root     wheel       10286 Feb 27 00:46 /var/dsc/run/default/upload/presenter_2/2016-02-26/1456526760.dscdata.xml
...
883470   20 -rw-rw-r--    1 root     wheel        9646 Feb 27 00:49 /var/dsc/run/default/1456526940.dscdata.xml

Andmete kopeerimine presenteerijasse, käsitsi prooviks

# rsync -avH /var/dsc/run/default/upload/presenter/ Debian-dsc-statistics@10.0.9.47:/var/lib/dsc-statistics/data/server-moraal-dns/node-tm/incoming/

ning cron tööna (skript kustutab lokaalselt ära kopeeritud failid ning paneb dst kataloogi lõppu ise 'incoming')

*/5     *       *       *       *       /usr/local/dsc/bin/upload-rsync.sh default presenter_1 \
  Debian-dsc-statistics@10.0.9.47:/var/lib/dsc-statistics/data/server-moraal-dns/node-tm

dsc deemoni juhtimiseks sobib kasutada sellist käivitusskripti

TODO

Kasulikud lisamaterjalid