ポッドのサイドカーとしての流暢なビット
10297 ワード
最新のアプリケーションでは、ロギング機構があります.同様に、コンテナエンジンはロギングをサポートするように設計されています.コンテナ化されたアプリケーションの最も簡単で最も採用されているロギングメソッドは、標準出力と標準エラーストリームに書き込みます.しかし、コンテナエンジンまたはランタイムによって提供されるネイティブの機能性は、通常完全なログ解決のために十分ではありません.
ログを記録するアーキテクチャには、別のバックエンドが必要です.Kubernetesはログデータのネイティブストレージソリューションを提供しません.代わりに、多くのログ記録ソリューションはKubernetesと統合します.
この記事では、目標は、標準的な出力ログを収集し、集中的な店に出荷することです.ログコレクタは、ポッド内のサイドカーとして、またはクラスタ内のデーモンとして設定できます.
アーキテクチャ
fluentビットは、podから標準出力ログを収集して出荷するために使用されます.これは、オープンソースのログプロセッサと出荷者は、パフォーマンスを念頭に置いて設計されています:低CPUとメモリ使用量とハイスループット.オープンソース時系列データベースの流入dbは,ログの集中化ストアとして使用される.
設定:
待って!ポッドからstdoutログにアクセスする方法?
標準出力ログは
フルビットの設定
FluentビットConfigテンプレートを保持するためにConfigMapが作成されます.
への流暢なビット接続
EncrypXDBのアクセス構成と資格情報を含む秘密オブジェクトが作成されます.
サイドカーとしての流暢ビット実行のためのPOD構成
ボリュームは、Fluentビット設定ファイルテンプレート、実際のテンプレートファイルを保持するために使用されます.ホストに存在するpodログはサイドカーにマウントされます.
InfluxDBダッシュボードのログの視覚化
構成されたバケツにクエリを実行すると、サイドカーによって出荷されたすべてのログを含む結果セットが返されます.
次は何ですか. 流暢なビットによってサポートされる異なる入力と出力プラグインを調査してください. パーサとフィルタを使ってログを整形する 独自の流暢なビットプラグインを構築する クラスタ内のエラー発生として流暢ビットを実行します. Here すべてのマニフェストはセットアップに使用されます.
ログを記録するアーキテクチャには、別のバックエンドが必要です.Kubernetesはログデータのネイティブストレージソリューションを提供しません.代わりに、多くのログ記録ソリューションはKubernetesと統合します.
この記事では、目標は、標準的な出力ログを収集し、集中的な店に出荷することです.ログコレクタは、ポッド内のサイドカーとして、またはクラスタ内のデーモンとして設定できます.
アーキテクチャ
fluentビットは、podから標準出力ログを収集して出荷するために使用されます.これは、オープンソースのログプロセッサと出荷者は、パフォーマンスを念頭に置いて設計されています:低CPUとメモリ使用量とハイスループット.オープンソース時系列データベースの流入dbは,ログの集中化ストアとして使用される.
設定:
待って!ポッドからstdoutログにアクセスする方法?
標準出力ログは
/var/log/pods/{NAMESPACE}_{POD_NAME}_{POD_ID}/{CONTAINER_NAME}/*.log
ファイル.我々は、ちょうど上記の場所に存在するすべてのログファイルを尾する必要があります.フルビットの設定
FluentビットConfigテンプレートを保持するためにConfigMapが作成されます.
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-config-template
data:
fluent-bit-template.conf: |
[INPUT]
Name tail
Path /var/log/pods/${NAMESPACE}_${POD_NAME}_${POD_ID}/${CONTAINER_NAME}/*.log
[OUTPUT]
Name influxdb
Match *
Host ${INFLUX_HOST}
Port ${INFLUX_PORT}
Database ${INFLUX_DB}
Sequence_Tag _seq
http_token ${INFLUX_TOKEN}
Bucket ${INFLUX_BUCKET}
Org ${INFLUX_ORG}
への流暢なビット接続
EncrypXDBのアクセス構成と資格情報を含む秘密オブジェクトが作成されます.
apiVersion: v1
kind: Secret
metadata:
name: influx-db-cred
data:
INFLUX_HOST: <<TO_BE_UPDATED>>
INFLUX_PORT: <<TO_BE_UPDATED>>
INFLUX_DB: <<TO_BE_UPDATED>>
INFLUX_TOKEN: <<TO_BE_UPDATED>>
INFLUX_BUCKET: <<TO_BE_UPDATED>>
INFLUX_ORG: <<TO_BE_UPDATED>>
サイドカーとしての流暢ビット実行のためのPOD構成
ボリュームは、Fluentビット設定ファイルテンプレート、実際のテンプレートファイルを保持するために使用されます.ホストに存在するpodログはサイドカーにマウントされます.
volumes:
- name: fluent-bit-config-template
configMap:
name: fluent-bit-config-template
defaultMode: 0777
- name: app-log
hostPath:
path: /var/log/pods
type: Directory
- name: fluent-bit-config
emptyDir: {}
有効なfluentビット設定ファイルが定義されたテンプレートから生成されます.すべての必要な詳細と資格情報は、テンプレートからfluentビット設定ファイルを準備するinitコンテナに注入されます.K 8 S下のAPIを使用して、pod情報が公開されます. initContainers:
- name: fluent-bit-config-manager
image: busybox:latest
volumeMounts:
- mountPath: /fluent-bit-template.conf
name: fluent-bit-config-template
subPath: fluent-bit-template.conf
- mountPath: /conf
name: fluent-bit-config
envFrom:
- secretRef:
name: influx-db-cred
env:
- name: POD_ID
valueFrom:
fieldRef:
fieldPath: metadata.uid
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: CONTAINER_NAME
value: *container1
command: ["/bin/sh"]
args:
- -c
- eval "echo \"$(cat /fluent-bit-template.conf)\"" > /conf/fluent-bit.conf
流暢なビットサイドカーコンテナは、PODと生成された設定ファイルによって作成されたログファイルへのアクセスを必要とします.両方のボリュームを使用してサイドカーにマウントされます. - name: fluent
image: fluent/fluent-bit:1.8
volumeMounts:
- mountPath: /fluent-bit/etc/fluent-bit.conf
name: fluent-bit-config
subPath: fluent-bit.conf
- mountPath: /var/log/pods
name: app-log
InfluxDBダッシュボードのログの視覚化
構成されたバケツにクエリを実行すると、サイドカーによって出荷されたすべてのログを含む結果セットが返されます.
次は何ですか.
Reference
この問題について(ポッドのサイドカーとしての流暢なビット), 我々は、より多くの情報をここで見つけました https://dev.to/achu1612/fluent-bit-as-a-sidecar-in-pod-1479テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol