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

ヴイエムウェア株式会社 ソリューションアーキテクト本部 プリンシパルエンタープライズアーキテクト。 Microsoft で13年間、テクニカルエバンジェリストとして .NET、Visual Studio、Windows、iOS、Android、Microsoft Azure 等の開発者向け最新技術啓発活動を実施。その後、Dell、Accenture、Elastic で開発者向け技術啓発活動等を経て現職。 モダンアプリケーション開発、マルチクラウド対応、アーキテクチャ策定等を中心に、技術者向けに最新技術の啓発活動を実施中。 2019年4月〜2021年8月迄、内閣官房 IT 総合戦略室 政府 CIO 補佐官を兼務、2021年9月〜2024年3月迄、デジタル庁 PjM ユニット ソリューションアーキテクトを兼務。

シェア

または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!