Azure

AKS ( Kubernetes ) のPod からログをfluentd を使って収集してelasticsearch + kibanaで解析する方法

はじめに

くどうです。

今回はKubernetesでのログの収集方法です。
その中でも、各Nodeに配置されたPodからログを収集す方法になります。
本検証自体はAKSで行っていますが、ACS、ACS-Engineなどで構築されたKubernetes環境でも同様のことが可能です。本稿でもAKS自体には触れておらず、Azureに関係なく利用可能です。

Podから出力されるログとは、kubectl log {Pod名} で出力されるログになります。
例えば、nginxをpodで配置した場合は、アクセスログが出力されたりします。

前提条件として、ElasticsearchおよびKubernetes環境はすでに整っていることが前提となります。
また、本内容はAzureで構築されたKubernetesを利用しています。

こちらも参考を
AKS ( Kubernetes ) のPod からログをfluentd を使って収集してelasticsearch + kibanaで解析する方法(k8s 1.8以上RBAC対応版)
http://level69.net/archives/25458

elasticsearchの構築方法については下記に記載しています。
elasticsearch + kibana を5分ぐらいで構築する。

構成

簡単に構成を説明します。
構成は単純です。Kubernetes環境と、同ネットワーク内にelasticsearch + kibana が構成されています。
事前に環境が正しく動作していることが前提となります。

Podからログを収集するため各Nodeへfluentdを配置します。DaemonSetで各Nodeへ配置します。
次に、fluentdにより収集されたログはelasticsearchへと送られます。
そして最後に、ユーザーはkibanaを通じて解析を行います。

準備

配置するfluentdは公式に用意されているものを利用し配置します。
定義ファイルは下記です。
fluentd-daemonset-elasticsearch.yaml

利用するためcloneして自分の環境へ持ってきましょう。

次に展開する前に設定を変更します。
設定を変更しているenv箇所のみを記載します。

fluentd-daemonset-elasticsearch.yaml

FLUENT_ELASTICSEARCH_HOST: elasticsearchのホスト名もしくはIPアドレスを指定
FLUENT_ELASTICSEARCH_PORT: elasticsearchのポート番号で通常は変更しません
FLUENT_ELASTICSEARCH_SCHEME: elasticsearchの利用するプロトコルで通常は変更しません
X-Pack Authentication: X-Packによる認証を行っていないため今回はコメントアウトしています

注意:indexの名前が変更できない?

展開

定義を保存しkubectlコマンドで DaemonSetを展開します。

fluentdが展開されていることが確認できます。
本環境ではNodeは3台です。

以上で、fluentdの配置は完了です。

確認

次にログが正しく転送されるか確認を行います。
nginxを例に進ます。

nginx.yaml

上記の定義を展開することで下記のような構成が出来上がります。

LoadBalancerを通してnginxにアクセスしログがfluentdからelasticsearchへ送られているか確認します。

最初に、Podでログが出力されているが確認します。
下記はCURLによる簡単なアクセスログになります。

kibana自体の操作方法は割愛します。

logとkubernetes.pod_nameのフィールドを表示さえるログが上記と同じこと、各Podから収集できていることが確認できます。

以上でkubernetesのPodからfluentdを利用してelasticsearch + kibanaの環境ができました。
これで、解析する準備が整いました。

削除

DaeamonSetの削除

まとめ

kubernetesでログの収集し解析する機会は増えると思います。今回はその方法のひとつとしてfluentd+elasticsearch+kibanaという従来よくある方法を紹介しました。
これ以外にも収集方法はあるかと思いますが、使い慣れた方法の一つとしてノウハウがたまっている分、大きく解析方法を変えなくて済むという利点が恩恵を受けれると思います。

参考:
https://kubernetes.io/docs/tasks/debug-application-cluster/logging-elasticsearch-kibana/
https://docs.fluentd.org/v0.12/articles/kubernetes-fluentd

Related post

  1. Azure

    AzureにKubernetesを展開する5つの方法

    はじめにくどうです。今回は、AzureにKubernete…

  2. Azure

    Azure Functions でDatadog のWebhook インテグレーションを利用しSen…

    はじめにくどうです。今回取り上げるのは、Azure Fun…

  3. AWS

    パソコン同士をVPNで接続する方法(お気に入りツールの紹介)

    はじめにくどうですパソコン同士をVPNで接続する場合が多く…

  4. Azure

    Power BIを使って仮想マシンのパフォーマンスログを確認してみる。

    はじめにくどうです仮想マシンの過去のパフォーマンスログをグ…

  5. Azure

    AzureでNAT設置パターンを考える。構築編、これでルートテーブルも大丈夫かもよ。

    はじめにくどうです。前回の投稿では概要だけ説明しました。Azur…

  6. Azure

    Azure Storage にTime Machine でバックアップをする方法

    Macbook 買ったのでバックアップしましょう。と、いうことでA…

  1. AWS

    ひとつのEBSを分割してみますよ
  2. 未分類

    バックアップを取りましょ 番外編 (SystemRescueCDをUSBに入れる…
  3. Azure

    Azure RemoteAppを使ってみる。Officeが使えますよ!
  4. AWS

    Azure仮想マシンがやってるポートフォワーディングをAWSのELBでやってみる…
  5. AWS

    Deep Security as a Service (DSaaS)でProxy…
PAGE TOP