Table des matières
2. Écrivez le fichier de configuration
2. Instructions de configuration (peuvent être ignorées)
3. Configuration de logback-spring.xml
avant-propos
Fluentd est une fonction de collecte de journaux open source, qui peut être utilisée avec Elasticsearch et Kibana pour créer un système de collecte de journaux EFK. L'avantage est que Fluentd est beaucoup plus léger que Logstash. L'utilisation de la mémoire est inférieure à un dixième de Logstash. Cet article vous montrera comment déployer Fluentd sur kubesphere k8s
1. Créer une image Fluentd
Il existe une image officielle sur dockerhub, mais il n'y a pas de plug-in elasticsearch intégré. Dans ce cas, il y aura des problèmes sur k8s, et il ne pourra pas être installé ! !
La méthode de production est également très simple tutoriel officiel :
fluent/fluentd-docker-image : image Docker pour Fluentd (github.com)
Si vous êtes trop paresseux pour vous embêter, vous pouvez utiliser ce que j'ai fait.
aliyun : docker pull register.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1
2. Écrivez le fichier de configuration
1. Modifier la configuration
Créer un nouveau fichier de configuration sur kubesphere
clé:fluent.conf
valeur:
<source>
@type tcp
@id debug-input
port 4560
tag debug
<parse>
@type json
</parse>
</source><source>
@type tcp
@id error-input
port 4561
tag error
<parse>
@type json
</parse>
</source><source>
@type tcp
@id business-input
port 4562
tag business
<parse>
@type json
</parse>
</source><source>
@type tcp
@id record-input
port 4563
tag record
<parse>
@type json
</parse>
</source><filter record>
@type parser
key_name message
reserve_data true
remove_key_name_field true
<parse>
@type json
</parse>
</filter><match fluent.**>
@type stdout
output_type json
</match><match **>
@type elasticsearch
host elastic-9g8m25-elasticsearch-master.mall-swarm
port 9200
type_name docker
logstash_format true
logstash_prefix docker-${tag}-logs
logstash_dateformat %Y-%m-%d
flush_interval 5s
include_tag_key true
</match>
2. Instructions de configuration (peuvent être ignorées)
Définit la source de collecte des journaux, qui peut être tcp, udp, tail (fichier), forward (tcp+udp), http, etc.
Ici, nous collectons les journaux des requêtes tcp, le port est 4560
, et la balise est définie debug
.
<source>
@type tcp
@id debug-input
port 24221
tag debug
<parse>
@type json
</parse>
</source>
Définissez la méthode d'analyse des données brutes et convertissez les journaux en JSON.
La conversion des journaux de débogage en JSON peut être configurée comme suit.
<source>
@type tcp
@id debug-input
port 4560
tag debug
<parse>
@type json
</parse>
</source>
Une série de traitements peut être effectuée sur les journaux collectés, tels que l'impression des journaux sur la console ou l'analyse des journaux.
Pour record
le journal avec la balise comme source, nous message
convertissons les attributs qu'il contient au format JSON. Sinon, message
l'attribut sera une chaîne.
<filter record>
@type parser
key_name message
reserve_data true
remove_key_name_field true
<parse>
@type json
</parse>
</filter>
Définit où les journaux collectés sont finalement sortis et peuvent être sortis vers stdout (console), file, elasticsearch, mongo, etc.
Ici, nous utilisons elasticsearch
pour stocker les informations de journal. logstash_format
, logstash_prefix
, logstash_dateformat
sont principalement utilisés pour contrôler la génération des noms d'index de journal. Le format d'index de la configuration actuelle pour générer les journaux de débogage est docker-debug-logs-2021-10-23
de flush_interval
contrôler l'intervalle de temps pour la sortie du journal vers elasticsearch.
<match **>
@type elasticsearch
host elastic-9g8m25-elasticsearch-master.samaritan
port 9200
type_name docker
logstash_format true
logstash_prefix docker-${tag}-logs
logstash_dateformat %Y-%m-%d
flush_interval 5s
include_tag_key true
</match>
3. Configuration de logback-spring.xml
Il n'y a rien à dire ici, configurez simplement le port ci-dessus afin que le journal puisse être envoyé à fluentd
<appender name="LOG_STASH_DEBUG" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOG_STASH_HOST}:4560</destination>
</appender>
3. Déployez fluentd
Kubesphere déploie des services sans état.
Utilisez l'adresse de l'entrepôt personnalisé ici pour créer et télécharger l'image miroir avec le plugin es :
registre.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1。
Choisir d'utiliser le port par défaut
Définissez le port de collecte des journaux.
Montez le fichier de configuration, sélectionnez le fichier de configuration précédemment écrit et montez-le dans le répertoire /fluentd/etc
Cliquez sur Suivant pour créer.
Vérifiez le journal de démarrage pour vous assurer que notre fichier de configuration personnalisé est chargé sans erreur.