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.