{"id":1772,"date":"2015-04-13T11:38:07","date_gmt":"2015-04-13T09:38:07","guid":{"rendered":"http:\/\/blog.sfsoft.it\/?p=1772"},"modified":"2016-01-28T17:24:53","modified_gmt":"2016-01-28T15:24:53","slug":"monitorare-il-traffico-di-rete-con-pmacct-su-ubuntu-aggiornamento-2","status":"publish","type":"post","link":"http:\/\/www.sfsoft.it\/blog\/2015\/04\/13\/monitorare-il-traffico-di-rete-con-pmacct-su-ubuntu-aggiornamento-2\/","title":{"rendered":"Monitorare il traffico di rete con pmacct su Ubuntu (aggiornamento 2)"},"content":{"rendered":"<p>Aggiornamento degli articoli <a title=\"Monitorare il traffico di rete con pmacct su Ubuntu\" href=\"http:\/\/blog.sfsoft.it\/2011\/03\/18\/monitorare-il-traffico-di-rete-con-pmacct-su-ubuntu\/\">Monitorare il traffico di rete con pmacct su Ubuntu<\/a> e\u00a0<a title=\"Monitorare il traffico di rete con pmacct su Ubuntu (aggiornamento)\" href=\"http:\/\/blog.sfsoft.it\/2014\/10\/01\/monitorare-il-traffico-di-rete-con-pmacct-su-ubuntu-aggiornamento\/\" target=\"_blank\">Monitorare il traffico di rete con pmacct su Ubuntu (aggiornamento)<\/a> procedendo all&#8217;installazione da sorgenti ed utlizzando la versione 9 della tabella.<\/p>\n<hr \/>\n<p>Di <a href=\"http:\/\/www.ubuntugeek.com\/bandwidth-monitoring-tools-for-linux.html\" target=\"_blank\">sistemi per il monitoraggio della rete<\/a> ce ne sono molti ma alla fine ho optato per il programma che si chiama <em>pmacct<\/em> che descritto molto grezzamente si tratta di uno sniffer di rete che registra il traffico su <em>MySQL<\/em> o <em>PostgreSQL<\/em> o <em>SQLite<\/em>.<\/p>\n<p>Innanzi tutto si procede all&#8217;installazione di <em>MySQL<\/em> se ancora manca ( o <em>PostgreSQL<\/em> o <em>SQLlite<\/em> ):<\/p>\n<pre class=\"lang:default decode:true\">sudo apt-get install mysql-server<\/pre>\n<p>Ora non sto a riprendere la configurazione di <em>MySQL<\/em> in quanto in rete c&#8217;\u00e8 abbastanza documentazione in merito.<\/p>\n<p>Per avere le ultime versioni occorre installare da sorgenti, per\u00f2 per avere la comodit\u00e0 dei pacchetti <em>.deb<\/em> si pu\u00f2 utilizzare il programma <em>checkinstall<\/em> per creare un installazione personalizzata:<\/p>\n<pre class=\"lang:default decode:true\">sudo apt-get install build-essential checkinstall<\/pre>\n<p>Le dipendenze richieste per la compilazione:<\/p>\n<pre class=\"lang:default decode:true\">sudo apt-get install libpcap0.8-dev libmysqlclient-dev<\/pre>\n<p>Si scarica dal sito l&#8217;ultima versione e si estrae l&#8217;archivio, ad esempio:<\/p>\n<pre class=\"lang:default decode:true\">wget http:\/\/www.pmacct.net\/pmacct-1.5.1.tar.gz\r\ntar xzvf pmacct-1.5.1.tar.gz\r\ncd pmacct-1.5.1<\/pre>\n<p>Si procede alla preparazione dei sorgenti, ricordandosi di abilitare il plugin che ci interessa ( nel mio caso uso <em>MySQL<\/em> ) e infine richiamando <em>chackinstall<\/em> al posto di <em>makeinstall<\/em> verr\u00e0 creato prima il pacchetto <em>.deb<\/em> ed inseguito installato tramite <em>dpkg<\/em>:<\/p>\n<pre class=\"lang:default decode:true\">sudo .\/configure --enable-mysql\r\nsudo make\r\nsudo checkinstall<\/pre>\n<p>Copiare a mano i file di esempio:<\/p>\n<pre class=\"lang:default decode:true \">sudo cp -R sql\/ \/usr\/share\/doc\/pmacct\/<\/pre>\n<p>E&#8217; possibile ora cancellare i sorgenti in quanto se volessimo disinstallarlo essendo stato pacchettizzato <em>.deb<\/em> basta usare <em>dpkg -r<\/em><\/p>\n<p>Controllare per sicurezza che nel file <em>\/etc\/init.d\/pmacct<\/em> ci sia il percorso giusto al demone, per controllarne l&#8217;ubicazione si richiama:<\/p>\n<pre class=\"lang:default decode:true\">whereis pmacctd<\/pre>\n<p>Se il processo \u00e8 avviato stoppare il demone per configurarlo:<\/p>\n<pre class=\"lang:default decode:true\">sudo service pmacct stop<\/pre>\n<p>Creare il database con la tabella versione 9 che al momento in cui scrivo \u00e8 l&#8217;ultima, se no basta cambiare il numero:<\/p>\n<pre class=\"lang:default decode:true\">mysql -h host -u root -p &lt; \/usr\/share\/doc\/pmacct\/sql\/pmacct-create-db_v9.mysql<\/pre>\n<p>Impostare i permessi di default ( utente <em>pmacct@localhost <\/em> ):<\/p>\n<pre class=\"lang:default decode:true\">mysql -h host -u root -p &lt; \/usr\/share\/doc\/pmacct\/sql\/pmacct-grant-db.mysql<\/pre>\n<p>Cambiare la password:<\/p>\n<pre class=\"lang:default decode:true\">mysql -h host -u root -p<\/pre>\n<pre class=\"lang:default decode:true \">USE pmacct;\r\nUPDATE mysql.user SET Password=PASSWORD('nuova-password') WHERE User='pmacct';\r\nFLUSH PRIVILEGES;<\/pre>\n<p>Configurare il programma:<\/p>\n<pre class=\"lang:default decode:true\">sudo nano \/etc\/pmacct\/pmacct.conf<\/pre>\n<p>Un esempio di configurazione:<\/p>\n<pre class=\"lang:default decode:true \">! pmacctd configuration\r\n!\r\n!\r\n!\r\ndaemonize: true\r\npidfile: \/var\/run\/pmacctd.pid\r\nsyslog: daemon\r\n!\r\n! interested in in and outbound traffic\r\naggregate: src_host,dst_host,src_port,dst_port\r\n! on this network\r\npcap_filter: net 192.168.1.0\/24\r\n! on this interface\r\ninterface: eth0\r\n!\r\n! storage methods\r\nplugins: mysql\r\nsql_host: localhost\r\nsql_user: pmacct\r\nsql_passwd: nuova-password\r\nsql_db: pmacct\r\nsql_table: pmacct\r\nsql_table_version: 9\r\n!\r\n! refresh the db every 5 minutes\r\nsql_refresh_time: 300\r\n! reduce the size of the insert\/update clause\r\nsql_optimize_clauses: true\r\n! accumulate values in each row for up to 5 minutes\r\nsql_history: 5m\r\n! create new rows on the minute, hour, day boundaries\r\n!sql_history_roundoff: mhd\r\nsql_history_roundoff: m\r\n! in case of emergency, log to this file\r\n!sql_recovery_logfile: \/var\/lib\/pmacct\/recovery_log\r\n! try to use only INSERT\r\nsql_dont_try_update: true<\/pre>\n<p>Avviare il demone e controllare sul nostro database i record che vengono inseriti:<\/p>\n<pre class=\"lang:default decode:true\">sudo service pmacct start<\/pre>\n<p><strong>Nota<\/strong>: ho notato che su reti diciamo discrete la mole di dati generata influisce notevolmente sulle prestazioni richieste dal server <em>MySQL<\/em>, ogni tanto \u00e8 cosigliato spostare i dati storici su una copia della tabella meglio ancora su un altro <em>database<\/em>\/<em>host<\/em>.<\/p>\n<p><strong>Nota 2<\/strong>: se il traffico \u00e8 elevato e si usa il raggruppamento \u00e8 possibile che venga richiesto un server <em>MySQL<\/em> con alte prestazioni di <em>CPU<\/em> e di <em>I\/O<\/em> su disco in quanto le istruzioni di <em>UPDATE<\/em> sono molte, in tal caso ridurre il periodo di raggruppamento ( es. da 30m a 5m ) e usare l&#8217;istruzione &#8220;<em>sql_dont_try_update: true<\/em>&#8221; che usa la memoria per limitare al massimo le istruzioni di <em>UPDATE<\/em>, appoggiandosi a versioni <em>InnoDB<\/em> invece che <em>MyISAM<\/em> delle tabelle.<\/p>\n<p><strong>Nota 3<\/strong>: Nel caso servisse recuperare i dati dal file di recupero ( <em>recovery_log<\/em> ) utilizzare il comando <em>pmmplay<\/em>:<\/p>\n<pre class=\"lang:default decode:true\">pmmplay -d -f \/var\/lib\/pmacct\/recovery_log -U &lt;utentemysql&gt; -P &lt;passwordmysql&gt;<\/pre>\n<p>Se serve solo testare cosa c&#8217;\u00e8 nel file senza fare modifiche al database aggiungere il parametro <em>-t<\/em>.<\/p>\n<p>Sul <a href=\"http:\/\/wiki.pmacct.net\/\" target=\"_blank\">wiki ufficiale<\/a> per\u00f2 sconsigliano di utilizzare il file di recupero dicendo che sar\u00e0 dismesso ma di urilizzare eventualmente un DB di backup:<\/p>\n<blockquote><p>While planning for a recovery method, consider that the logfile method is being discontinued and you are encouraged to use the backup DB option.<\/p><\/blockquote>\n<p><strong>Nota 4<\/strong>: Nel caso si utilizzi un server <em>MySQL<\/em> esterno controllare che le due macchine abbiano lo stesso <em>timezone<\/em> tramite il comando <em>date<\/em>, in caso siano diversi occorre riconfigurarlo per impostarlo uguale, riavviare anche <em>MySQL<\/em> dopo:<\/p>\n<pre class=\"lang:default decode:true\">sudo dpkg-reconfigure tzdata\r\nsudo service mysql restart<\/pre>\n<p><strong>Nota 5<\/strong>: Nel caso servisse controllare eventuali errori fare riferimento al <em>syslog<\/em>:<\/p>\n<pre class=\"lang:default decode:true \"># Gli ultimi log\r\nsudo tail \/var\/log\/syslog\r\n\r\n# Monitor realtime dei log (uscire con CTRL+C)\r\nsudo tail \/var\/log\/syslog -f<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aggiornamento degli articoli Monitorare il traffico di rete con pmacct su Ubuntu e\u00a0Monitorare il traffico di rete con pmacct su Ubuntu (aggiornamento) procedendo all&#8217;installazione da sorgenti ed utlizzando la versione 9 della tabella. Di sistemi per il monitoraggio della rete ce ne sono molti ma alla fine ho optato per il programma che si chiama [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,3,23],"tags":[16,8,205,20,5],"_links":{"self":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1772"}],"collection":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/comments?post=1772"}],"version-history":[{"count":6,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1772\/revisions"}],"predecessor-version":[{"id":1778,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1772\/revisions\/1778"}],"wp:attachment":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/media?parent=1772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/categories?post=1772"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/tags?post=1772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}