目次
序文
Fluentd はオープンソースのログ収集機能であり、Elasticsearch や Kibana と併用して EFK ログ収集システムを構築できます。利点は、Fluentd が Logstash よりもはるかに軽いことです。メモリ使用量は Logstash の 10 分の 1 以下です。この記事では、kubesphere k8s に Fluentd をデプロイする方法を説明します。
1. Fluentdイメージを作成する
dockerhub に公式イメージがありますが、組み込みのelasticsearch プラグインはありません。この場合、k8sに問題が発生してインストールできません!!
制作方法も非常に簡単な公式チュートリアルです。
fluent/fluentd-docker-image: Fluentd の Docker イメージ (github.com)
面倒な場合は、私がやったことを使ってください。
aliyun: docker pull registry.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1
2. 設定ファイルを書き込む
1. 構成の編集
kubesphere 上に新しい構成ファイルを作成する
キー:fluent.conf
価値:
<source>
@type tcp
@id デバッグ入力
ポート 4560
タグ デバッグ
<parse>
@type json
</parse>
</source><source>
@type tcp
@id error-input
port 4561
tag error
<parse>
@type json
</parse>
</source><source>
@type tcp
@id ビジネス入力
ポート 4562
タグ ビジネス
<parse>
@type json
</parse>
</source><source>
@type tcp
@id レコード入力
ポート 4563
タグ レコード
<parse>
@type json
</parse>
</source><フィルター レコード>
@type パーサー
key_name メッセージ
reserve_data true
delete_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-%
dlush_interval 5s
include_tag_key true
</match>
2. 設定手順 (無視して構いません)
ログ収集のソースを定義します。これには、tcp、udp、テール (ファイル)、フォワード (tcp+udp)、http などが使用できます。
ここでは、TCP リクエストからログを収集します。ポートは4560
、タグは set ですdebug
。
<source>
@type tcp
@id debug-input
port 24221
tag debug
<parse>
@type json
</parse>
</source>
生データの解析方法を定義し、ログを JSON に変換します。
デバッグログのJSONへの変換は以下のように設定できます。
<source>
@type tcp
@id debug-input
port 4560
tag debug
<parse>
@type json
</parse>
</source>
収集したログに対して、ログのコンソールへの出力やログの解析などの一連の処理を実行できます。
record
ソースとしてタグが含まれるログについては、message
その属性を JSON 形式に変換します (そうでない場合、message
属性は文字列になります)。
<filter record>
@type parser
key_name message
reserve_data true
remove_key_name_field true
<parse>
@type json
</parse>
</filter>
収集されたログが最終的に出力される場所を定義し、stdout (コンソール)、ファイル、elasticsearch、mongo などに出力できます。
elasticsearch
ここでは、ログ情報を保存するために 使用します。 logstash_format
、logstash_prefix
、logstash_dateformat
は、主にログ インデックス名の生成を制御するために使用されます。デバッグ ログを生成するための現在の構成のインデックス形式は、elasticsearch へのログ出力の時間間隔を制御するdocker-debug-logs-2021-10-23
ことです。flush_interval
<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. logback-spring.xmlの設定
ここでは特に言うことはなく、fluentdにログを出力できるように上記のポートを設定するだけです。
<appender name="LOG_STASH_DEBUG" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>${LOG_STASH_HOST}:4560</destination>
</appender>
3.fluentdをデプロイする
Kubesphere はステートレス サービスを展開します。
ここでカスタム ウェアハウス アドレスを使用して、es プラグインでミラー イメージを作成してアップロードします。
registry.cn-shanghai.aliyuncs.com/samaritan/fluentd:1.14-1。
デフォルトのポートを使用することを選択します
ログ収集ポートを設定します。
構成ファイルをマウントし、以前に作成した構成ファイルを選択して、/fluentd/etc ディレクトリにマウントします。
「次へ」をクリックして作成します。
起動ログをチェックして、カスタム構成ファイルがエラーなくロードされていることを確認します。