エンジニアリング

インフラUIおよびログUI:オペレーション担当者がElasticsearchを操作するための新しい方法

Elastic Stackバージョン6.5では、データを操作する新しい方法が2つリリースされます。それはインフラUIとログUIです。これらは6.5のベータ版で提供されますが、今後、皆さまからのご意見を伺い、さらに洗練していく予定です。ここでは両UIについて、その作成理由やユーザーエクスペリエンス、UIの構成を説明します。まずはログUIから説明しましょう。

ログUI

作成理由

皆さまから次のような言葉をよく聞きました。「ログが必要なんです。その他の余計なものは特に必要ありません。知る必要があることはすべてログに書いてあるので、それを読みたいのです」。皆さまからのそのような声を反映し、選択肢をご用意しました。

tail -fの強化版の機能によるログファイル末尾(最新情報)の監視、表、チャート、タグクラウドなどのビジュアルエクスペリエンス、表形式のビューなどです。ご自分に最適な方法をご利用ください。Elastic Stackのオープン性がそれらを支えています。

Logs-small.jpg visuals-small.jpg discover-small.jpg

ユーザーエクスペリエンス

ログUIの使用は、ログファイル末尾の最新情報を監視するのと同じですが、その利点は、すべてのシステムからのすべてのログを1つのコンソールで確認できることです。記録されていくログは、tail -fと同様に、ビューの最下部が最新のレコードになります。ログUIはデフォルトで、構成条件を満たすすべてのログのすべてのレコードを表示します。問題への対処時に、すべてのサービスからのすべてのログ(誰も読むことができないほどの速度で追加されていきます)が必要でない場合は、上部の検索バーに入力してインタラクションを変更できます。たとえば、Kubernetesラベルティア = 「frontend」の場合のApache httpdポッドからの404エラーのみを見たい場合、検索バーに入力を開始すると、オートコンプリート機能によって該当ログを見つけることができます。

これを、ターミナルを開いて操作する場合と比較してみてください。ターミナルの場合は、Kubernetesプロバイダーの認証を経て、必要なポッドを見つけ出し、kubectl logs -f … | grep 404を実行する必要があります(または非コンテナーの場合は、ホスト名の検索、SSHでの操作、ログのtailなどが必要です)。Elasticは、ユーザーが簡単に作業できるようにするとともに、ユーザーが見たいようにデータを見ることができるよう取り組んでいます。

構成

詳細についてはログUIに関するドキュメントを見ていただければと思いますが、ここで構成オプションのいくつかについて説明しておきます。下記がデフォルトの構成です。config/kibana.ymlにペーストして、このデフォルトから変更して使用できます。

xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.fields.timestamp: "@timestamp"
xpack.infra.sources.default.fields.message: ['message', '@message']

構成はかなりシンプルです。設定の必要なくそのままでログUIに表示される行は、filebeat-*エイリアスに一致する各インデックスのmessageフィールドです。では、Logstashのすべてのインデックスを追加する場合はどうすればよいのでしょうか。その場合は、config/kibana.yml内のエントリーxpack.infra.sources.default.logAliasを適切に修正してKibanaを再起動するだけです。

#xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.logAlias: "filebeat-*,logstash-*"

必ずKibanaを再起動してください。ログUIを再び開き、[Stream Live]をクリックすると、LogstashおよびFilebeatのすべてのログがログUIに流れ込むのを確認できます。

メモElasticsearchエイリアスを使いたい場合は、xpack.infra.sources.default.logAliasをエイリアスの名前に設定し、必要に応じてエイリアスを更新します。下記は、logsというエイリアスを使用した場合の例です。

エイリアスの作成:

curl -X POST "localhost:9200/_aliases" -H 'Content-Type: application/json' -d'
{
"actions" : [
{ "add" : { "indices" : ["logstash-*", "filebeat-*"], "alias" : "logs" } }
]
}
'

config/kibana.ymlの更新:

#xpack.infra.sources.default.logAlias: "filebeat-*"
xpack.infra.sources.default.logAlias: "logs"

インフラUI

作成理由

インフラストラクチャーの管理には、3つの基本的な成熟度レベルがあります。

  1. 何らかの問題を見つけ、監視システムを開いて詳細を調べる。
  2. すべてのシステムの主要指標を大きなダッシュボード上にグラフ化して監視し、それから問題の詳細を調べる。
  3. 機械学習でオペレーションを自動化して、通常のふるまいを認識し、新たな問題を検知してオペレーション担当者に警告する。

インフラUIは、オペレーション担当者が「大きなダッシュボードに主要指標をグラフ化する」ステージ向けに設計されています。「機械学習で自動化するステージ」に誰もが到達する必要があると言っても過言ではありません。Elasticの機械学習の詳細についてお読みいただき、またこのブログの最後にあるビデオをご覧いただければ、機械学習ジョブからのアラートに始まり、そこからAPMおよび分散トレーシング、インフラUI、ログUIへと進むワークフローをご理解いただけます。ログ、メトリック、APM、および分散トレーシングのすべてをElasticsearchにまとめることで、分析およびビジュアライゼーションの全ツールをデータのすべてにわたって使用することができます。

では、インフラUIを見てみましょう。その後、詳細について説明します。下記はKubernetesポッドであり、名前空間でグループ化しています。ここでは受信ネットワークトラフィックを見ています。ポッドの1つを右クリックすると、そのポッドのログまたは精選されたメトリックダッシュボードが表示されます。

ユーザーエクスペリエンス

現在、3つのタイプのデバイスがサポートされています。それらはホスト、Kubernetes(k8s)ポッド、およびDockerコンテナーです。インフラUIにより、非常に多数のデバイスの主要指標の状態を確認することができます。デバイス数が非常に多い場合は、テキストのない色だけの四角が表示され、検索バーを使用するかグループをクリックすることで、興味のあるサブセットへと掘り下げていくことができます。また、デバイスのログを開くことやメトリックダッシュボードを表示することもできます。

「主要指標」と書いていますが、これは現在はリストであり、すべてMetricbeatから取得されています。

ホスト:CPU、メモリー、負荷、受信トラフィック、およびログレート
Kubernetes:CPU、メモリー、受信トラフィック、および送信トラフィック
Docker: CPU、メモリー、受信トラフィック、および送信トラフィック

グループ化することで、デバイスのリストを絞り込むことができます。Kubernetesでデプロイされた特定のアプリケーションをサポートしている場合は、名前空間グループが役に立ちます。問題が過負荷状態の特定のノードに関係していると考えられる場合は、名前空間とノードの両方でグループ化することでさらに細かく分けることができます。下記が現在のグループリストです(デバイスタイプごとに最大2つ使用できます)。

ホスト:アベイラビリティゾーン、マシンタイプ、プロジェクトID、クラウドプロバイダー
Kubernetes:名前空間、ノード
Docker:アベイラビリティゾーン、マシンタイプ、プロジェクトID、プロバイダー

上記のグループのいずれも、ご自身によるデータとのインタラクション方法をサポートしない場合は、検索バーを使用します。入力を開始すれば、Kibanaクエリ言語(KQL)オートコンプリート機能が入力をサポートしてくれます。上のほうで、ログUIの例をGIFで提供しました。そこではkubernetesと入力し始めることで、Kibanaがlabels、そのあとに続くtierを提示し、そしてElasticsearchにインデックスされているものに基づいて、考えられる選択肢を提供してくれます。

リソースをグループ化すると、グループをクリックすることでそのグループを掘り下げ、詳細を見ることができます。 特定のホスト、ポッド、コンテナーに注目する場合は、そのログまたはメトリックにドリルダウンします。 下記はホストのメトリックビューの一部です。

構成

インフラUIに関しては、構成の必要はほとんどありません。Metricbeatをデプロイして、Systemモジュールを有効化するだけです。コンテナーを実行している場合は、KubernetesDockerモジュールも有効化します。

デフォルトのインデックスパターン(metricbeat-*)を修正していない場合は、これで完了です。カスタマイズを行う必要がある場合は、インフラUIに関するドキュメントで詳細を確認できます。ここでは主要なオプションを示しておきます。

xpack.infra.sources.default.metricAlias: "metricbeat-*"
xpack.infra.sources.default.fields.host: "beat.hostname"
xpack.infra.sources.default.fields.container: "docker.container.name"
xpack.infra.sources.default.fields.pod: "kubernetes.pod.name"

フィードバックをお寄せください

これらのUIは両方ともベータ版のUIであり、皆さまからのフィードバックをいただければと思います(一般提供が開始された後も引き続きフィードバックをお寄せいただければと思います)。データとのインタラクションについて、ご希望の方法をお知らせください。このベータ版リリースにおけるインフラUIのグループ化は、貴社のチームの編成法をサポートするものになっているでしょうか?どのようにすれば改良できますか?色が変わるメトリックは適切でしょうか?ログUIのログをフィルターする別の方法が必要ですか?インフラUIからメトリックビューを開くと、関心のあるメトリックを見ることができますか?

気に入った点、気に入らない点、ニーズについて、Kibanaディスカッションフォーラムでお知らせください。Elasticの開発者は皆さまからのご意見を重視しており、それらのディスカッションを読み、対応いたします。また、問題のオープンやPRの送信を行うこともでき、GitHubを常にご覧いただくこともできます。

ぜひお試しください

Elasticのライブのデモシステムには、検索、可視化、操作が可能なログとメトリックがあります。 アクセスして[Infrastructure]タイルをクリックし、インフラUIを起動しましょう。

JumpIn.jpg

KubernetesまたはDockerビューへの切り替えや、UIを使用したオブジェクトのグループ化、 検索バーを使用したビューの絞り込みが可能です。 ホスト、ポッド、コンテナーをクリックして、そのオブジェクトのログUIを起動できます。このdemo.elastic.coでは、いくつかのダッシュボーおよびビジュアライゼーションを 見ることができます。 さまざまな領域には、 ランディングページからアクセスできます。

デモを見る

以下は、これらのUIのワークフローを示すビデオです(機械学習とAPM、分散トレーシングも含まれています)。お読みいただきありがとうございました。ぜひフィードバックをお寄せください。