Elastic observability can smartly manage the apps on kubernetes

>100 Views

March 11, 21

スライド概要

Elastic Stack を活用した Kubernetes のアプリ監視
https://event.cloudnativedays.jp/cndo2021/speaker_dashboard/speakers/941/

profile-image

FPT ジャパン FPT データ& AI インテグレーション エグゼクティブエバンジェリスト 独立行政法人 国立印刷局 デジタル統括アドバイザー兼最高情報セキュリティアドバイザー AI 駆動開発勉強会主催。Microsoft エバンジェリスト時代から、Dell、Accenture、Elastic、VMware を経て現職まで一貫して開発者向けに最新技術を啓発。GPU クラウド技術訴求、AI 駆動開発推進。  政府の仕事は、内閣官房 政府 CIO 補佐官、 デジタル庁 PM を経て、現職を兼務。 Locofy.ai Regional Developer Advocate Google Cloud Partner All Certifications Engineer 2025

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

Elastic オブザーバビリティを 活⽤した Kubernetes のアプリ監視 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト 内閣官房 IT 総合戦略室 政府 CIO 補佐官

2.

Shotaro Suzuki Twitter : @shosuz Elastic Technical Product Marketing Manager/Evangelist 内閣官房 IT 総合戦略室 政府 CIO 補佐官 元 Microsoft Technical Evangelist

3.

Elastic 概要

4.

3 Solutions, 1 Stack, Deploy Anywhere 3つのソリューション Elastic エンタープライズサーチ Elastic オブザーバビリティ Elastic セキュリティ 可視化 & 管理 Kibana Elastic スタックで実現 Beats 豊富なデプロイ選択肢 蓄積、検索、分析 Elasticsearch Logstash Elastic Cloud Elastic Cloud Enterprise SaaS (AWS/Azure/GCP) IaaS (クラウド & オンプレ) Elastic Cloud on Kubernetes Kubernetes (クラウド & オンプレ) 収集

5.

Kubernetes 監視における課題

6.

Kubernetes の課題 Dev Ops Infrastructure Container Runtime

7.

Kubernetes のログとメトリック、トレースを組み合わせる ● ● ● コマンド1つで Kubernetes のアプリからログをストリーミング可能 テレメトリーのインフラデータから Prometheus のメトリック、Jaeger のトレースまで収集し、オープンソースの Elastic APM エージェントで分散トレーシングを実施可能 事前設定済みの Kibana ダッシュボードですぐに確認でき、Metricsアプリで横断的に検索できる

8.

Kubernetes サービスの変化を把握する ● ● ● MetricbeatとFilebeatの⾃動 探知機能 で、環境のあらゆる変化 を把握できる モジュールを追加したり、パスを記録 するプロセスは⾃動化され、 Docker や Kubernetes の API フックを使って監視設定が動的に 調整される さらにメタデータが付記されることに より、すべてのデータの出所を把握 できる

9.

Kubernetes に Elastic Observability を適⽤したサンプル MySQL APM packetbeat metricbeat filebeat Elastic Search Service (Elastic Cloud) or Azure Kubernetes Service Elastic Cloud on Kubernetes (ECK) 9

10.

Elastic Cloud on Azure と サンプルアプリのデプロイ

11.

Kubernetes クラスターのセットアップとデモアプリのデプロイ https://www.elastic.co/blog/kubernetes-observability-tutorial-k8s-cluster-setup-demo-app-deployment

12.

GitHubのレポジトリ: https://github.com/michaelhyatt/k8s-o11y-workshop

13.

Elastic Cloud デプロイ (Elastic & 各 Marketplace) Elastic https://www.elastic.co/jp/ AWS https://aws.amazon.com/marketplace/ Azure https://portal.azure.com/#create/hub GCP https://console.cloud.google.com/marketplace

14.

Elastic Cloud on Azure デプロイ # Get credentials for create_secrets.sh # - cloud_id, cloud_auth, apm_url, apm_token https://github.com/michaelhyatt/k8s-o11yworkshop/tree/cc6095210180f8526a9fdc518cf9 e3894b9ea9d0#elastic-cloud https://www.elastic.co/jp/

15.

Secrets の設定、Beats のセットアップ # create_secrets.sh を更新して実⾏する $HOME/k8s-o11y-workshop/install/create_secrets.sh ./create_secrets.sh # metricbeat と filebeat を動かしてセットアップする kubectl create -n kube-system -f metricbeat/metricbeat-setup.yml kubectl create -n kube-system -f filebeat/filebeat-setup.yml # 完了状況をウォッチする (completed になれば OK) kubectl get pods --namespace=kube-system

16.

Demo Secrets の設定、Beats のセットアップ

18.

Kubernetes ログの監視

19.

Kubernetes のログを収集 Deployment options Node 1 Node 2 Node n Filebeat Filebeat Filebeat DaemonSet Filebeat

20.
[beta]
Kubernetes ログの集約
./filebeat modules enable kubernetes
-

クラスターレベルのログ
サービスレベルのログ (例︓nginxのログ)
-

-

Auto-discovery

アプリのログ
全てコンテナのログを tail
add_kubernetes_metadata でログをエンリッチ
各イベントは下記の情報が追加される
-

Pod Name
Pod UID
Namespace
Labels

processors:
- add_kubernetes_metadata:
host: <host_name>
kube_config: ${HOME}/.kube/config

21.

メタデータプロセッサー イベントにメタデータを追加してログ、メトリックス、トレースを関連付け add_cloud_metadata add_docker_metadata add_kubernetes_metadata • cloud.availability_zone • docker.container.id • kubernetes.pod.name • cloud.region • docker.container.image • kubernetes.namespace • cloud.instance_id • docker.container.name • kubernetes.labels • cloud.machine_type • docker.container.labels • kubernetes.annotations • cloud.project_id • kubernetes.container.name • cloud.provider • kubernetes.container.image

22.

Demo Filebeat と Metricbeat のデプロイと ログ監視

25.

Kubernetes メトリクスの監視

26.

Kubernetes のメトリックスを収集 Deployment options Node 1 Node 2 Node n Metricbeat DaemonSet Metricbeat Metricbeat Metricbeat

27.

Kubernetes メトリックスの集約 ./metricbeat modules enable kubernetes - Kubernetes モジュール pod と service の監視 - - メトリックスのソース - - Cluster、 pod、 container のメトリックス Auto-discovery によるアプリメトリックス Kubelet (heapster, cAdvisor) kube-state-metrics apiserver controller-manager scheduler proxy Prometheus module (beta) ⼀元的な Kibana UI

28.

Kubernetes インベントリのビュー Kubernetes クラスターの俯瞰図

29.

Kubernetes ダッシュボード Metricset 毎のダッシュボード

30.

Metricbeat Autodiscover 動的なターゲットも残さずデータ収集する - - - コンテナ上でアプリを実⾏していると、 監視対象が動的になる Autodiscover により、設定の変化 にも柔軟に対応可能になる Template を指定する事で Autodiscover はコンテナの起動時 から監視ができる Node 1 Logs Nginx Metrics Elasticsearch

31.
[beta]
ヒントベース auto-discovery
-

-

Metricbeat はヒントを元にコンテナから取得す
べき情報を判断する
設定も⾃動で反映
-

-

次の⽂字列で始まる Pod の annotation か
Docker ラベルを元に hint を探す
9 種類のヒント
-

hints.enabled: true

Logs, Metrics, Modules

co.elastic.metrics
-

metricbeat.autodiscover:
providers:
- type: kubernetes

co.elastic.metrics/module
co.elastic.metrics/hosts
co.elastic.metrics/metricsets
co.elastic.metrics/raw
...

annotations:
co.elastic.metrics/module: prometheus
co.elastic.metrics/metricsets: collector
co.elastic.metrics/hosts: '${data.host}:9090'
co.elastic.metrics/period: 1m

32.

Kubernetes アプリケーションパフォーマンスの監視

33.

APM Logs + Metrics + APM の統合 オープンソース ⾔語&エージェント Java, C#, Go, Node.js, Python, Ruby, RUM (React, Vue.js, Angular) 専⽤の UI 合理化された APM ワークフロー 分散トレーシング インデックス 他データと関連付ける Elastic stack の機能をフル活⽤

34.

アプリ(MySQL, nginx, petclinic)のデプロイと Autodiscovery # Deploy MySQL DB kubectl create -f mysql/mysql.yml # Deploy petclinic and nginx kubectl create -f petclinic/petclinic.yml kubectl create -f nginx/nginx.yml # Observe the application components in Running state kubectl get pods kubectl get services

35.

Demo アプリ(MySQL, nginx, Petclinic) のデプロイ

38.

Prometheus メトリックを活⽤する ● ● ● ● ● MetricbeatのPrometheusモジュールでメトリックを捕捉、シッピング可能 /metrics エンドポイントを使⽤するか、Prometheus Federation API を使って、Prometheus サーバーに接続 収集済みのメトリックをプルすることにより、Prometheus が収集するメトリックを補⾜できる Prometheus エクスポーターを直接 Metricbeat に接続し、ゲートウェイをプッシュする⽅法もある ※ 詳しくは、Elastic StackとPrometheusメトリックに関するドキュメントをご覧ください。

41.

まとめ • • • • • • Filebeat & Metricbeat を使⽤してアプリケーションと Kubernetes のログとメトリックを収集 すぐにシステムとインフラストラクチャの監視を開始できる Elastic Cloud で Elasticsearch Service の無料トライアルにサインアップ 稼働したら、稼働時間モニタリングを使⽤してホストの可⽤性を監視 Elastic APM を使⽤してホストで実⾏されているアプリケーションを計測 新しいメトリックスクラスターと完全に統合された、完全に監視可能なシステム

42.

リソース • サンプルソリューション Github レポジトリ ‒ • https://github.com/michaelhyatt/k8s-o11y-workshop 関連ブログ ‒ ‒ ‒ https://www.elastic.co/blog/kubernetes-observability-tutorial-k8s-logmonitoring-and-analysis-elastic-stack https://www.elastic.co/blog/kubernetes-observability-tutorial-k8smetrics-collection-and-analysis https://www.elastic.co/blog/kubernetes-observability-tutorial-k8smonitoring-application-performance-with-elastic-apm

43.

Thank you for your attention!