このリポジトリには、Cloud Native Observabilityで実施する内容が含まれています。
Dynatrace主催のハンズオンワークショップへ参加されている方には環境が自動で払い出されます。
この演習では、Kubernetes(Microk8s)を実行しているLinuxインスタンスにDynatrace Operatorをデプロイします。
Linuxインスタンスのターミナルにアクセスします。
ブラウザを開き、DynatraceのGUIにアクセスしてください。
以下の手順で進めてください。
Kubernetes / Openshiftのモニターページ内で、以下の手順を行います。
k8s
vim dynakube.yaml
などを実行し、dynakube.yamlファイルを貼り付けます。出力例
ディプロイメントステータスの表示をクリックすると、接続されているホストの状態を確認することができます。
下の画像のように、接続されたホストが表示されているはずです。
様々なプロセスが自動的に検出されているのがわかりますが、Dynatraceはそれらを再起動するよう促します。これは、コードを変更せずに自動的に監視を行うために必要です。
以下のコマンドを実行して、devとproductionの2つのNamespacesに含まれるPodsを作り直します。
kubectl delete pods --all -n dev
kubectl delete pods --all -n production
Dynatraceにはリリース監視機能が組み込まれており、導入したアプリケーションのバージョンやステージ(名前空間)、プロダクトを判断することが可能です。
メニューからクラウドオートメーション > リリースを開きます。
これは、リリースインベントリ、リリースイベント、追跡された問題点、の概要を示しています。
各コンポーネントの詳細を見ると、それぞれのコンポーネントの追加メタデータが表示されます。 これにより、監視対象のコンポーネントのコンテキスト情報や、コンポーネントのライフサイクルおよび問題の追跡に関する情報を確認できます。
下の画像はcatalogue catalogue-*を開いた例です。
リリースバージョン、ステージ、製品はKubernetesの以下と一致します。
app.kubernetes.io/version
Namespace*
app.kubernetes.io/part-of
基本的なサービスレベル目標(SLO)を設定していきます。Dynatraceが標準で監視しているメトリクスを用いることで簡単に、サービスレベル指標(SLI)を定義し、その閾値としてSLOを設定することができます。
以下の手順で進めてください。
ここでは、Sockshopアプリケーションのproduction名前空間のfrontendに対する可用性に関するSLOを作成します。以下のように使用します。
Sockshop Frontend Error SLO
-1h
(過去1時間)を指定します。type("SERVICE"),tag("[Kubernetes]tier:frontend"),tag("[Kubernetes]stage:prod")
を入力し、プレビューをクリックします。エンティティが1つ表示されていることを確認します。90
%、警告を95
%に設定します。サービスレベル目標が作成され、現在のステータスなどが確認できます。
カスタムメトリックを作成し、それに対するSLOの設定をしていきます。本手順により標準では提供されていない特定のリクエスト毎のSLOを設定することが可能になります。
カタログページへのリクエスト成功数のカスタムメトリックを作成します。
front-end
サービスをクリックします。cataloguesuccesscount
を入力し、メトリックの作成ボタンをクリックします。cataloguecount
を入力し、メトリックの作成ボタンをクリックします。cataloguecount
とします。カスタムメトリックを作成したので、その2つを使用したSLOを設定していきます。
Catalogue Availability SLO
)(100)*(calc:service.cataloguesuccesscount:splitBy():sum)/(calc:service.cataloguecount:splitBy():sum)
と入力します。-5m
(過去5分間)を指定します。ここではダッシュボードにSLOウィジェットを作成し、監視する方法について説明します。
左のナビゲーションバーを参照し、Dashboardsに進みます。Dynatraceには、Kubernetes DashboardsやReal User Monitoringといったダッシュボードのテンプレートがあらかじめ用意されています。
それぞれのダッシュボードにドリルダウンして、アプリオーナーやビジネスユーザー向けの様々なダッシュボードウィジェットを確認できます。
作成したSLOに基づいて、新しいSLOウィジェットを追加します。
SRE向けダッシュボード
を入力し、作成をクリックします。slo
と入力することでサービスレベル目標タイルだけが表示されます。Sockshop Frontend Error SLO
を選択します。Catalogue Availability SLO
も追加します。server successcount
などと入力し、Number of calls without server side errors
を選びます。タグ、[Kubernetes]stage、prod
とタグ、[Kubernetes]tier、frontend
を選択します。Sockshop Frontend 成功リクエスト数
などに変更し、完了をクリックします。(100)*(calc:service.cataloguesuccesscount:splitBy():sum)/(calc:service.cataloguecount:splitBy():sum)
)を入力し、クエリの実行をクリックします。99.95, 100
と入力し、しきい値に以下の値を入力します。 99.99
99.98
0
Sockshop Frontend SLOの推移
などに変更し、完了をクリックします。タイルの右下をドラッグすることでサイズを変更することができるので、見やすい大きさに変更します。 編集が完了したら、完了ボタンをクリックします。
Dynatrace Monitoring as Code (Monaco)を使用して、Dynatraceの設定をコートとして管理することが可能です。
これには以下のようなユースケースがあります。
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_TENANTとDT_API_TOKENとDT_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により、以下の設定が行われたことを確認します。
このラボを楽しんでいただき、お役に立てれば幸いです。ご意見、ご感想をお待ちしております。