このリポジトリには、Cloud Native Observabilityで実施する内容が含まれています。

Dynatrace主催のハンズオンワークショップへ参加されている方には環境が自動で払い出されます。

事前準備

学習内容

この演習では、Kubernetes(Microk8s)を実行しているLinuxインスタンスにDynatrace Operatorをデプロイします。

Linuxターミナルへアクセス

Linuxインスタンスのターミナルにアクセスします。

Dynatrace Operatorのインストール

ブラウザを開き、DynatraceのGUIにアクセスしてください。

以下の手順で進めてください。

Deploy

Kubernetes / Openshiftのモニターページ内で、以下の手順を行います。

Deploy

Deploy

Deploy

Deploy

出力例

Deploy

インストールの確認

ディプロイメントステータスの表示をクリックすると、接続されているホストの状態を確認することができます。

下の画像のように、接続されたホストが表示されているはずです。

Deploy

⚠️ トラブルシューティングの手順

Sockshopアプリケーションの再起動

様々なプロセスが自動的に検出されているのがわかりますが、Dynatraceはそれらを再起動するよう促します。これは、コードを変更せずに自動的に監視を行うために必要です。

以下のコマンドを実行して、devとproductionの2つのNamespacesに含まれるPodsを作り直します。

kubectl delete pods --all -n dev
kubectl delete pods --all -n production

Dynatraceにはリリース監視機能が組み込まれており、導入したアプリケーションのバージョンやステージ(名前空間)、プロダクトを判断することが可能です。

リリースの確認

メニューからクラウドオートメーション > リリースを開きます。

releases

これは、リリースインベントリ、リリースイベント、追跡された問題点、の概要を示しています。

各コンポーネントの詳細を見ると、それぞれのコンポーネントの追加メタデータが表示されます。 これにより、監視対象のコンポーネントのコンテキスト情報や、コンポーネントのライフサイクルおよび問題の追跡に関する情報を確認できます。

下の画像はcatalogue catalogue-*を開いた例です。

releases-detail

リリースバージョン、ステージ、製品はKubernetesの以下と一致します。

k8s-describe

基本的なサービスレベル目標(SLO)を設定していきます。Dynatraceが標準で監視しているメトリクスを用いることで簡単に、サービスレベル指標(SLI)を定義し、その閾値としてSLOを設定することができます。

基礎SLOの作成

以下の手順で進めてください。

basic-slo

ここでは、Sockshopアプリケーションのproduction名前空間のfrontendに対する可用性に関するSLOを作成します。以下のように使用します。

  1. サービスレベル可用性ボタンをクリックします。
  2. 下にスクロールされるので一旦上に戻り、このSLOに名前を付けます:Sockshop Frontend Error SLO
  3. メトリック名やメトリック式はデフォルトのままにしておきます。
  4. フィルターの定義では時間枠のフィルターは-1h(過去1時間)を指定します。
  5. エンティティ セレクターはtype("SERVICE"),tag("[Kubernetes]tier:frontend"),tag("[Kubernetes]stage:prod")を入力し、プレビューをクリックします。エンティティが1つ表示されていることを確認します。
  6. 成功条件の追加では、ターゲットを90%、警告を95%に設定します。
  7. 評価ボタンをクリックし、グラフが表示されることを確認します。
  8. 作成ボタンをクリックして、SLOを作成します。

basic-slo

サービスレベル目標が作成され、現在のステータスなどが確認できます。

basic-slo

カスタムメトリックを作成し、それに対するSLOの設定をしていきます。本手順により標準では提供されていない特定のリクエスト毎のSLOを設定することが可能になります。

カタログページのメトリック作成

カタログページへのリクエスト成功数のカスタムメトリックを作成します。

service

custom-metric

custom-metric

カタログ用SLOの作成

カスタムメトリックを作成したので、その2つを使用したSLOを設定していきます。

  1. メニューからクラウドオートメーション > サービス レベル目標を開きます。
  2. 画面右上の新しいSLOの追加ボタンをクリックします。
  3. このSLOに名前付けに任意の名前を入力します(例:Catalogue Availability SLO
  4. メトリック式には(100)*(calc:service.cataloguesuccesscount:splitBy():sum)/(calc:service.cataloguecount:splitBy():sum)と入力します。
  5. フィルターの定義では時間枠のフィルターは-5m(過去5分間)を指定します。
  6. エンティティ セレクターはデフォルトで入力されているものを削除します。
  7. 成功条件の追加はデフォルトのままとします。
  8. 評価ボタンをクリックし、グラフが表示されることを確認します。
  9. 作成ボタンをクリックして、SLOを作成します。

slo

ここではダッシュボードにSLOウィジェットを作成し、監視する方法について説明します。

左のナビゲーションバーを参照し、Dashboardsに進みます。Dynatraceには、Kubernetes DashboardsReal User Monitoringといったダッシュボードのテンプレートがあらかじめ用意されています。

それぞれのダッシュボードにドリルダウンして、アプリオーナーやビジネスユーザー向けの様々なダッシュボードウィジェットを確認できます。

k8s dashboard

SLOウィジェットの追加

作成したSLOに基づいて、新しいSLOウィジェットを追加します。

dashboard

dashboard

メトリック・ウィジェットの追加

dashboard

コードによるグラフ・ウィジェットの追加

data-explorer

各タイルのサイズ変更

タイルの右下をドラッグすることでサイズを変更することができるので、見やすい大きさに変更します。 編集が完了したら、完了ボタンをクリックします。

dashboard

Dynatrace Monitoring as Code (Monaco)を使用して、Dynatraceの設定をコートとして管理することが可能です。

これには以下のようなユースケースがあります。

monacoのインストール

monacoはGithubからダウンロードすることができます。

cd sockshop/
curl -L https://github.com/dynatrace-oss/dynatrace-monitoring-as-code/releases/download/v1.7.0/monaco-linux-amd64 -o monaco-cli
chmod +x monaco-cli

monaco-cli helpと入力することでコマンドの詳細を確認することができます。

DT_TENANTDT_API_TOKENDT_DASHBOARD_OWNERの変数を設定します。 これらは、ラボの登録メール内に記載されています。

export DT_TENANT=https://mou612.managed-sprint.dynalabs.io/e/<ENV>
export DT_API_TOKEN=dt0c01.********************************************
export DT_DASHBOARD_OWNER=<your email address>

本演習ではエラーの発生を防ぐため、一部の設定については移動させておきます。

mv monaco/sockshop/azure-credentials /tmp
mv monaco/sockshop/kubernetes-credentials /tmp
mv monaco/sockshop/synthetic-monitor /tmp

以下のコマンドを実行してDynatraceの設定を行います。

export dev_frontend_ip=$(kubectl -n dev get ingresses.networking.k8s.io front-end -o jsonpath='{.spec.rules[0].host}')
export production_frontend_ip=$(kubectl -n production get ingresses.networking.k8s.io front-end -o jsonpath='{.spec.rules[0].host}')
export SKIP_PROMETHEUS=true
./monaco-cli -e=monaco/sockshop-environment.yaml -p=sockshop monaco

Deployment finished without errorsが出力されていれば成功です。

monaco

実行結果の確認

monacoにより、以下の設定が行われたことを確認します。

monaco

このラボを楽しんでいただき、お役に立てれば幸いです。ご意見、ご感想をお待ちしております。

このラボでの全体的な経験はどうでしたか?

とても良い 良い 普通 悪い とても悪い

このラボから最も恩恵を受けたことは何ですか?

KubernetesへのOneAgentの導入 GitOps / コードとしてのモニタリング サービスレベル目標 Releases

このラボを友人や同僚に勧める可能性はどの程度ありますか?

強く勧めたい 勧めたい わからない 勧めない 全く勧めない