8.1 Dockerログ用のインデックス設定
デモンストレーションのために、私はテストプログラムでログを生成するELKとFilebeatを含むDockerイメージを作成した。この例では、KibanaでのDockerログ用インデックスの設定に焦点を当てるよ。
ステップ 1: リポジトリのクローンとELKスタックの起動
Docker ComposeでELKスタックを設定したリポジトリをダウンロードして起動しよう:
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker compose up
便利のために-dオプションは省略されているから、ELKスタックの起動プロセスが確認できるよ。起動には数分かかる場合がある。正常に開始されたら、ログに以下のエントリが表示されるはずだよ:
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],
"pid":6,"message":"http server running at http://0:5601"}
ステップ 2: Kibanaへのアクセス
Webブラウザを開いて、http://localhost:5601 にアクセスしよう。
ステップ 3: ログ用のインデックス設定
Kibanaの左メニューでDiscoverセクションを選択して、インデックス作成ページに移動しよう。
ステップ 4: 新しいインデックスの作成
Create index patternボタンをクリックして設定フォームを開こう。Index pattern nameフィールドにlogstash-*を入力しよう。設定が正しく行われた場合、Kibanaはルールに一致するインデックスを表示するよ。
ステップ 5: タイムスタンプフィールドを選択
次のページで、タイムスタンプキーである@timestampを選択しよう。
ステップ 6: インデックスの確認
設定が完了すると、インデックス設定ページが表示される。他にするべきことはないよ。
ステップ 7: ログの確認
Discoverセクションに戻ると、Dockerコンテナのログエントリが表示されるよ。
8.2 ログ可視化のためのダッシュボード作成
ステップ 1. ログの可視化のためのダッシュボードを作成しよう
左側のメニューで「Dashboard」をクリックすると、ダッシュボード作成のページに進めるよ。
ステップ 2. 「Create new dashboard」をタップして、新しいダッシュボードにオブジェクトを追加する画面に進むよ。
ステップ 3. 「Create new」ボタンをクリックして、Kibanaでデータの表示方法を選んでね。いろいろなオプションがあるけど、例として「Vertical Bar」スタイルのグラフと「Data Table」形式のテーブル表示について説明するよ。他の設定も似たような感じでできるよ。
8.3 ログのヒストグラム
「Vertical Bar」でサービスの成功したリクエストと失敗したリクエストの割合を示すヒストグラムを作ってみよう。設定後、こんな感じになります:
成功したリクエストはレスポンスコードが 400 未満のもの、400 以上のものは問題ありとします。
まずグラフのデータソースを選択する必要があります。以前作成したIndex Patternを使いましょう。
ソースを選択すると、デフォルトで共通のグラフが1つ表示されます。これを設定していきましょう。
「Buckets」のセクションで「Add」をクリックして、「X-axis」を選択し、X軸を設定します。X軸にはタイムスタンプをプロットします。「Aggregation」フィールドでは「Date Histogram」を選択し、「Field」には「@timestamp」を指定します。「Minimum interval」フィールドは「Auto」のままでOKです。
「Update」をクリックすると、30秒ごとのリクエスト数が表示されます。
次にY軸の設定を行います。現在は時間間隔ごとのリクエスト総数が表示されています。これを「Sum Bucket」に変更して、成功したリクエストと問題のあるリクエストを加えます。「Bucket」→「Aggregation」で「Filters」を選び、フィルタを設定します:「statusCode >= 400」。フィールド「Custom label」にはメトリックのわかりやすい名前を記入しましょう。
「Update」をクリックすると、問題のあるリクエストのみが表示されるようになります。
棒グラフの色を変えたいですか?グラフの凡例上の円をクリックすると、色を選択するウィンドウが表示されます。
次に成功したリクエストのデータを追加します。「Metrics」で「Add」をクリックし、「Y-axis」を選択します。同じように設定しますが、フィルタには「statusCode < 400」を指定します。
新しい棒の色を変えると、成功したリクエストと問題のあるリクエストの割合を視覚化できます。
グラフを保存するのを忘れないでください!画面上部の「Save」をクリックし、名前を指定すると、Dashboardに表示されます。
8.4 ログテーブル
「Data Table」を作成して、リクエストされたすべてのURLのリストとその数を確認しよう。Vertical Barの時と同じように、まずデータソースを選択するところから始めるよ。
データソースを選択すると、選択した時間範囲内の総リクエスト数を示す1つのカラムを持つテーブルが画面に表示されるよ。
次にテーブルを設定しよう。「Buckets」セクションに進み、「Add」をクリックして「Split rows」を選択するよ。
表示された「Aggregation」フィールドで「Terms」を選択し、「Field」には「url.keyword」を指定する。
「Custom label」のフィールドには分かりやすい名前、例えば「Url」を入力して、「Update」をクリックするとテーブルが完成する。テーブルには、選択した時間範囲内で各URLに対するリクエスト数が表示される。
テーブルを保存するには、画面上部の「Save」をクリックして名前(例えば「Urls」)を指定し、Dashboardに戻るよ。これで作成した2つの表示が見えるようになる。

GO TO FULL VERSION