Newsgroup: it.comp.os.linux.sys
Titolo: Centralizzazione log: rsyslog o altro?

Anni fa installai rsyslog per centralizzare lo storage dei log provenienti da X server. Devo dire che funziona benone, a distanza di anni, con manutenzione pari a zero, lui ancora va.
 
Oggigiorno ci sono alternative (ad esempio greylog, logstash, ...) oppure continuereste ad usare rsyslog ?

Io uso syslog-ng e mi trovo benissimo: posso spezzare i log su file diversi, filtrarli al volo e fare altre cose interessanti.
Se hai bisogno di fare correlazione dei vari log, potresti anche pensare ad utilizzare Splunk (è gratis fino a un tot di entry giornaliere).

 Oggigiorno ci sono alternative (ad esempio greylog, logstash, ...) oppure continuereste ad usare rsyslog ?
 
 
Io continuo ad usare rsyslog che il suo lavoro lo fa alla grande.

 Oggigiorno ci sono alternative (ad esempio greylog, logstash, ...) oppure continuereste ad usare rsyslog ?
 
Ho da poco "revisionato" anch'io il sistema di logging interno dell'azienda in 
cui lavoro e sono passato da syslog-ng a rsyslog ma del resto ho mantenuto lo 
stesso approccio che avevo prima, nonostante le possibilità di programmi di 
analisi dei log siano smisuratamente aumentate!
 
Ho provato splunk ed è indubbiamente notevole (ma la versione gratuita non 
permette le notifiche in caso di eventi e accetta solo 500Mb di log/gg che non 
sono poi moltissimi in una struttura di medie dimensioni, ma considerando il 
prezzo che ci hanno sparato per la versione minima [che per altro mantiene il 
limite a 500Mb di log/die] quella gratuita và più che benissimo)!
 
Su logstash ti posso dire che è splunk "impoverito" ma del resto il suo sporco 
lavoro di debug in realtime lo fà anche lui egregiamente.
 
Ma in fin dei conti sono solo un layer in più (secondo me) oltre ad un logging 
fatto decentemente. Se non hai strutturato decentemente il logging delle varie 
apparecchiature e/o non li gestisci con altrettanta decenza un software di 
analisi è solamente una bella ciliegina rossa su una torta venuta male!
 
Tutto IMHO naturalemente.
Rizio
 
--- news://
freenews.netfront.net/
 - complaints: 
ne...@netfront.net
 ---

 Io continuo ad usare rsyslog che il suo lavoro lo fa alla grande.
 
Verissimo.
Ma quindi che "valore aggiunto" darebbero vari tools che van tanto di moda adesso (greylog ed amici vari) ?
 
Non ne capisco l'utilità.

 Ma quindi che "valore aggiunto" darebbero vari tools che van tanto di moda adesso (greylog ed amici vari) ?
 
Imho solo per debug o analisi e reportistica.
Se la guardi in un ottica pių ampia (ossi non solo sistemistica) vedrai che 
hanno il loro spazio d'utilizzo.


 hanno il loro spazio d'utilizzo.
 
Che sarebbe? E' questo che non mi è chiaro.

 moda adesso (greylog ed amici vari) ?
 
Direi indicizzazione e clustering/sharding, in generale.
 
L'interfaccia web te la danno anche altri tool da usare sopra al logging
su file e/o rdbms, ma senza almeno la prima diventa quasi inutilizzabile
dopo qualche centinaio di mega al giorno (a meno di un uso saltuario).
 
I vantaggi vengono insieme a maggiori complessità di installazione [1] e
gestione, oltre che a un maggiore uso di risorse, e potrebbe non valerne
la pena.
 
 
Fabio
 
[1] ma anche no: forse lo stack logstash+elasticsearch+kibana con il jar 
    monolitico si mette in piedi più veloce che non rsyslog+web+[rdbms].

 dopo qualche centinaio di mega al giorno (a meno di un uso saltuario).
 
Ecco, appunto.
Diciamo che io ho X server da cui remotizzo i log verso un logserver centralizzato. Attualmente uso, come da consiglio del buon Flavio eoni fa, rsyslog.
 
Funziona tutto perfettamente, ma vorrei poter implementare un qualche sistema che oltre a loggare su file permetta anche una sorta di interrogazione mediante API e, sopratutto, la suddivisione per utente.
 
Questo perchè dei suddetti X server, Y sono gestiti da Z clienti, mi piacerebbe poter fornire ai Z clienti determinate API per accedere ai propri log e farci quel che gli pare, senza che utente1 possa accedere ai log di utente2
 
Potrei farlo da me, ma sono restio (otre che pigro) a reinventare la ruota nel caso ci fosse. Pensate esista qualcosa di simile che magari usi come trasporto rsyslog? Potrei utilizzare rsyslog come traporto, che salva su un DB non relazionale (es: mongo) e poi una qualche interfaccia che permetta di gestire utenze ed api, magari associando l'utenza con l'ip del server di provenienza del log.

 Questo perchè dei suddetti X server, Y sono gestiti da Z clienti, mi piacerebbe poter fornire ai Z clienti determinate API per accedere ai propri log e farci quel che gli pare, senza che utente1 possa accedere ai log di utente2
 
Io avevo un problema simile (dovevo mettere i log di una classe di dispositivi in una directory e i log di un'altra in una directory diversa).
 
Dopo essermi sbattuto un po', ho risolto con syslog-ng.
 
Potresti fare in modo che i ogni cliente abbia una utenza sul server e loggare i dispositivi sotto la sua amministrazione nella relativa /home

 Potresti fare in modo che i ogni cliente abbia una utenza sul server e loggare i dispositivi sotto la sua amministrazione nella relativa /home
 
Gli utenti sono volatili, preferisco evitare di creare utenti reali e sopratutto devo loggare su un DB in modo che possa essere interrogabile da qualche strumento online.
 
Con mongo si riesce a fare in maniera piuttosto veloce, ma come posso splittare i log in base all'utente? Utilizzare esclusivamente l'ip della sorgente di provenienza dei log potrebbe essere limitante anche se facilmente implementabile.
 
Si presenta poi un secondo problema (non bloccante): attualmente rsyslog non permette l'utilizzo di collection dinamiche, altrimenti potevo benissimo usare una collection per ciascun utente avendo automaticamente una separazione.
Dato che non lo supporta, dovrò loggare l'intera riga anteponendo un prefisso da usare come filtro utente:
 
+-----+-------------+
| usr + riga di log |
+-----+-------------+

Gli utenti sono volatili
 
Piccioni? ;-)
 
 
-- 
Ci sono 10 tipi di persone al mondo: quelle che capiscono il sistema binario
e quelle che non lo capiscono.

 Piccioni? ;-)
 
Direi più galline.

 relazionale (es: mongo)
 
Non lo fare, se ti sono cari i tuoi avi
 
Enrico

 Non lo fare, se ti sono cari i tuoi avi
 
Non lo fare per via di:
 1. rsyslog
 2. mongodb
 3. qualunque db non relazionale
 4. una combinazione delle precedenti
 
 ?

 2. mongodb
 
lui :)
Seriamente, MongoDB lavora pesantemente con dati memory mapped, ovvero 
rischi che alla prima query (anche indicizzata) su di una collection pesante 
(e per pesante intendo grande quanto o piu` della RAM) il sistema collassi 
su se stesso[1]. Un modo per evitare il problema e` facendo sharding, ma per 
i tuoi scopi diverrebbe troppo oneroso[2]. Ti consiglio pertanto di usare 
PostgreSQL (se ti interessa mantenere i dati in JSON[3]) o MySQL
 
Enrico
[1] a noi ci e` capitato realmente su di una istanza unica di produzione, in 
cui una collection di ~13mln di record che, dumpata su file di testo, 
occupava 50Gb, ha messo in ginocchio un server con 64Gb di RAM
[2] uno shard su due nodi consigliato per ambienti di sviluppo, necessita di 
quattro istanze di MongoDB. In produzione le istanze, sempre per due nodi, 
diventano otto/nove (la nona e` un'istanza mongos aggiuntiva, non necessaria 
ma utile per il failover)
[3] Seriamente, la collection citata in [1] importata in PostgreSQL 9.3 su 
di una tabella con un solo campo JSON ed indicizzata per il campo da 
estrarre, permette estrazioni nell'ordine di mezzo secondo su di un HP 
MicroServer N54L con 2Gb di RAM ed un RAID10 che secondo hdparm non va oltre 
i 300Mb/s

 i 300Mb/s
 
Hai vinto.
Loggo su MySQL

 Che sarebbe? E' questo che non mi è chiaro.
 
Per quanto mi riguarda, l'ottica più ampia sarebbe la ricerca (sulla base 
dell'indicizzazione) quasi immediata su tutta la base dei log delle tue macchine 
(senza incroci di grep o query con sottoquery o join) riportata in maniera 
chiara e gestibile.
 
Come ti dicevo anch'io sono abituato ad avere tutti i log in file syslog ruotati 
ogni giorno, ma se devo fare delle correlazioni tra diversi eventi accaduti in 
giorni diversi mi viene più "complicato" (tra virgolette perchè in realtà 
parliamo di un grep o egrep che dir si voglia). Ma soprattutto alle correlazioni 
dei diversi eventi ci devo arrivare con un'intuizione, prodotti come logstash o 
splunk ti danno già una visione d'insieme di tutti i tuoi dati, l'eventuale 
correlazione è pressochè automatica.
E questo è utile quando ci sono problemi di cui non trovi l'origine, soprattutto 
per chi come te gestisce dei servizi multiutente (Es. Splunk avrebbe già 
l'interfaccia multiutente e web, significa che con i dovuti setup avresti già la 
cosa pronta da dare ai tuoi clienti).
 
Il modo di presentarti i log di questi prodotti è molto più adattabile e 
ordinato di tanti altri sistemi e questo contribuisce ad un'osservazione più 
attenta e analitica.
 
Io la vedo così.


 attenta e analitica.
 
E' ciò che vorrei fare io ma, ma i vari tool visti richiedono tutti java e chili di altre schifezze.
 
Da qualche che ho capito, fanno da trasporto verso elasticsearch, nulla di più.

 Da qualche che ho capito, fanno da trasporto verso elasticsearch, nulla di piů.
 
Si, č quello che ho capito anch'io. Perň il motore di presentazione ha la sua 
importanza in questo caso, e molta imho.


 importanza in questo caso, e molta imho.
 
Alternative non Java ?
Sono certo di averle viste, ma come sempre accade, quando si cerca una cosa, non la si trova mai, poi appena si smette di cercarla, salta fuori in maniera quasi invadente.
 
Ho la certezza matematica di aver visto un qualcosa di simile, ma non ricordo il nome.

 Alternative non Java ?
 
Purtroppo non le conosco. Nel mio caso il problema java non sussiste.
Ho dato una goglata al volo e ho trovato questi due link, prova ad approfondirli 
meglio se magari hanno senso per te (cosa che non faccio per mancanza di tempo):
 
http://blog.algolia.com/full-text-search-in-your-database-algolia-versus-elasticsearch/#UnderTheHood
 
 
https://groups.google.com/forum/#!topic/logstash-users/chs-dEQbgtA
 
 
Buona giornata


 
https://groups.google.com/forum/#!topic/logstash-users/chs-dEQbgtA
 
 
Sono entrambi in Java
 
C'è questo:
http://fluentd.org/
 
che è scritto in Ruby, ma è un trasporto. Potrebbe comunque tornarmi utile per gestire le metriche dai vari webserver come ad esempio le richieste/secondo senza magari dover trasportare tutto l'access log

 ai log di utente2
 
Graylog2 implementa un layer di autenticazione e autorizzazione. E'
un po' acerbo, ma lo stanno migliorando e quello che ti serve lo fa
già, se ho ben capito la tua esigenza (ti consente di vincolare gli 
stream agli utenti, almeno, e forse adesso anche qualcosa di più). 
 
ElasticSearch non è poi quella brutta bestia che sembra, e le nuove
release di graylog2 lo usano decentemente. ... e poi la RAM oggi ti
costa pochissimo :-)
 
 
Fabio

 Loggo su MySQL
 
Scusa, ma ti ha appena detto (e citi) una cosa figa che puoi fare solo con 
postgresql e dici che lo farai... con MySQL? :-)
 
Valuta bene se usare un rdbms per archiviare log. E chiediti perchè non lo
faccia nessuno che si prefigga di scalare oltre un certo volume di dati.
 
 
Fabio
 

 faccia nessuno che si prefigga di scalare oltre un certo volume di dati.
 
Ecco perchè parlai di mongo al posto di un db relazionale.
Considera che nel mio caso su db non ci saranno i log di tutta l'eternità ma sarà applicata una policy di retention, magari rendo disponibili solo gli ultimi 30 giorni o cose simili, poi dump su file ed archivio.
 
In tanti anni non mi è mai capitato di dover andare a ritroso più di una manciata di settimane.

 faccia nessuno che si prefigga di scalare oltre un certo volume di dati.
 
Hint: datawarehouse :)
 
Tra l'altro, da questo punto di vista MySQL e` piu` avvantaggiato rispetto a 
PostgreSQL in quanto supporta direttamente il partizionamento della tabella, 
anche puo` emularlo egregiamente (c'e` un capitolo apposito nella 
documentazione)
 
Enrico

 Alternative non Java ?
 
Qual e` il problema ad usare software scritto in Java?
 
Enrico

 Oggigiorno ci sono alternative
 
Mi ci sono imbattuto oggi ma non l'ho provato... maybe worth testing
# apt-cache show nxlog-ce
 
http://nxlog.org/
 
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 
http://nxlog.org/
 
 
Interesting!!! Thank's


 Qual e` il problema ad usare software scritto in Java?
 
Odio Java, non voglio portarmi dietro tonnellate di codice, installare una JVM e cagate varie per far girare una interfaccia web.

 
http://nxlog.org/
 
 
Ma è l'ennesimo trasportatore di log.
A me serve lato ricezione, con annessa interfaccia web altrimenti me la faccio da per me.

 Odio Java, non voglio portarmi dietro tonnellate di codice, installare una JVM e cagate varie per far girare una interfaccia web.
 
Quotone
 
saluti compilati
-- 
Dignità e moneta:
http://dottormistero.blogspot.it/2013/04/dignita-e-moneta.html
 

 documentazione)
 
Tanti PostgreSQListi ammettono che MySQL sia più OLAPpico.
 
 
Fabio


e cosa cambia da un qualsiasi altro linguaggio interpretato?
 
Ciao Jack
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?

 Odio Java
 
Allora hai un grosso problema
 
Enrico
P.S. Java non serve che lo installi, eh

 e cosa cambia da un qualsiasi altro linguaggio interpretato?
 
La dimensione delle schifezze che ti devi portare dietro.
PHP lo usi semplicemente con Apache + PHP.
Java devi installare un camion di schifezze, tra cui tomcat o cagate varie

 Java devi installare un camion di schifezze, tra cui tomcat o cagate varie
 
veramente no. java per andare ha bisogno della vm e basta. Tomcat lo usi
per la roba servlet, ma per far funzionare dei programmi java standalone
non e' necessario.


 Tanti PostgreSQListi ammettono che MySQL sia più OLAPpico.
 
Piu` che altro MySQL ha alcune funzioni prettamente da datawarehouse 
rispetto a PostgreSQL, ma questo e` vero fino ad un certo punto. Per dire, 
PostgreSQL ha un bel po' di funzioni analitiche, ed oltre ad emulare in modo 
eccellente le tabelle partizionate, nella 9.3 sono state aggiunte le viste 
materializzate, e di novita` in arrivo ce ne sono ( 
http://wiki.postgresql.org/wiki/Todo
 )
 
Enrico