ELK - Dashboard pour les logs Apache
Alasta 28 Septembre 2014 bigdata Apache BigData CentOS ELK Linux Open Source
Description : Nous allons voir comment intégrer les logs de votre serveur Apache dans Kibana.
Pré-requis :
Nous partirons sur le fait que l'installation est faite avec l'article précédent.
Les différentes parties :
- La mise en place va se faire à 2 niveaux :
- Logstash
- Apache
Logstash :
input { #Ouverture en entrée d'un port d'écoute utilisant le protocol syslog tcp { port => 5544 type => syslog } udp { port => 5544 type => syslog } } filter { # Traitement type syslog, le type étant marqué sur les données entrant par nos ports de type syslog if [type] == "syslog" { grok { # Si on ne veut pas garder le message non traité overwrite => "message" match => { # rsyslong envoi des messages de type : <Numero>Ligne Syslog avec le message "message" => "^(?:<%{NONNEGINT:syslog_pri}>)?%{SYSLOGBASE2} %{GREEDYDATA:message}" "message" => "%{SYSLOG5424PRI}%{SYSLOGBASE2} %{DATA:message}" } # on ajoute des tags perso, pratique pour filtrer dans l'interface kibana add_tag => [ "syslog", "grokked" ] } } #Gestion des logs access apache dans syslog grok { # See the following URL for a complete list of named patterns # # logstash/grok ships with by default: # # https://github.com/logstash/logstash/tree/master/patterns # # # # The grok filter will use the below pattern and on successful match use # # any captured values as new fields in the event. match => { "message" => "%{SYSLOG5424PRI}%{SYSLOGBASE2} %{COMBINEDAPACHELOG}" } add_tag => [ "apache", "accesslogs" ] } } output { # on stock dans elasticsearch elasticsearch { host => "localhost" } }
service logstash restart
Apache :
<LocationMatch "^/+$"> Options -Indexes ErrorDocument 403 /error/noindex.html </LocationMatch> ProxyPass /my_elasticsearch http://127.0.0.1:9200/ ProxyPassReverse /my_elasticsearch http://127.0.0.1:9200/ LogLevel warn CustomLog "|/usr/bin/tee -a /var/log/httpd/access_log | /usr/bin/logger -t accesslog_MonVS -p local6.notice" combined
Note : Penser à modifier "MonVS" par le nom de votre VirtualHost, ce qui permettra dans les logs de différencier la source des logs.
service httpd graceful
Résultat dans Kibana :
La présentation de Kibana étant assez longue, j'ai fait un template pour les logs Apache que je vous fourni à l'URL suivante.
Rendez-vous sur votre interface de Kibana, dans le Home, icône dossier (en haut à droite), Advanced puis parcourir et sélectionner le fichier.
Voici le résultat :
Pensez Dans la partie "Query" (tout en haut de la page) de modifier le accesslog_MonVS avec le nom que vous avez positionné lors de la configuration d'Apache.