[ToyProject]KubernetesベースのWebログ収集パイプラインの構築
17873 ワード
このドキュメントでは、ドッキングステーション/クバーネスオンラインブートキャンプで発生する課題の1つであるKubernetesベースのWebログ収集パイプラインの構築手順について説明します.
通常、Webログを収集するためのシード構造は次のとおりです.
「Webサーバ」コンテナと、Webサーバログを収集するためのコンテナは、「サイドカー」モードで構成されています.この帯域にElasticSearchとKibanaを追加し,Webログの収集,分析,可視化を同時に行うパイプラインを構築した.
Webログ収集パイプラインを構築するために、Elasticsearch、kibana pad、nginx、filebeat画像からなるWeb/サイドカーコンテナを作成しました.
パイプラインを構築するために使用されるクーバーネスオブジェクトのリスト.
まず、外部と通信するノードポートの設定を含むサービスと導入を通じてElasticSearchシードを導入しました.シード配置のための
kibanaシードを構成する際に使用する
仮想マシンに割り当てられたIPアドレスと対応するポートにより,Web上でもElasticSearchとKibanaに正常に接続できることが分かった.フレックスサーチ接続検証
Kibana接続確認
次はnginxベースのWeb/サイドカーコンテナの導入手順です.エンドカーコンテナを配置するための
nginxコンテナに接続してcurlコマンドを実行すると、通信がスムーズで、ログが正常に記録されます.
filebeatコンテナで収集したWebログを、フレックス検索で送信するように設定します.filebeatコンテナを実行中のノードに接続し、root権限でコンテナに接続し、
次のモジュールdフォルダ内の
次に、nginxコンテナで生成されたWebログが、フレキシブル検索で正常に転送されるかどうかを確認します.
nginx Webサーバシードに接続してcurlコマンドを繰り返し実行すると、elasticsearchにログが送信され、kibanaで可視化されます.
https://teamsmiley.github.io/2020/05/14/kubernetes-log-fluentd-elk/
通常、Webログを収集するためのシード構造は次のとおりです.
「Webサーバ」コンテナと、Webサーバログを収集するためのコンテナは、「サイドカー」モードで構成されています.この帯域にElasticSearchとKibanaを追加し,Webログの収集,分析,可視化を同時に行うパイプラインを構築した.
Webログ収集パイプラインを構築するために、Elasticsearch、kibana pad、nginx、filebeat画像からなるWeb/サイドカーコンテナを作成しました.
パイプラインを構築するために使用されるクーバーネスオブジェクトのリスト.
1.Elasticsearch Podの配備
まず、外部と通信するノードポートの設定を含むサービスと導入を通じてElasticSearchシードを導入しました.シード配置のための
elastic-search.yaml
ファイルは、次のとおりです.apiVersion: apps/v1
kind: Deployment
metadata:
name: elasticsearch
labels:
app: elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app: elasticsearch
template:
metadata:
labels:
app: elasticsearch
spec:
containers:
- name: elasticsearch
image: elastic/elasticsearch:7.16.2
imagePullPolicy: Never
env:
- name: discovery.type
value: "single-node"
ports:
- containerPort: 9200
- containerPort: 9300
---
apiVersion: v1
kind: Service
metadata:
labels:
app: elasticsearch
name: elasticsearch-svc
spec:
ports:
- name: rest
port: 9200
protocol: TCP
targetPort: 9200
- name: nodecom
port: 9300
protocol: TCP
targetPort: 9300
selector:
app: elasticsearch
type: NodePort
「フレックスサーチ」バージョンが変更されてもシードが正常に動作するように、特定のバージョンの「フレックスサーチ」画像をローカルサーバにダウンロードし、imagePullPolicy
をNeverに設定して、「フレックスサーチ」バージョンがシードを再実行するときにバージョンの影響を受けないようにします.さらに、他のサービスオブジェクトも作成し、ノードポートを外部からアクセスできるように設定します.2.Kibana Podの配備
kibanaシードを構成する際に使用する
kibana.yaml
ファイルは以下の通りです.apiVersion: apps/v1
kind: Deployment
metadata:
name: kibana
labels:
app: kibana
spec:
replicas: 1
selector:
matchLabels:
app: kibana
template:
metadata:
labels:
app: kibana
spec:
containers:
- name: kibana
image: elastic/kibana:7.16.2
imagePullPolicy: Never
env:
- name: SERVER_NAME
value: "kibana.kubenetes.example.com"
- name: ELASTICSEARCH_HOSTS
value: "http://elasticsearch-svc:9200"
ports:
- containerPort: 5601
---
apiVersion: v1
kind: Service
metadata:
labels:
app: kibana
name: kibana-svc
spec:
ports:
- port: 5601
protocol: TCP
targetPort: 5601
selector:
app: kibana
type: NodePort
kibanaはまた、imagePullPolicyをNeverに設定してelasticsearchと通信し、環境変数にelasticsearchのサービス名とポート番号を追加します.kubectl get svc
コマンド検証により、ElasticSearchシードのノードポートは31261、31096、kibanaシードのノードポートは30086に設定されます. 仮想マシンに割り当てられたIPアドレスと対応するポートにより,Web上でもElasticSearchとKibanaに正常に接続できることが分かった.
3.Web/サイドカード容器の配置
次はnginxベースのWeb/サイドカーコンテナの導入手順です.エンドカーコンテナを配置するための
nginx-sidecar.yaml
ファイルは以下の通りです.apiVersion: v1
kind: Pod
metadata:
name: nginx-sidecar
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: varlognginx
mountPath: /var/log/nginx
- name: sidecar-access
image: docker.elastic.co/beats/filebeat:7.16.2
imagePullPolicy: Never
volumeMounts:
- name: varlognginx
mountPath: /var/log/nginx
volumes:
- name: varlognginx
emptyDir: {}
Webサーバnginxを実行するコンテナと,サーバからWebログを収集するためのfilebeat画像からなる内部カードモードのコンテナを構築した.filebeat画像もelasticsearch,kibanaと一致し,WebサーバからログをインポートするためにWebサーバログを格納するディレクトリパスが同様にマウントされている.nginxコンテナに接続してcurlコマンドを実行すると、通信がスムーズで、ログが正常に記録されます.
filebeatコンテナで収集したWebログを、フレックス検索で送信するように設定します.filebeatコンテナを実行中のノードに接続し、root権限でコンテナに接続し、
filebeat.yml
の内部値を変更します.filebeat.config:
modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
processors:
- add_cloud_metadata: ~
- add_docker_metadata: ~
output.elasticsearch:
hosts: ["172.30.5.86:31261"]
#username: '${ELASTICSEARCH_USERNAME:}'
#password: '${ELASTICSEARCH_PASSWORD:}'
output.elasticsearch.hosts
に既存のElasticSearchシードのIPアドレスとポート番号を入力し、curlコマンドを使用してElasticSearchシードとの通信が正しいかどうかを確認します.次のメッセージが出力されている場合は、通信が正常であることを示します.次のモジュールdフォルダ内の
nginx.yml.disabled
ファイルの名前をnginx.yml
に変更し、以前にマウントされていたWebログディレクトリパスを入力します.- module: nginx
access:
enabled: true
var.paths: ["/var/log/nginx/access.log*"]
error:
enabled: true
var.paths: ["/var/log/nginx/error.log*"]
すべての操作が完了し、コンテナが再起動されると変更が有効になります.4.運転結果
次に、nginxコンテナで生成されたWebログが、フレキシブル検索で正常に転送されるかどうかを確認します.
nginx Webサーバシードに接続してcurlコマンドを繰り返し実行すると、elasticsearchにログが送信され、kibanaで可視化されます.
5. Reference
Reference
この問題について([ToyProject]KubernetesベースのWebログ収集パイプラインの構築), 我々は、より多くの情報をここで見つけました https://velog.io/@jkseo50/쿠버네티스-기반-웹-로그-파이프라인-구축テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol