Réel: les journaux collectés filebeat à Redis puis par décharge logstash hôte ElasticSearch
Figure cadre:
Préparation de l'environnement:
Un hôte: ElasticSearch / Kibana Adresse IP: 192.168.7.100
B Hôte: Adresse IP logstash: 192.168.7.102
C Hôte: filebeat / nginx Adresse IP: 192.168.7.103
D Hôte: Redis Adresse IP: 192.168.7.104
1, filebeat logs nginx au système de collecte et d'accueil Redis
1.1, installez Redis service et modifier la configuration
1, Redis service d'installation
# Yum install -y Redis
2, Redis fichiers de configuration Modify, modify écouter adresse et mot de passe
[root @ web1 ~] # vim /etc/redis.conf bind 0.0.0.0 requirepasswd 123456
3, démarrer le service Redis
# systemctl début Redis
1.2, modifier la configuration hôte filebeat, pour garder les journaux sur le serveur Redis
1, profils d'hôte filebeat modifiés, identifiez-vous stockés sur le serveur Redis
[Root @ filebate tmp] # vim /etc/filebeat/filebeat.yml filebeat.inputs: - du type: journal Activé: à vrai chemins: - / var / log / messages champs: Host: "192.168.7.103" du type: « filebeat- 7-103-syslog " App:" syslog " - du type: log Activé: à vrai chemins: - /var/log/nginx/access.log domaines: hôte:" 192.168.7.103 " du type:" filebeat-nginx-accesslog-7 -103 " App:" nginx " output.redis: hôtes: [" 192.168.7.104 "] # écrire Redis adresse IP du serveur hôte Port: 6379 # Redis écoute numéro de port mot de passe:" 123456 "# Redis mot de passe clé:"filebeat-log-7-103 « # clé personnalisée db: 0 # sélectionner la base de données par défaut délai d'attente: 5 # délai long, vous pouvez modifier un autre point
2, vue sur filebeat d'information critiques
[root @ filebate tmp] # grep -v "#" /etc/filebeat/filebeat.yml | grep "^ $" les filebeat.inputs: - Type: journal permis: true chemins: - / var / log / messages champs: host: "192.168.7.103" Type: "filebeat-syslog-7-103" app: " syslog » - Type: journal activé: true chemins: - /var/log/nginx/access.log champs: accueil: "" 192.168.7.103 Type: "filebeat-nginx-accesslog-7-103" app: "nginx" filebeat .config.modules: chemin: $ {} path.config /modules.d / * YML. reload.enabled: faux setup.template.settings: - add_host_metadata: ~ - add_cloud_metadata: ~ output.redis: hôtes: [ "192.168.7.104"] Port: 6379 Mot de passe: "123456" clé: "filebeat-log-7-103" db: 0 délai d' attente: 5
3, démarrer le service filebeat
# Systemctl restart filebeat
2, sur un Redis de données de vérification de test hôte
1, Redis connexion client pour afficher les données, vous pouvez voir la valeur de clé correspondante est atteinte, ce qui indique que les données peuvent atteindre Redis serveur.
[root @ web1 ~] # Redis-cli -h 192.168.7.104 192.168.7.104:6379> auth 123456 OK 192.168.7.104:6379> TOUCHES * 1) "filebeat-log-7-103" 192.168.7.104:6379>
3, la collecte de journaux REDIS serveur dans logstash
1, modifier les fichiers de configuration logstash, ouvrez une session de collecte Redis
[@ Logstash le conf.d la racine] # logstash à Vim-es.conf ENTRÉE { Redis { Host => "192.168.7.104" # Redis adresse IP hôte port => "6379" port # db => "0" # et la base de données correspondante filebeat password => "123456" # password data_type => "liste" # type de journal key => "filebeat-log- 7-103" # valeur clé correspondant à la filebeat CODEC => "JSON" } } sortie { IF [champs] [application] == "syslog type" app # {compatible avec l' hôte filebeat ElasticSearch { les hôtes => [ "192.168.7.100:9200"] # journal à l'ElasticSearch hôte index => « logstash-syslog -7 à 103 -% {+ aAAA.MM.JJ} " }} Application de type Même si [champs] [application] == "nginx" {# hôte et filebeat ElasticSearch { hôtes => [ "192.168.7.100:9200"] index => "logstash-nginx-accesslog-7-103 -% {+} AAAA.MM.JJ" }} }
Vérifier la grammaire comme s'il y a un problème, s'il n'y a pas de problème pour démarrer le service
[root @ logstash conf.d] # logstash -f logstash à es.conf -t AVERTISSEMENT: Impossible de trouver logstash.yml qui se trouve généralement dans $ LS_HOME / config ou / etc / logstash. Vous pouvez spécifier le chemin à l' aide --path.settings. En continuant en utilisant les paramètres par défaut Impossible de trouver la configuration log4j2 à /usr/share/logstash/config/log4j2.properties chemin. Utilisation de config par défaut qui enregistre les erreurs à la console [WARN] 16/03/2020 10: 05: 05,487 [LogStash :: Runner] multilocale - Ignorant le fichier 'pipelines.yml' parce que les modules ou les options de ligne de commande sont spécifiées Configuration OK #检查语法正确 [INFO] 16/03/2020 10: 05: 16,597 [LogStash :: Runner] runner - Utiliser le mode config.test_and_exit. Config Validation Résultat: OK. Exiting Logstash
2, redémarrez le serveur logstash
# Systemctl restart logstash
3, le nom du journal pour afficher la collection de plug-in tête, vous pouvez voir les informations extraites du journal
4. Créer un index sur la page Kibana
1, Nginx journaux pour créer un index à la page de Kibana, de la même manière le journal système peut également être créé
2, afficher les données extraites dans le journal découvrir nginx
3, vue recueillis journal système
Combat à deux: filebeat combiné logstash Redis collectés journal et vidage hôte ElasticSearch
Figure cadre:
Préparation de l'environnement:
Il n'y a pas grand-chose à tester l'hôte, vous êtes testé sous forme autonome, l'environnement de production peut être déployé par ce qui précède
Un hôte: ElasticSearch / Kibana Adresse IP: 192.168.7.100
Hôte B: logstash-Une adresse IP: 192.168.7.102
C Hôte: filebeat / nginx Adresse IP: 192.168.7.103
D Hôte: Redis Adresse IP: 192.168.7.104
E Host: logstash-B Adresse IP: 192.168.7.101
1, installer et configurer le filebeat hôte
1, le package d'installation filebeat nécessaire ici sur le package de téléchargement de site officiel
[Root @ filebeat-1 ~] # yum install filebeat-6.8.1-x86_64.rpm -y
2, modifier le fichier de configuration filebeat, log filebeat transmis à partir de l'hôte vers le premier logstash, s'il y a de multiples hôtes filebeat pluralité logstash journal de vidage, la section configuration output.logstash peuvent écrire des hôtes différents logstash adresses IP
[root @ filebate ~] # grep -v "#" /etc/filebeat/filebeat.yml | grep "^ $" les filebeat.inputs: - Type: journal permis: true chemins: - / var / log / messages champs: host: "192.168.7.103" Type: "filebeat-syslog-7-103" app: " syslog " - Type: journal activé: true chemins: - /var/log/nginx/access.log champs: hôte: "192.168.7.103" #指定本机的IP地址 Type:" filebeat-nginx-accesslog-7-103 " app: "nginx" output.logstash: hôtes: [" 192.168.7.101:5044" ] #写到指定的logstash服务器上, activé: true # si elle est adoptée au serveur logstash est activé par défaut travail: 1 # travailleur niveau_compression: 3 niveau de compression #
3, redémarrez le filebeat service
# Systemctl restart filebeat
2, l'hôte de modifier logstash-B, le journal stocké sur le serveur Redis
1, pour créer un journal stocké REDIS profil au répertoire /etc/logstash/conf.d/, s'il y a plusieurs filebeat, logstash et Redis, peuvent être stockées séparément redis journaux d'accueil, ce qui réduit la pression logstash
[@ Logstash la racine du conf.d. 1] # CAT filebeat à logstash.conf ENTRÉE { Beats { Host => "192.168.7.101" Adresse IP de l' hôte # de logstash, s'il y a d' autres hôtes à benne basculante Redis logstash hôte , peut être écrit sur une autre adresse IP hôte logstash correspondant à la machine, l'hôte logstash équilibrage de la pression port => 5044 # numéro de port CODEC => "JSON" } } sortie { IF [champs] [App] == " syslog "{ Redis { Host =>" 192.168.7.104 "# Redis adresse du serveur stocké dans le port =>" 6379 " DB =>" 0 " data_type =>" Liste " password =>" 123456 " Key =>" syslog-filebeat -7-103 « # journaux définissent clé différents, facilement distinguer codec => » JSON " }} Si [champs] [app] == "nginx" { Redis { host => "192.168.7.104" port => "6379" db => "0" data_type => "list" password => "123456" key => "filebeat-nginx-log-7-103" #定义不同的clé,方便分析 codec => "JSON" } } }
2, test d'hôte logstash
[root @ logstash-1 conf.d] # logstash -f filebeat à logstash.conf -t AVERTISSEMENT: Impossible de trouver logstash.yml qui se trouve généralement dans $ LS_HOME / config ou / etc / logstash. Vous pouvez spécifier le chemin à l' aide --path.settings. En continuant en utilisant les paramètres par défaut Impossible de trouver la configuration log4j2 à /usr/share/logstash/config/log4j2.properties chemin. Utilisation de config par défaut qui enregistre les erreurs à la console [WARN] 16/03/2020 11: 23: 31,687 [LogStash :: Runner] multilocale - Ignorant le fichier 'pipelines.yml' parce que les modules ou les options de ligne de commande sont spécifiées Configuration OK #测试配置文件正常
Service de redémarrage
# Systemctl restart logstash
3, cette fois peut être vu sur les deux hôte de valeurs clés, l'hôte a été décrit logstash journal enregistré aux Redis d'accueil
[root @ web1 ~] # Redis-cli -h 192.168.7.104 192.168.7.104:6379> auth 123456 OK 192.168.7.104:6379> TOUCHES * 1) "filebeat-nginx-log-7-103" 2) « filebeat- syslog-7-103"
3, disposé sur le journal extraction Redis-logstash Un vidage hôte et hôte sur ElasticSearch
1, Redis créer un extrait de journal d'un hôte dans le répertoire /etc/logstash/conf.d hôte logstash
[Logstash la conf.d la racine @] logstash à CAT # es.conf ENTRÉE { Redis { Host => "192.168.7.104" # Redis hôte adresse IP Port => "6379" DB => "0" password => "123456" data_type => "Liste" key => "syslog-7-103-filebeat" # écrit dans la valeur de clé correspondante filebeat CODEC => "JSON" } Redis { host => "192.168.7.104" # hôte Redis adresse IP Port => "6379" DB => "0" password => "123456" data_type => "Liste" Key => "filebeat-Nginx-log-7-103"# Valeur clé pour filebeat écrite, CODEC => "JSON" } } sortie { si [champs] [application] == "syslog" {# application correspondant au type d'hôte filebeat ElasticSearch { les hôtes => [ "192.168.7.100:9200"] # ElasticSearch adresse IP hôte index => « logstash-syslog- 7-103 - AAAA.MM.JJ% {+} " }} IF [champs] [application] ==" Nginx "{# application correspondant au type d'hôte filebeat ElasticSearch { les hôtes => [" 192.168.7.100:9200 « ] index => "logstash-Nginx-la-accesslog 7-103 - AAAA.MM.JJ% {+}" }} }
2, le test logstash fichier de configuration hôte
[root @ logstash conf.d] # logstash -f logstash à es.conf -t AVERTISSEMENT: Impossible de trouver logstash.yml qui se trouve généralement dans $ LS_HOME / config ou / etc / logstash. Vous pouvez spécifier le chemin à l' aide --path.settings. En continuant en utilisant les paramètres par défaut Impossible de trouver la configuration log4j2 à /usr/share/logstash/config/log4j2.properties chemin. Utilisation de config par défaut qui enregistre les erreurs à la console [WARN] 16/03/2020 11: 31: 30,943 [LogStash :: Runner] multilocale - Ignorant le fichier 'pipelines.yml' parce que les modules ou les options de ligne de commande sont spécifiées Configuration OK
3, redémarrer les services d'hébergement logstash
# Systemctl restart logstash
4. Vérifiez le journal du système et se connecter nginx plug-in tête
4, la création d'un Kibana d'index, affichez les informations collectées dans le journal
1, Nginx créer un index, le système d'index empathie journal
2, voir la création de l'information d'index