Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3026 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  Rsyslog et Elasticsearch

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Rsyslog et Elasticsearch

n°1383866
butler
Posté le 27-11-2015 à 15:57:22  profilanswer
 

Bonjour,
Je met actuellement en place l'ensemble rsyslogd / elasticsearch / kibana 4
Pour le parsing des données entre rsyslog et Elastic, j'utilise le module rsyslog omelasticsearch et non logstash comme c'est souvent l'usage (meilleur perf)
 
Je rencontre des problèmes lors du pasing des données depuis rsyslog, les valeurs issues depuis de mes ruleset ne sont pas intégrées correctement au template, et je ne trouve pas d'ou vient le problème
 
Voici ma conf :
 
Conf rsyslog.conf

Code :
  1. module(load="mmnormalize" )
  2. module(load="omelasticsearch" )
  3. module(load="imudp" ) # needs to be done just once
  4. module(load="imtcp" MaxSessions="500" )
  5. template(name="RemoteHost" type="string" string="/var/log/syslog" )
  6. # REMOTE RULES
  7. ruleset(name="remote" ) {
  8.     $IncludeConfig /etc/rsyslog.d/*.remote
  9.     action(type="omfile" DynaFile="RemoteHost" )
  10. }
  11. input(type="imudp" port="514" ruleset="remote" )
  12. input(type="imtcp" port="514" ruleset="remote" )


 
/etc/rsyslog.d/10-webservers.remote
 

Code :
  1. if $programname == 'apache-access' then {
  2.               action(type="mmnormalize" userawmsg="off" rulebase="/etc/rsyslog.d/apacheaccess.rule" )
  3.               action(type="omfile" DynaFile="WebFiles" template="logstash-accesslog" DirCreateMode="0755" FileCreateMode="0644" )
  4.               action(type="omelasticsearch"
  5.                         server="localhost"
  6.                         serverport="9200"
  7.                         template="logstash-accesslog"
  8.                         searchIndex="logstash-index"
  9.                         dynSearchIndex="on"
  10.                         searchType="logstash-index"
  11.                         bulkmode="on"
  12.                         queue.type="linkedlist"
  13.                         queue.size="5000"
  14.                         queue.dequeuebatchsize="300"
  15.                         action.resumeretrycount="-1"
  16.                         errorFile="/var/log/rsyslog.es-error.log" )
  17. stop
  18. }


 
/etc/rsyslog.d/apacheaccess.rule
 

Code :
  1. version=2
  2. prefix=%rcvdat:date-rfc3164% %rcvdfrom:word%
  3. rule=: %tag:word% %ip:word% - %identd:word% [%timestamp:char-to:]%] "%method:word% %url:word% %pver:char-to:"%" %status:word% %bytesend:word% %referer:word% %useragent:quoted-string%


 
/etc/rsyslog.d/logstash.template

Code :
  1. template(name="WebFiles" type="string" string="/var/log/rsyslog/%fromhost-ip%/httpd/%$YEAR%/%$MONTH%/access_%$!vhost%-%$DAY%.log" )
  2. template(name="logstash-accesslog" type="list" option.json="on" ) {
  3.         constant(value="{" )
  4.         constant(value="\"@timestamp\":\"" )             property(name="timereported" dateFormat="rfc3339" )
  5.         constant(value="\",\"message\":\"" )             property(name="msg" position.from="2" spifno1stsp="off" )
  6.         constant(value="\",\"host\":\"" )                property(name="fromhost-ip" )
  7.         constant(value="\",\"@source_host\":\"" )        property(name="hostname" )
  8.         constant(value="\",\"tag\":\"" )                 property(name="syslogtag" )
  9.         constant(value="\",\"vhost\":\"" )               property(name="$!vhost" )
  10.         constant(value="\",\"bytes\":\"" )               property(name="$!bytesend" )
  11.         constant(value="\",\"clientip\":\"" )            property(name="$!ip" )
  12.         constant(value="\",\"method\":\"" )              property(name="$!method" )
  13.         constant(value="\",\"request\":\"" )             property(name="$!url" )
  14.         constant(value="\",\"pversion\":\"" )            property(name="$!pver" )
  15.         constant(value="\",\"referrer\":\"" )            property(name="$!referer" )
  16.         constant(value="\",\"useragent\":\"" )           property(name="$!useragent" )
  17.         constant(value="\",\"status\":\"" )              property(name="$!status" )
  18.         constant(value="\"}" )
  19. }


 
 
Exemple de Log en entrée :

Code :
  1. Nov 25 15:09:18 rp4 apache-access 192.168.102.233 - - [25/Nov/2015:15:09:18 +0100] "GET /mac/customer/ticket/tickets-data-loaded.do?clientTime=1448460559152&lastCallTime=1448460549090&_=1448460559153 HTTP/1.1" 200 2184 "http://xxxxxxxx/mac/customer/orderbill/order/line/create/flow.do?execution=e1s1" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0"


 
Le parsing est OK :

Code :
  1. head -n1 /var/log/rsyslog/apache-exemple | /usr/lib/lognorm/lognormalizer  -r /etc/rsyslog.d/apacheaccess.rule
  2. [cee@115 useragent="Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0" referer="\"http://xxxxxxxxx/mac/customer/orderbill/order/line/create/flow.do?execution=e1s1\"" bytesend="2184" status="200" pver="HTTP/1.1" url="/mac/customer/ticket/tickets-data-loaded.do?clientTime=1448460559152&lastCallTime=1448460549090&_=1448460559153" method="GET" timestamp="25/Nov/2015:15:09:18 +0100" identd="-" ip="192.168.102.233" tag="apache-access" rcvdfrom="rp4" rcvdat="Nov 25 15:09:18"]


 
Et enfin, exemple de log au format JSON en sortie de Rsyslog pour elastic donc

Code :
  1. {"@timestamp":"2015-11-27T15:49:59+01:00","message":"192.168.101.62 - - [27/Nov/2015:15:49:58 +0100] \"GET /mac/customer/ticket/tickets-data-loaded.do?clientTime=1448635799539&lastCallTime=1448635789486&_=1448635799540 HTTP/1.1\" 200 2184 \"http://xxxxxxxxx/mac/customer/home.do\" \"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0\" ","host":"193.56.56.56","@source_host":"rp4","tag":"apache-access","vhost":"","bytes":"","clientip":"","method":"","request":"","pversion":"","referrer":"","useragent":"","status":""}


 
Avec un parseur :

Code :
  1. {
  2. "@timestamp":"2015-11-27T15:49:59+01:00",
  3. "message":"192.168.101.62 - - [27/Nov/2015:15:49:58 +0100] \"GET /mac/customer/ticket/tickets-data-loaded.do?clientTime=1448635799539&lastCallTime=1448635789486&_=1448635799540 HTTP/1.1\" 200 2184 \"http://xxxxxxxx/mac/customer/home.do\" \"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0\" ",
  4. "host":"193.56.56.56",
  5. "@source_host":"rp4",
  6. "tag":"apache-access",
  7. "vhost":"",
  8. "bytes":"",
  9. "clientip":"",
  10. "method":"",
  11. "request":"",
  12. "pversion":"",
  13. "referrer":"",
  14. "useragent":"",
  15. "status":""
  16. }


 
 
Donc en ce que j'en comprends, les valeurs que je récupère sont uniquement celle disponible par défaut avec Rsyslog
http://www.rsyslog.com/doc/master/ [...] rties.html
 
Les valeurs issues de ma rule ne semblent donc pas remontées dans le template
En espérant que quelqu'un puisse m'aider

Message cité 1 fois
Message édité par butler le 27-11-2015 à 17:30:52
mood
Publicité
Posté le 27-11-2015 à 15:57:22  profilanswer
 

n°1383869
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 27-11-2015 à 16:29:32  profilanswer
 

butler a écrit :

Bonjour,
Je met un en place l'ensemble rsyslogd / elasticsearch / kibana 4 en place dans mon entreprise
Pour le parsing des données entre rsyslog et Elastic, j'utilise le module omelasticsearch et non logstash comme c'est souvent l'usage (meilleur perf)


 
[:kiki]
 
et vu la tronche des règles, la lisibilité en prend une claque aussi...
 
note que ce sont tous ceux avec un $! qui posent un pb, donc c'est surement un pb de syntaxe ou qqchose d'approchant


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Installation

  Rsyslog et Elasticsearch

 

Sujets relatifs
RSYSLOG : Reception de logs avec du retardRsyslog : la queue ne semble pas fonctionner
Rsyslog vers Mysql : parser "MESSAGE"rsyslog - CentOS
configurer rsyslog pour qu'il retransmette les logsdemander à rsyslog d'afficher l'IP source du log
Plus de sujets relatifs à : Rsyslog et Elasticsearch


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR