kubesphere k8s installe Fluentd avec le plugin elasticsearch

Table des matières

avant-propos

1. Créer une image Fluentd

2. Écrivez le fichier de configuration

1. Modifier la configuration

2. Instructions de configuration (peuvent être ignorées)

 3. Configuration de logback-spring.xml

3. Déployez fluentd




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)

 <source>

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>

 <analyse>

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>

 <filtre xxx>

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 recordle journal avec la balise comme source, nous messageconvertissons les attributs qu'il contient au format JSON. Sinon, messagel'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>

 <correspondance>

Définit où les journaux collectés sont finalement sortis et peuvent être sortis vers stdout (console), file, elasticsearch, mongo, etc.

 Ici, nous utilisons elasticsearchpour stocker les informations de journal. logstash_format, logstash_prefix, logstash_dateformatsont 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-23de flush_intervalcontrô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.


Je suppose que tu aimes

Origine blog.csdn.net/qq_31277409/article/details/120922878
conseillé
Classement