Amazon Web Services ブログ

Kibana ダッシュボードの設定と作成

Kibana は、オープンソースのデータ視覚化および探索ツールです。ログと時系列分析、アプリケーションモニタリング、運用インテリジェンスのユースケースに使用できます。Kibana は、ヒストグラム、折れ線グラフ、円グラフ、ヒートマップ、組み込みの地理空間サポートなど、強力で使いやすい機能も提供します。

Kibana は、検索および分析エンジンである Amazon Elasticsearch Service (Amazon ES) と緊密に統合されており、大量のデータの分析を簡素化します。Amazon ES のシンプルなブラウザベースのインターフェイスにより、動的なダッシュボードをすばやく作成して共有できます。

この記事では、視覚化データとダッシュボードを作成する方法を示します。Kibana を使用して Amazon ES に保存された Amazon Relational Database Service (RDS)Amazon Aurora PostgreSQL ログを使用します。この記事は、2 部構成シリーズの第 2 部です。パート 1 については、「Amazon Elasticsearch Service で PostgreSQL ログを分析する」を参照してください。

大まかな手順は次のとおりです。

  1. インデックスパターンを作成する
  2. テキストフィールドを集計する
  3. 検出機能を探索する
  4. 視覚化機能を探索する
  5. 視覚化データを作成する
  6. ダッシュボードを作成する

前提条件

  • 適切な AWS のサービスにアクセスできる有効な AWS アカウント。
  • Aurora/RDS PostgreSQL データベース。 詳細については、「Amazon RDS」を参照してください。
  • 必要な内容を含むデータベースログが生成されていることを確認します。パラメータグループを確認し、次のパラメータの値が正しいことを確認します。
    • log_lock_waits=1 (true)
    • log_min_duration_statement=5000 (log queries that take more than 5 secs)
    • log_min_messages=warning
    • log_min_error_statement=error
    • log_statement=ddl
    • log_checkpoints=1 (true)
    • log_connections=1 (true)
    • log_disconnections=1 (true)

Creating index patterns

Kibana でデータを視覚化して探索するには、最初にインデックスパターンを作成する必要があります。インデックスパターンは、探索するデータを含む Amazon ES インデックスに Kibana をポイントします。たとえば、2019 年 8 月の特定のデータベースのデータを調べるには、cwl-<dbname>-2019.08 * のインデックスパターンを作成します。Amazon CloudWatch を Amazon ES ストリーミングに設定する一方、cwl-<dbname>-yyyy.MM.dd の形式でインデックスを設定します。

インデックスパターンを作成するには、次の手順を実行します。

  1. Amazon ES ドメインの概要ページの URL を使って Kibana アプリケーションを開きます。
  2. ナビゲーションパネルで、歯車アイコンを選択して Management ページを開きます。
  3. [Index Patterns] を選択します。
  4. [Create index pattern] を選択します。
  5. インデックスパターンでは、デフォルトのインデックスパターンとして、アスタリスクのワイルドカード (cwl-*) を付けて cwl を入力します。
  6. Time filter では、[@timestamp] を選択します。
  7. [Create index pattern] を選択します。
    このインデックスパターンは、デフォルトとして自動的に設定されます。自動的に設定されていない場合は、下のスクリーンショットのプレビューに示すように、星印のアイコンをクリックします。
    * cwl- *インデックスパターンを表示するスクリーンショット。右側の星印をクリックして、デフォルトのインデックスとして設定します
  8. これらの手順を繰り返して、各データベースのインデックスパターンを作成します (cwl-<databaseName>-*)。これは、クエリのパフォーマンスを向上させるためのベストプラクティスです。

テキストフィールドでの集計

特定の期間にエラーが記録された時期、または特定の時間に記録されたクエリを確認するには、メッセージの集計を許可します。テキストフィールドの集計はデフォルトでは設定されていないため、設定を変更します。詳細については、「Amazon Elasticsearch の開始方法:Kibanaでのフィルター集計」を参照してください。

この設定は、データのサイズによってはより多くのメモリを消費する可能性があります。メッセージフィールドを集約可能にするには、次の手順を実行します。

  1. ナビゲーションペインで、[Dev Tools] を選択します。
  2. 次のコマンドを入力します。

    PUT cwl-*/_mapping/?include_type_name=false
    {
      "properties": {
        "message": {
          "type": "text",
          "fielddata": true
        }
      }
    }
  3. 次に、正しいシャード値を設定します。インデックスごとに 1 つのシャードを許可するには、次のコードを使用します。
    PUT /_template/shards_per_index
    {
        "template": "cwl-*",
        "settings": {
            "index" : {
                "number_of_shards": 1,
                "number_of_replicas": 1
            }
        }
    }

詳細については、「Amazon Elasticsearch Service の開始方法: 必要なシャードの数」を参照してください。

検出機能を探索する

Kibana のデータ検出機能を使用して、データを探索できます。これで、すべてのデータベースのすべてのイベントにアクセスできます。インデックスパターン cwl-* を使用します。インデックスパターンの作成中にデフォルトとしてマークされます。Lucene query syntax を使用して検索クエリとフィルター結果を送信することにより、データを表示できます。検索クエリに一致するドキュメントの数を確認し、フィールド値の統計を取得することもできます。

複数のログで即興検索を実行し、複数のデータベースから表示するには、インデックスパターン cwl- *を使用します。

単一のデータベースからデータを取得するには、cwl- *ではなく正しいインデックスパターンを選択します。これを見つけるには、Discover ペインの左上隅にあるドロップダウンメニューでデータベース名を検索します。これにより、特定のデータベースのインデックスのみを呼び出すことで、クエリのパフォーマンスを向上させることができます。次の画像は、入力されたデータを示しています。

特定のデータベースを選択したときのデータを示すスクリーンショット。

Selected Fields メニューには、CloudWatch から Amazon ES へのログストリーミングのセットアップ中に設定したフィールド (日付、時刻、その他、メッセージ) が表示されます。ヒット数は、ページの左上隅に表示されます。

選択したメッセージを表示し、コピー SQL コマンドではないクエリを省略するには、次の Lucene query syntax を使用します。<databaseName>AND message: "select" -message: "copy"

検索コマンドは、オンライン検索を実行するのと同じくらい簡単です。たとえば、コンテキストフィールド (メッセージ) を使わずに、<databaseName> AND select –copy を使用することもできます。

視覚化機能を探索する

Amazon ES インデックスのデータに基づいて視覚化データを作成するには、視覚化機能を使用します。Kibana の視覚化は、Amazon ES クエリに基づいています。一連の Amazon ES 集計を使用してデータを抽出および処理することにより、トレンド、スパイク、ディップを示すグラフを作成できます。 検出機能から保存した検索から視覚化を作成するか、新しい検索クエリで開始します。

新しい視覚化データを作成するには、次の手順を実行します。

  1. ナビゲーションペインで、[Visualization] を選択します。
  2. 下のスクリーンショットプレビューに示されているように、追加アイコンをクリックします。これは、+ 記号の付いた緑色の四角形で表されます。

視覚化ページと、+ 記号の付いた緑色の四角形で表される追加アイコンを示したスクリーンショット

次のスクリーンショットは、選択できるさまざまな視覚化タイプを示しています。

視覚化オプションのスクリーンショットプレビュー。

RDS PostgreSQL DB ログライブダッシュボードの視覚化データの作成

この記事では、次の視覚化データを作成し、ダッシュボードに追加します。

  • 長時間実行クエリのビジュアルビルダータイムライングラフ。
  • ロックデータのデータテーブル。
  • エラー、致命的、警告メッセージの割合の円グラフ。
  • 時間ごとに集計されたエラー、致命的、警告メッセージのデータテーブル。
  • 時間ごとに集計された長時間実行クエリのデータテーブル。
  • チェックポイントの視覚的なビルダー棒グラフ。
  • 接続と切断の視覚的なビルダー折れ線グラフ。
  • 時間ごとに集計された DDL ステートメントのデータテーブル。

これは、視覚化を網羅したリストではありませんが、それぞれの使用方法を理解するのに役立ちます。

長時間実行クエリのタイムライングラフ

実行時間の長いクエリのタイムライングラフを作成するには、次の手順を実行します。

  1. Visualizations ペインで、追加アイコン (円で囲まれた + 記号で表される) をクリックします。
  2. [Visual Builder] を選択します。
  3. 各フィルター (SELECT、INSERT、UPDATE、DELETE) で、追加アイコンをクリックします。
  4. Group by では、[Filter] を選択します。
  5. Query string には、フィルタータイプ (選択、挿入、更新、または削除) と同じ文字列を入力します。
    次のスクリーンショットは、手順 3〜5 を示しています。
    手順 3〜5 を示すスクリーンショットのプレビュー
  6. Panel options タブを選択します。
  7. Index pattern には、適切なインデックスパターン (cwl-<dbName>*) を入力します。
  8. Drop last bucket? で [No] を選択します。
  9. Panel filter には、データベース名を入力します。
    次のスクリーンショットは、手順 6〜9 の詳細を示しています。
    手順 6〜9 を示すスクリーンショット
  10. [Save] を選択して、適切なタイトル (たとえば、「<dbName> Long-Running Queries Graph」) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。
    長時間実行クエリの視覚化のプレビュー

ロックデータのデータテーブル

ロックデータのデータテーブルを作成するには、次の手順を実行します。

  1. Discover ページで、適切なインデックスパターン (cwl-<dbName>*) を選択します。
  2. message にカーソルを合わせて [Add] ボタンをクリックし、Available fields リストから選択したフィールドとして message を追加します。以下のスクリーンショットは、選択したメッセージフィールドをプレビューしたものです。
    選択したメッセージフィールドのスクリーンショットプレビュー
  3. Filters には、以下のスクリーンショットに示すように、Lucene クエリ (lock OR exclusivelock OR accesssharelock) を入力します。
    クエリが入力された Filters ページのプレビュー。
  4. [Refresh] を選択します
  5. [Save] を選択して、適切なタイトル (たとえば、<dbname> Locks Info) で検索を保存します。以下の画像に示すように、視覚化の出力が表示されます。
    視覚化出力のプレビュー。

エラー、致命的、警告メッセージの円グラフ

エラー、致命的、警告メッセージの円グラフを作成するには、次の手順を実行します。

  1. Visualizations ペインで、追加アイコンをクリックします。
  2. [Pie chart] を選択します。
  3. Index pattern リストから、適切なインデックスパターン (cwl- <dbName>*) を選択します。
  4. Buckets カテゴリで [Split Slices] を選択します。
  5. Aggregation では、[Filters] を選択します。
  6. 以下のフィルターを追加し、それぞれに対して [Add Filter] を選択します。
    • <dbName>」および「error」
    • <dbName>」および「fatal」
    • <dbName>」および「warning」
      次のスクリーンショットは、Buckets セクションの下に追加されたフィルターを示しています。
      バケットセクションの下に追加されたフィルターのスクリーンショット。
  7. [Save] を選択して、適切なタイトル (たとえば <dbName> Error, Fatal, and Warning Chart) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。
    エラー/致命的/警告の円グラフの視覚化

エラー、致命的、警告メッセージのデータテーブル

時間ごとに集計されたエラー、致命的、警告メッセージのデータテーブルを作成するには、次の手順を実行します。

  1. Visualizations ペインで、追加アイコンをクリックします。
  2. [Data Table] を選択します。
  3. Index pattern リストから、適切なインデックスパターン (cwl-* <dbName>) を選択します。
  4. [Add metrics] を選択します。
  5. MetricAggregation で、[Top Hit] を選択します。
  6. Field では、[message] を選択します。
    次のスクリーンショットのプレビューは、手順 4〜6 の詳細を示しています。
    手順 4〜6 の詳細を示したスクリーンショット。
  7. Buckets で、[Split Rows] を選択します。
  8. Aggregation では、下のスクリーンショットのプレビューに示したように [Date Histogram] を選択します。
    手順 7〜8 の詳細を示したスクリーンショット
  9. 以下に示すように、再生アイコンをクリックします。
    再生ボタンのスクリーンショットのプレビュー。
  10. Filters では、下のスクリーンショットプレビューに示すように、「<database name>」および (「エラー」または「致命的」または「警告」) の Lucene 構文にクエリ文字列を追加します。
    「<database name>」および (「エラー 」または「致命的」または「警告」) が入力された、Filters フィールドのスクリーンショット。
  11. [Refresh] ボタンを選択します。
  12. [Save] を選択して、適切なタイトル (たとえば <dbname> Error, Fatal, and Warning Messages) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。
    エラーメッセージの視覚化のスクリーンショット

長時間実行クエリのデータテーブル

時間ごとに集計された長時間実行クエリデータテーブルを作成するには、メッセージのデータテーブルを作成する場合と同様の手順に従います。その際、次の変更を加えます。

  • クエリ文字列を、<database name> および ( (「期間」および「挿入」) または (「期間」および「選択」) または (「期間」および「削除」) または (「期間」および「更新」) ) に置き換えます。
  • [Save] を選択して、適切なタイトル (たとえば、「<dbname> Long-Running Queries」) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。

長時間実行クエリの視覚化のスクリーンショットプレビュー

チェックポイントのグラフ

チェックポイントグラフを作成するには、次の手順を実行します。

  1. Visualizations ペインで、追加アイコンをクリックします。
  2. [Visual Builder] を選択します。
  3. Group by では、[Filters] を選択します。
  4. 以下のスクリーンショットのプレビューに示すように、Filters フィールドに「checkpoint complete」と「Checkpoints」を入力します。
    「チェックポイント完了」と「チェックポイント」が入力された Filters フィールドのスクリーンショット。
  5. Option タブを選択します。
  6. 適切なインデックスパターン (cwl-* <dbName>) を Index pattern テキストボックスに追加します。
  7. Drop last bucket? で [No] を選択します。
  8. Panel filter には、データベース名を入力します。
  9. Chart type では、[Bar] を選択します。
  10. [Save] を選択して、適切なタイトル (たとえば、「<dbName> Checkpoint Graph」) を付けて視覚化データを保存します。 以下の画像に示すように、視覚化の出力が表示されます。
    チェックポイントの視覚化のスクリーンショット

接続と切断のグラフ

接続と切断のグラフを作成するには、次の手順を実行します。

  1. Visualizations ペインで、追加アイコンをクリックします。
  2. [Visual builder] を選択します。
  3. 各フィルター (接続および切断) で、追加アイコンをクリックします。
  4. Group by では、[Filter] を選択します。
  5. Query string には、フィルターのタイトルに応じて、「connection authorized」または「disconnection」のいずれかを入力します。
    次のスクリーンショットのプレビューでは、これらの手順を詳しく説明しています。
    手順 4 と 5 の詳細を示したスクリーンショット
  6. Option タブを選択します。
  7. 適切なインデックスパターン (cwl-<dbName>*) を Index pattern テキストボックスに追加します。
  8. Drop last bucket? で [No] を選択します。
  9. Panel filter には、データベース名を入力します。
  10. [Save] を選択して、適切な名前 (たとえば、「<dbName> Connections and Disconnections Graph」) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。
    接続と切断の視覚化のプレビュー。

DDL ステートメントのデータテーブル

時間ごとに集計された DDL ステートメントのデータテーブルを作成するには、メッセージのデータテーブルを作成する手順に従います。その際、次の変更を加えます。

クエリ文字列を「<database name>および (「変更」または「ドロップ」または「作成」または「コピー」または「付与」) に置き換えます。

  1. [Save] を選択して、適切な名前 (たとえば、「<dbname> DDL Statements」) を付けて視覚化データを保存します。以下の画像に示すように、視覚化の出力が表示されます。
    DDL ステートメントの視覚化のプレビュー

ダッシュボード

ダッシュボードには、視覚化と検索のコレクションが表示されます。ダッシュボードのコンテンツを配置、サイズ変更、編集できます。ダッシュボードを保存して共有することもできます。ダッシュボードを設定するには、次の手順を実行します。

  1. ナビゲーションペインから、[Dashboard] を選択します。
  2. 追加アイコンを選択します。
  3. リスト内の各視覚エフェクトを選択して、ダッシュボードパネルに追加します。検出の検索から保存した視覚エフェクトを追加するには、以下のスクリーンショットに示すように、Saved Search タブを使用します。
    Add Panels 画面の Saved Search を選択したスクリーンショット。 ダッシュボードの視覚化と検索は、移動、サイズ変更、編集、削除できるパネルに保存されます。編集を開始するには、メニューバーの [Edit] をクリックします。
    – パネルを移動するには、パネルヘッダーをクリックして押したまま、目的の場所にドラッグします。
    – パネルのサイズを変更するには、右下のサイズ変更コントロールをクリックして、目的のサイズになるまでドラッグします。
  4. 必要に応じてパネルを調整します。
  5. [Save] を選択して、データベース名をタイトルとしてダッシュボードを保存します。
  6. [Store time with dashboard] と [Confirm Save] を選択します。
    次のスクリーンショットは、作成された視覚化ごとにダッシュボードページ全体をプレビューします。
    視覚化データが作成されたダッシュボード全体のスクリーンショット。

まとめ

この記事では、視覚化によってデータログを効率的に理解する方法、および検出機能を使用して Amazon ES に保存されたフォーマット済みデータを確認する方法を示しました。さらに、ダッシュボードを使用して、1 つの画面でさまざまな視覚化を確認する方法を示しました。

PostgreSQL ログデータから視覚化データとダッシュボードを作成する方法を理解すれば、他のグラフを簡単に試すことができます。この記事は、2 部構成シリーズの第 2 部です。パート 1 については、「Amazon Elasticsearch Service で PostgreSQL ログを分析する」を参照してください。 AWS はフィードバックを歓迎します。コメントや質問を以下に残してください。

 


著者について

 

Marcel George はアマゾン ウェブ サービスのコンサルタントです。お客様と協力し、AWS クラウドでスケーラブルかつ可用性と安全性に優れたソリューションの構築に取り組んでいます。彼の専門分野は、同種および異種のオンプレミスデータベースをAmazon RDS や Aurora PostgreSQL へ移行する技術です。