Building andobservingcloudnativeappliactionusingazure elastic-terraform

>100 Views

September 30, 21

スライド概要

https://events.hashicorp.com/hashitalksjapan

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.

Azure x Elastic x Terraform で クラウドネイティブアプリケーションを 構築して監視する 鈴⽊ 章太郎 Elastic テクニカルプロダクトマーケティングマネージャー/エバンジェリスト デジタル庁 プロジェクトマネージャー

2.

Shotaro Suzuki Twitter : @shosuz Elastic Technical Product Marketing Manager/Evangelist デジタル庁 プロジェクトマネージャー 元 Microsoft Technical Evangelist

3.

l l アジェンダ l l l l l Elastic 概要 Elastic Observability Elastic and HashiCorp Terraform による Azure Kubernetes Service クラスター 作成 Elastic Cloud on Azure へのサンプルアプリのデプロイ Elastic x Azure 統合による Observability と APM の進化 まとめ

4.

Elastic 概要

5.

About Elastic Elastic 会社概要 Distributed by design 2012 年設⽴ IPO 2018, NYSE: “ESTC” 40 カ国以上で 2,000 ⼈の従業員 3 億 5,000 万以上のダウンロード、 12,000 以上の企業での採⽤ 世界の #1 データベース検索エンジン (DB-Engines)

6.

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

7.

Elastic Observability

8.

ソフトウェアの開発⽅法とデリバリーは常に進化 CI / CD サーバレス コンテナ オーケストレーション マイクロ サービス クラウド

9.

現状 ー 典型的なオブザーバビリティのツール群 運⽤: ログ監視 ログツール ウェブログ アプリログ データベース ログ コンテナログ 運⽤︓ インフラ監視 メトリック ツール コンテナ指標 ホスト指標 データベース指標 ネットワーク指標 ストレージ指標 開発チーム 運⽤︓ サービス監視 ビジネス チーム APM ツール アップタイム ツール ビジネスツール リアルユーザー監視 トランザクション パフォーマンス監視 分散トレーシング 可動性 応答時間 ビジネス KPI

10.

Elastic のオブザーバビリティへのアプローチ 開発、運⽤、ビジネスチーム ログデータ 指標データ APM データ アップタイム データ ビジネス データ 全ての運⽤にまつわるデータを、 ⼀つの強⼒なデータストアに集約 - Elasticsearch

11.

Elastic Observability 単⼀のオープンプラットフォームによる完全な可視性を ⼿頃な価格で提供し、 MTTR (データ・分析結果を得るまでの平均時間) をゼロに近づける

12.

Application Performance Monitoring (APM) • • ログ、APM、インフラメトリックは監視の3⼤要素 • 3つの領域には重なり合う部分もあり相互に関連付ける際に 役⽴つ • ログはエラーが⽣じた痕跡のみでエラーの理由までは⽰さない • メトリックはサーバー上で CPU 使⽤量にスパイクがあったこと を⽰すかもしれないが、何が原因だったかは⽰さない • ログやメトリックは、インフラや複数のコンポーネントを扱う横断 的なデータ • うまく組み合わせて活⽤すれば、はるかに広い範囲の問題を 解決できる可能性がある APM はメトリックとログのギャップに橋を架ける存在

13.

Elastic Application Performance Monitoring • マルチページ、シングルページ、双⽅のアプリで有効 • Node.js、Python、Ruby、.NET、 Java、Go、 PHP、Real User Monitoring(JS SPA) • 対応⾔語のさらなる追加も予定 • Elastic がサポートする⾔語はこちら • Jaeger や OpenTelemetry 等各種のオープン スタンダードもサポート • インストルメンテーション済みのアプリから Elastic APM へ驚くほど簡単にデータを送れる • 必要なモジュールが⾒つからなくても独⾃に開発も、 オープンソースコミュニティの成果物の活⽤も可能 • APM から応答時間ベース Machine Learning ジョブを作成する機能もあり

14.

Elastic and HashiCorp

15.

Elastic and HashiCorp partner to bring infrastructure-as-code to Elastic Cloud https://www.elastic.co/jp/blog/elastic-hashicorp-partner-to-bring-infrastructure-as-code-to-elastic-cloud

16.

Elastic社とHashiCorp 社が提携し Elastic Cloud でInfrastructure-as-code を可能に • Elastic Cloud ⽤ Terraform 検証済みプロバイダー • Elastic Cloud • Elastic Cloud Enterprise • Elastic Cloud on Kubernetes • Elastic Cloud Terraform プロバイダの使⽤ • • • • • 同じ⾃動化コードを使⽤してデプロイメントを実施可能 オンプレミス or 全パブリッククラウド(AWS/Azure/GCP)で実⾏できる このプロバイダはベータ版 beta version がベース オートスケーリング autoscaling やデプロイメントエイリアスなどの Elastic Cloud の機能を活⽤できる 新しいデプロイメント拡張機能を利⽤して ARM64 デバイス上でプロバイダを実⾏できる

17.

デプロイメントのオートスケーリング • Terraform プロバイダを使⽤することにより、デプロイメントのトポロジーやデータ層の構成に かかわらず、デプロイメントの⾃動スケーリングポリシーを制御および変更できる • サイズを動的に拡張するデプロイメントを作成することで、デプロイメントのパフォーマンスと 信頼性を維持することができる • リソースの使⽤量が増えると、リソースの容量も増える

18.

デプロイメントエイリアス • デプロイメントエンドポイントのエイリアス deployment endpoint alias を 作成 • インターネット経由で利⽤可能なユーザー指定の名前でデプロイメントにアクセスできる • 変数と tfvars ファイルを使⽤したデプロイメントのエイリアス管理 • クラスタ名をコードとして管理することで管理のオーバーヘッドを削減し Beat クライアントの構成管理が可能 • デプロイメントエイリアスとオートスケーリングはデプロイメントの Terraform リソース で設定可能

19.

デプロイメントエイリアス resource "ec_deployment" "example_minimal" { region = "us-east-1" name = "my-example-deployment" // The deployment can be reached on:// myalias.es.us-east-1.aws.cloud.es.io:9423 alias = "my-alias" version = "7.14" deployment_template_id = "aws-io-optimized-v2" elasticsearch { autoscale = "true" topology { id = "cold" size = "8g" } topology { id = "hot_content" size = "8g" autoscaling { // Optionally change the policy max size. max_size = "59g" } --- --} topology { id = "warm" size = "8g" } } kibana {} apm {} enterprise_search {} }

20.

デプロイメントエクステンションと ARM 64 デバイスサポート • デプロイメントエクステンション deployment extensions • Elastic プラグインやスクリプトバンドルを管理・アップロード • 新しいリソースタイプ ec_deployment_extension を使⽤ • Elastic Cloud 上でデプロイメントエクステンションやプラグインをアップロード/管理できる • Elastic Cloud Terraform プロバイダは ARM 64 デバイスにネイティブ対応 • M1 チップ 搭載 Apple MacBook 等最新デバイスからコードとしてインフラを実⾏可能

21.

プロバイダーを使い始める • • • • Terraform Registry にアクセス プロバイダーのドキュメントや機能が調べられる Terraform を使って Elastic Cloud のデプロイメントを管理できる HashiCorp 社は Terraform Cloud のリモートステートストレージを無料 で提供

22.

Terraform による Azure Kubernetes Service クラスター作成

23.

Terraform を使⽤して Azure Kubernetes Service で Kubernetes クラスターを作成 https://docs.microsoft.com/ja-jp/azure/developer/terraform/create-k8s-cluster-with-tf-and-aks Azure Kubernetes Service (AKS) • コンテナオーケストレーションの専⾨知識があまり必要ない コンテナー化されたアプリケーションをデプロイして管理可能 アプリをオフラインにせず、多くの⼀般的なメンテナンス操作 を実⾏可能 • • • • 必要なリソースのプロビジョニング、アップグレード、スケーリングなど 次のタスクが必要︓ • • • • HCL (HashiCorp ⾔語) を使⽤した Kubernetes クラスターの定義 AKS と Terraform を使⽤した Kubernetes クラスターの作成 kubectl ツールを使⽤した Kubernetes クラスターの 可⽤性のテスト

24.

前提条件 Terraform および Azure へのアクセスの構成 Azure CLI で Azure サービス プリンシパルを作成する

25.

Terraform 構成ファイルを保持するディレクトリの作成 //ディレクトリを clouddrive ディレクトリに変更 cd clouddrive //terraform-aks-k8s という名前のディレクトリを作成 mkdir terraform-aks-k8s //新しいディレクトリに移動 cd terraform-aks-k8s

26.

Azure プロバイダーを宣⾔する Terraform 構成ファイルの作成 • Bash //Cloud Shell で main.tf という名前のファイルを作成 code main.tf • HashiCorp Configuration Language //HashiCorp Configuration Language provider "azurerm" { # The "feature" block is required for AzureRM provider 2.x. # If you are using version 1.x, the "features" block is not allowed. version = "~>2.0" features {} } terraform { backend "azurerm" {} }

27.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 – 概要 クラスター名前、場所、およびリソースグループ名を設定 完全修飾ドメイン名 (FQDN) のプレフィックスも設定 • • • FQDN は、クラスターへのアクセスに使⽤される linux_profile レコードを使⽤すると、SSH を使⽤してワーカーノードにサインインできる設 定を構成できる AKS ではワーカーノードのみについて課⾦される • • • • • default_node_pool レコードでは、これらのワーカーノードの詳細を構成する default_node_pool レコードには、作成するワーカーノードの数とワーカーノードの種類が含まれる 将来クラスターをスケールアップまたはスケールダウンする必要ある場合は、このレコードの count 値を変更

28.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 - 1 • Bash //Cloud Shell で k8s.tf という名前のファイルを作成 code k8s.tf

29.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 - 2 • HashiCorp Configuration Language resource "azurerm_resource_group" "k8s" { name = var.resource_group_name location = var.location } resource "random_id" "log_analytics_workspace_name_suffix" { byte_length = 8 } resource "azurerm_log_analytics_workspace" "test" { # The WorkSpace name has to be unique across the whole of azure, not just the current subscription/tenant. name = "${var.log_analytics_workspace_name}${random_id.log_analytics_workspace_name_suffix.dec}" location = var.log_analytics_workspace_location resource_group_name = azurerm_resource_group.k8s.name sku = var.log_analytics_workspace_sku } ---

30.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 - 3 • HashiCorp Configuration Language resource "azurerm_log_analytics_solution" "test" { solution_name = "ContainerInsights" location = azurerm_log_analytics_workspace.test.location resource_group_name = azurerm_resource_group.k8s.name workspace_resource_id = azurerm_log_analytics_workspace.test.id workspace_name = azurerm_log_analytics_workspace.test.name } --- plan { publisher = "Microsoft" product = "OMSGallery/ContainerInsights" }

31.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 - 4 • HashiCorp Configuration Language resource "azurerm_kubernetes_cluster" "k8s" { name = var.cluster_name location = azurerm_resource_group.k8s.location resource_group_name = azurerm_resource_group.k8s.name dns_prefix = var.dns_prefix --- linux_profile { admin_username = "ubuntu" ssh_key { key_data = file(var.ssh_public_key) } } default_node_pool { name = "agentpool" node_count = var.agent_count vm_size = "Standard_D2_v2" }

32.

Kubernetes クラスターのリソースを宣⾔する Terraform 構成ファイルを作成 - 5 • } HashiCorp Configuration Language service_principal { client_id = var.client_id client_secret = var.client_secret } addon_profile { oms_agent { enabled = true log_analytics_workspace_id = azurerm_log_analytics_workspace.test.id } } network_profile { load_balancer_sku = "Standard" network_plugin = "kubenet" } tags = { Environment = "Development" }

33.

Cloud Shell で variables.tf という名前のファイルを作成 • HashiCorp Configuration Language variable "client_id" {} variable "client_secret" {} variable "agent_count" { default = 3 } variable "ssh_public_key" { default = "~/.ssh/id_rsa.pub" } variable "dns_prefix" { default = "k8stest" } variable cluster_name { default = "k8stest" } --- variable resource_group_name { default = "azure-k8stest" } variable location { default = "Central US" } variable log_analytics_workspace_name { default = "testLogAnalyticsWorkspaceName" } # refer https://azure.microsoft.com/globalinfrastructure/services/?products=monitor for log analytics available regions variable log_analytics_workspace_location { default = "eastus" } # refer https://azure.microsoft.com/pricing/details/monitor/ for log analytics pricing variable log_analytics_workspace_sku { default = "PerGB2018" }

34.

Terraform 出⼒ファイルを作成 – 概要 Terraform 出⼒ • terraform output コマンドを使⽤してクエリできる kubectl

35.

Terraform 出⼒ファイルを作成 – 1 • Bash //Cloud Shell で output.tf という名前のファイルを作成 code output.tf

36.

Terraform 出⼒ファイルを作成 – 2 • HashiCorp Configuration Language output "client_key" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.client_key } output "client_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.client_certificate } output "cluster_ca_certificate" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.cluster_ca_certificate } output "cluster_username" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.username } output "cluster_password" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.password } output "kube_config" { value = azurerm_kubernetes_cluster.k8s.kube_config_raw } output "host" { value = azurerm_kubernetes_cluster.k8s.kube_config.0.host }

37.

Terraform 状態を保存する Azure Storage セットアップ -1 • • このパターンは 1 名の環境に適する マルチユーザー環境では、状態の追跡に Azure ストレージが使⽤される • • ストレージアカウント情報 (アカウント名とアカウント キー) を取得 Terraform 状態の情報を格納するストレージコンテナーを作成

38.

Terraform 状態を保存する Azure Storage セットアップ -2 • • たとえば、最初に Cloud Shell を開いたときに作成したストレージ アカウントを使⽤できる 通常、Cloud Shell によって作成されたストレージアカウント名は cs の後に数字と⽂字のランダムな⽂字列

39.

Terraform 状態を保存する Azure Storage セットアップ -3 az storage container create -n tfstate --account-name <YourAzureStorageAccountName> --account-key <YourAzureStorageAccountKey>

40.

Kubernetes クラスターの作成 - 1 • Bash terraform init -backendconfig="storage_account_name=<YourAzureStorageAccountName>" -backend-config="container_name=tfstate" -backend-config="access_key=<YourStorageAccountAccessKey>” -backend-config="key=codelab.microsoft.tfstate" • terraform init コマンドでバックエンド およびプロバイダープラグインの初期化 の成功を確認

41.

Kubernetes クラスターの作成 - 2 • Bash //サービスプリンシパルの資格情報をエクスポート //プレースホルダーを⾃分のサービスプリンシパルの適切な値に置き換え export TF_VAR_client_id=<service-principal-appid> export TF_VAR_client_secret=<service-principal-password> //terraform plan コマンドを実⾏して、インフラストラクチャ要素を定義する Terraform プランを作成 terraform plan -out out.plan • terraform plan コマンドを実⾏ したときに作成されるリソースが表⽰ される

42.

• Kubernetes クラスターの作成 - 3 Bash //terraform apply コマンドを実⾏して、プランを適⽤し、Kubernetes クラスターを作成 terraform apply out.plan • terraform apply コマンドにより構成ファイル に定義されたリソースの作成結果が表⽰ • Azure portal 左側のメニューの [すべての リソース] を選択すると新しい Kubernetes クラスターに対して作成されたリソースが表⽰

43.

Kubernetes クラスターのテスト • Bash //Terraform 状態から Kubernetes 構成を取得し、kubectl が読み取れるファイルに格納 echo "$(terraform output kube_config)" > ./azurek8s //kubectl が正しい構成を選択できるように環境変数を設定 export KUBECONFIG=./azurek8s ワーカー ノードの詳細を確認してください。次の図のように、すべてのステータスが Ready に なっている必要があります。 //クラスターの正常性を確認 • kubectl get nodes • ワーカーノードの詳細を確認 (すべてのステータスが Ready になっている)

44.

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

45.

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

46.

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

47.

本来のサンプルアプリのデプロイの⼿順 //Debian 9, 2-4 CPUs, 8-16GB RAM, 80GB disk を準備(オリジナル) //Elastic Cloud cluster with APM server and Kibana をセットアップ # - cloud.auth, cloud.id, apm.token, apm.url //依存関係のインストール sudo apt install git tmux -y //コードをチェックアウト git clone https://github.com/michaelhyatt/k8so11y-workshop.git … //minikube と依存関係をインストールする $HOME/k8s-o11y-workshop/install/installdebian9.sh //Petclinic アプリの Docker イメージをビルドする cd ~/k8s-o11y-workshop docker build -t petclinic docker/petclinic //minikube をローカルで起動する $HOME/k8s-o11yworkshop/install/start_k8s.sh

48.

Elastic Cloud on Azure デプロイ https://www.elastic.co/jp/

49.

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

50.

Kibana 起動時の認証情報をダウンロード (.csv)

51.

Elasticsearch エンドポイントデータをコピー ID : (固定) elastic Password : (デプロイ時に取得 → DL) (例) RHGj80iJUO6CF7WBUMiwyu1x Endpoint : (デプロイ後に取得) (例) 8009bf958b6w5923b3c56983d4048df8 24.japaneast.azure.elasticcloud.com:9243

52.

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/

53.

Secrets の設定、Beats のセットアップ • Bash //create_secrets.sh を更新する(例) cloud_id=bmGsZY76lXN0LmF6dXJlLmVsYXN0aWMtY2xvdWQuY31u9jkyN DMkNzAwN2JmJi53jllMHGxEYI0ZDM1NDczOTM0XY75MDMkZjMyNTNhMmNm M2U3NDYyYThkZTcwOWNmYXYlOTBjNjc= cloud_auth=elastic:oGKMG79iFXGNhg68VdBFiwm2x apm_url=https://887a6b5ab5ab316ub38f02482f792527.apm.japan east.azure.elastic-cloud.com apm_token=ef36MGhyODxuMZuNkBF6

54.

Secrets の設定、Beats のセットアップ • Bash //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

55.

デプロイメントエイリアス resource "ec_deployment" "example_minimal" { region = "us-east-1" name = "my-example-deployment" // The deployment can be reached on:// myalias.es.us-east-1.aws.cloud.es.io:9423 alias = "my-alias" version = "7.14" deployment_template_id = "aws-io-optimized-v2" elasticsearch { autoscale = "true" topology { id = "cold" size = "8g" } topology { id = "hot_content" size = "8g" autoscaling { // Optionally change the policy max size. max_size = "59g" } --- --} topology { id = "warm" size = "8g" } } kibana {} apm {} enterprise_search {} }

56.

Elastic Observability サンプルアプリ on AKS https://github.com/michaelhyatt/k8s-o11y-workshop MySQL APM 東⽇本リージョン マスターノード x 1 データノード x 2 ML ノード x 1 https://f79...c67.japaneast.azure.elastic-cloud.com:9243/ Elastic Cloud packetbeat metricbeat Azure Kubernetes Service (AKS) filebeat

57.

Elastic x Azure 統合による Observability と APM の進化

58.

Azure x Elastic Deep Integration Building towards a delightful and powerful Elastic on Azure user experience: Evaluate Requirements Customer Engagement Build Together Goals: • • • • 完全にサポートされ、統合された製品のポート フォリオをお客様に提供 Azure での Elasticsearch Services の 検出とデプロイに関する統合エクスペリエンス SSO を介した Azure と Elastic Cloud の シームレスなポータル エクスペリエンス Azure でのファーストクラスのサービスと機能の 提供について柔軟に対応を促進する – プライベート リンク、ログ転送、Kibana ビジュアライゼーション Elastic Grow Extend Support

59.

ネイティブ統合の Next Step ● ● ● ● より多くの Region のサポート 多くの Azure サービスとのより 深い統合 Azure Active Directory との 統合 その他 フィードバックはこちらまで : ela.st/azure

60.

Microsoft Japan Digital Days (10/12-14) https://www.microsoft.com/ja-jp/events/top/digital-days.aspx

61.

まとめ

62.

まとめ l l l l l l Elastic 概要 Elastic Observability Elastic and HashiCorp Terraform による Azure Kubernetes Service クラスター 作成 Elastic Cloud on Azure へのサンプルアプリのデプロイ Elastic x Azure 統合による Observability と APM の進化

63.

リソース • 公式ドキュメント • APM https://www.elastic.co/guide/index.html https://www.elastic.co/jp/apm/ • クラウドネイティブ アプリでの Elasticsearch • Configuration on .NET Core https://docs.microsoft.com/ja-jp/dotnet/architecture/cloudnative/elastic-search-in-azure https://www.elastic.co/guide/en/apm/agent/dotnet/current/co nfiguration-on-asp-net-core.html • Azure での検索データ ストアの選択 • ASP.NET Core Quick Start https://docs.microsoft.com/ja-jp/azure/architecture/dataguide/technology-choices/search-options • Elastic APM Agent https://www.elastic.co/guide/en/apm/agent/index.html • Reactivesearch https://opensource.appbase.io/reactivesearch/ • 優れた React 検索エクスペリエンスを迅速に構築する ⽅法 https://www.elastic.co/jp/blog/how-to-build-great-reactsearch-experiences-quickly • Search UI Elastic GitHub レポジトリ https://github.com/elastic/search-ui https://www.elastic.co/guide/en/apm/agent/dotnet/current/set up-asp-net-core.html • K8s Observability サンプルソリューション GitHub レポジトリ https://github.com/michaelhyatt/k8s-o11y-workshop • 関連ブログ https://www.elastic.co/jp/blog/kubernetes-observabilitytutorial-k8s-cluster-setup-demo-app-deployment https://www.elastic.co/blog/kubernetes-observability-tutorialk8s-log-monitoring-and-analysis-elastic-stack https://www.elastic.co/blog/kubernetes-observability-tutorialk8s-metrics-collection-and-analysis https://www.elastic.co/blog/kubernetes-observability-tutorialk8s-monitoring-application-performance-with-elastic-apm

64.

Thank you for your attention!