Je suis un débutant ici. Mon propre problème est de configurer FileBeat et Logstash pour ajouter des fichiers XML dans Elasticsearch sur CentOS 7. J'ai déjà installé la dernière version de filebeat, logstash, elasticsearch et Kibana, avec le plug-in "elasticsearch-head" en standalone pour voir à l'intérieur de elasticsearch. Et pour tester mon installation, je l'ai ajouter avec succès simple fichier journal du système CentOS (/ var/log/messages), et de voir à l'intérieur ElasticSearch-tête (index 6 et 26 tessons) plug-in: This is a viex of my elasticsearch-head plug-inComment configurer FileBeat et Logstash pour ajouter des fichiers XML dans Elasticsearch?
Et maintenant, l'étape suivante consiste à ajouter un journal à partir du fichier XML. Après avoir lu la documentation, j'ai configuré filebeat et logstash. Tous les services sont en cours d'exécution, et j'essaie la commande "touch /mes/AddOf.xml" pour essayer d'activer un événement filebeat, et transférer le journal à logstash (AddOf.xml est mon fichier journal).
Ma structure de données XML est comme ceci pour un événement de journal:
<log4j:event logger="ServiceLogger" timestamp="1494973209812" level="INFO" thread="QueueWorker_1_38a0fec5-7c7f-46f5-a87a-9134fff1b493">
<log4j:message>Traitement du fichier \\ifs-app-01\Interfaces_MES\AddOf\ITF_MES_01_01_d2bef200-3a85-11e7-1ab5-9a50967946c3.xml</log4j:message>
<log4j:properties>
<log4j:data name="log4net:HostName" value="MES-01" />
<log4j:data name="log4jmachinename" value="MES-01" />
<log4j:data name="log4net:Identity" value="" />
<log4j:data name="log4net:UserName" value="SOFRADIR\svc_mes_sf" />
<log4j:data name="LogName" value="UpdateOperationOf" />
<log4j:data name="log4japp" value="MES_SynchroService.exe" />
</log4j:properties>
<log4j:locationInfo class="MES_SynchroService.Core.FileManager" method="TraiteFichier" file="C:\src\MES_PROD\MES_SynchroService\Core\FileManager.cs" line="47" />
</log4j:event>
Ma configuration filebeat comme celui-ci (/etc/filebeat/filebeat.yml):
filebeat.prospectors:
# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.
- input_type: log
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /mes/*.xml
document_type: message
### Multiline options
# Mutiline can be used for log messages spanning multiple lines. This is common
# for Java Stack Traces or C-Line Continuation
# The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
multiline.pattern: ^<log4j:event
# Defines if the pattern set under pattern should be negated or not. Default is false.
multiline.negate: true
# Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
# that was (not) matched before or after or as long as a pattern is not matched based on negate.
# Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
multiline.match: after
#================================ Outputs =====================================
# Configure what outputs to use when sending the data collected by the beat.
# Multiple outputs may be used.
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
# Optional SSL. By default is off.
# List of root certificates for HTTPS server verifications
ssl.certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]
# Certificate for SSL client authentication
#ssl.certificate: "/etc/pki/client/cert.pem"
# Client Certificate Key
#ssl.key: "/etc/pki/client/cert.key"
Ma configuration d'entrée de logstash (/etc/logstash/conf.d/01-beats-input.conf):
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
Mon filtre logstash configuratio n (/etc/logstash/conf.d/01-beats-filter.conf):
filter
{
xml
{
source => "message"
xpath =>
[
"/log4j:event/log4j:message/text()", "messageMES"
]
store_xml => true
target => "doc"
}
}
Ma configuration de sortie logstash (de /etc/logstash/conf.d/01-beats-output.conf):
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "mes_log"
document_type => "%{[@metadata][type]}"
}
}
Mais lorsque je tente la commande « toucher /mes/AddOf.xml », ou ajouter manuellement un journal des événements dans AddOf.xml, je ne vois pas un nouvel index avec journal des événements de fichier XML dans ElasticSearch .
J'ai vu la documentation pour le plugin XML pour logstash (here), mais je ne sais pas si j'ai besoin d'installer quelque chose? Ou peut-être que je ne fais pas la bonne chose pour que filebeat envoie les logs à logstash? Je suis très impliqué et motivé pour apprendre la pile ELK. Merci d'avance pour votre expertise et votre aide. Je vous serais reconnaissant ! :)
Avez-vous vérifié le journal de chaque système au cours de votre processus? Si vous ne voyez rien sur ES, c'est peut-être juste un problème pour relier logstash à ES. Avez-vous besoin d'une authentification? Essayez de vérifier les paramètres 'user',' password', 'ssl' et' cacert', au cas où vous en auriez besoin (dans votre dernier extrait). Vous pouvez vérifier si vos données viennent à logstash en imprimant les résultats directement au shell: si elles apparaissent, le problème est avec le lien. juste utiliser comme sortie 'output {stdout {codec => rubydebug}}' –
Salut. Je n'ai pas le certificat SSL finalement je n'en ai pas besoin. Je n'utilise pas d'utilisateur ou de mot de passe pour ES. C'était un problème de filtre avec l'espace de noms xml. Mais ce n'est pas totalement résolu (voir les messages sous celui-ci). – benjamin38600