このリポジトリには、Hands-On Autonomous Cloud Sessionのラボが含まれています。あなたの環境にアクセスするために必要な情報を提供します。

ハンズオンのために、参加者のために手順を自動化し、シームレスにします。

以下のものが提供されます。

ACM-Setup

事前準備

ACM-Setup

学習内容

Jenkinsへのログイン

メールに記載されている認証情報を使って、WebブラウザでJenkins環境にアクセスします。

Jenkins-Setup

パイプラインの構築

ログインしたら、リストの中の "DeploySockShop"にマウスオーバーし、下矢印をクリックして "Build Now"を選択します。

Jenkins-Setup

このプロセスは1~2分程度かかりますので、そのまま実行させます。

終了後、再び「DeploySockshop」をクリックすると、パイプラインビルドの様々な段階を確認することができます。

Jenkins-Setup

これはあくまでもパイプラインが動作しているデモなので、完了するまで待つ必要はありません。

Kubernetes インスタンスへのログイン

SSHターミナル(Putty、Terminal、MobaXtermなど)を使ってKubernetesサーバーにログインします。

メールに記載されている認証情報を使って、Kubernetes環境にアクセスします。

ログイン後、以下のコマンドを実行してKeptnをインストールします
。 Keptnのセットアップの一部は、以下のシェルスクリプトで自動化されています。

cd dtacmworkshop/keptn
sudo ./installKeptn.sh

Keptn-Setup

Keptnは、セットアップに必要なコンポーネントをインストールします。 セットアップには2~3分かかります。

Keptn-Setup

セットアップが完了したら、次のステップで必要となるkeptn API tokenをメモしてください。 また、Keptn BridgeとAPI Endpointを使用することもできます。

例e:
KEPTN BRIDGE: http://bridge.keptn.YOUR-IP-ADDRESS.nip.io
KEPTN ENDPOINT: https://api.keptn.YOUR-IP-ADDRESS.nip.io/swagger-ui/

Keptn-Setup Keptn APIのSwagger UIを表示するには、最後に「/swagger-ui/」を付けることに注意してください。

Keptn-Setup 現在、Keptnのブリッジではプロジェクトは動いていませんが、次のステップで作成する予定です。

Jenkins内でのKeptnプラグインの設定

Jenkinsに戻って、Jenkins(左上から)> Manage Jenkins > Configure Systemを選択します。

Plugin-Setup

スクロールダウンして、「Global Properties」の下にあるフィールドに、ターミナルからのKEPTN API Tokenを入力します
。 Save**"をクリックして設定を保存します。

Plugin-Setup

ステップはラボの前に事前に設定されています。プラグインの詳細については、GithubのKeptn Jenkins Shared Libraryを参照してください。

今回はJenkins Pipelineを使って、KeptnでSLI/SLOベースのQuality Gate Evaluationを誘発します。 これは、KeptnのCLIやAPIを使って行うこともできます。

SLI-quality-gate

Jenkins内で、リスト内の "01-qualitygate-evaluation"にマウスオーバーし、下矢印をクリックして "Build Now"を選択します。

Quality-Gate

Jenkinsのデフォルトでは、パイプラインのパラメータをスキャンしていないため、最初のビルドは失敗します。01-qualitygate-evaluation**"をクリックして、パイプラインを掘り下げます。

Quality-Gate

01-qualitygate-evaluation "をクリックし、左メニューの"Build with Parameters "**を選択します。

Quality-Gate

事前に設定したフォームと同様に、Dynatrace内の"evalservice "タグを使用して、SLIとSLOを検証する適切なサービスを特定します。このタグの名前は、Jenkinsパイプラインにパラメータとして渡すことができます。そこで、まずDynatrace内でサービスにタグを付ける必要があります。

Dynatrace環境にログイン

メールに記載されている認証情報を使って、WebブラウザでJenkins環境にアクセスします。
。 初めてDynatraceテナントにアクセスする際には、パスワードを設定する必要があります。

Quality-Gate

Dynatraceにログインすると、あらかじめ設定されたダッシュボードが表示されます。

Dynatrace内でのタグの設定

Quality-Gate

このプレビルドダッシュボードには、様々なポータルに素早くアクセスできるリンクも含まれています。

左側のナビゲーションバーで「Transactions and Services」を選択し、「front-end」サービスを選択します。
。 これは開発または生産サービスのいずれかになります。

Quality-Gate

ドロップダウンメニューの "プロパティとタグ"から "タグの追加"をクリックし、タグとして "evalservice"を入力します。

Jenkinsでパイプラインを構築する

Jenkinsで "Build"ボタンをクリックしてパイプラインを実行します。

Quality-Gate

パイプラインが完了すると、KeptnのブリッジとDynatraceに変更が反映されているのがわかります。 Dynatrace内では、新しいカスタム情報イベントも発見できます。
。 この新しいイベントには、JenkinsからのJobURLやJobName、KeptnのソースやKeptnのブリッジなど、品質ゲートの結果の詳細が含まれています。
。 また、リンクからはJenkinのポータルとKeptnのポータルに移動し、それぞれの詳細情報が表示されます。

Quality-Gate

このハンズオンのセットアップについては、チュートリアルの全文をこちらでご覧いただけます。

パイプラインでの負荷テスト

これは、前回のビルドの拡張バージョンで、パイプラインにはステージの1つに非常にシンプルなロードテスト機能が組み込まれています。

load-test

"Transactions and Services"にアクセスし、"[Kubernetes]stage:dev"タグと "testservice"タグでフィルタリングしてサービスを識別します。

load-test

Jenkinsに戻り、「Back to Dashboard」をクリックすると、Jenkinのパイプラインの一覧に戻ります。
。 リストの中の「02-simpletest-qualitygate」にマウスオーバーし、下矢印をクリックして「Build Now」を選択します。 先ほどの実験のように、最初のビルドは失敗しますが、2回目の試行では「Build with parameters」にドリルインすることができます。

load-test

フォームを次の詳細で変更します:
。 サービスです。テストサービス
DeploymentURI: WebサイトのデプロイメントURL(メールに記載されているもの)
。 URLパスを /:homepage;/category.html:Category

完了したら、"Build"ボタンをクリックして、パイプラインを開始します。

load-test

また、ダッシュボードからCarts DevのURLを取得することもできます。
。 単に右クリックして、リンクアドレスをコピーするだけです。

load-test

完成したら、Keptnのブリッジ/DynatraceのFrontend Service/Jenkinsで変更点を見てみましょう。
計算されたサービスメトリクスに基づいて、追加のSLIを見つけることができます。

load-test

このハンズオンのセットアップの詳細については、完全なチュートリアルをこちらでご覧いただけます。

パイプラインでのパフォーマンステスト

このラボは前回のラボを発展させたもので、Jenkinsのパイプラインの一部としてJenkinsに簡単なテストを実行させました。KeptnはSLI/SLOベースの品質ゲート評価に使用されました。このチュートリアルでは、Keptn を使用して、JMeter を使用した実際のテストの実行も行います。

perf-test

また、テストの実行には、定義されたSLIとして計算されたサービスメトリクスを使用します。 これらのサービスメトリクスの作成は、ラボのセットアップの一部として作成しました。
。 これらのメトリクスは、Settings > Server-side service monitoring > Calculated Service metrics
にあります。

perf-test

これらのメトリクスとその寸法は、SLI の実行中に使用されます。
。 すでに「testservice」タグを追加しているので、Jenkins内で3つ目のパイプラインを実行するだけです。
。 Jenkinsに戻り、「03-performancetest-qualitygate」をクリックします。

以下のようになります。 以下の詳細でフォームを変更します:
。 サービス。テストサービス
DeploymentURI: WebサイトのデプロイメントURL(メールに記載されているもの

perf-test

完了したら、"Build"ボタンをクリックしてパイプラインを開始します。

ダッシュボードからCarts DevのURLを取得することもできます。
。 右クリックしてリンクアドレスをコピーするだけです。

perf-test

完了したら、Keptnのブリッジ/DynatraceのFrontend Service/Jenkinsで変更点を確認できます。
。 Dynatrace内では、品質ゲートのパス結果を生成した自動化されたパフォーマンステストを見ることができます。
。 また、Jenkinsだけでなく、Keptn's bridgeにもコンテキストを掘り下げることができます。

perf-test

ここでは、KeptnのSLI/SLOベースのQuality Gatesを使って自動化することで、SampleApp Sockshopを修正します。

deploy-app

Jenkinsの中で、リストの中の「DeploySockShop」にマウスオーバーし、下矢印をクリックして「Configure」を選択します
。 別のブラウザタブを開き、Dynatrace APAC's Autonomous Cloud's Git Repoにアクセスします。
。 修正したSockShop Jenkinsfile raw file**をコピーして、JenkinsのPipelineセクション内に置き換えます。

deploy-app

保存」をクリックし、「Build with Parameters」のページで「Build Two」を選択してビルドを開始します。

deploy-app

Dynatraceは、Ansibleなどの多くのランブック自動化ツールと統合されています。今回は、Ansibleを使って自己修復問題を紹介し、運用を自動化します。

カートサービスのための負荷の生成

SSHターミナル内で以下のコマンドを実行し、カートサービスのロードを開始します。

cd ~acm_student/dtacmworkshop/utils/
sudo ./cartsLoadTest.sh

Ansible Towerへのログイン

メールに記載されている認証情報を使って、WebブラウザでAnsible環境にアクセスします。

Ansible

Dynatrace問題通知の設定

Ansible内で、左ナビゲーションの「Templates」をクリックし、Remediation Job templateのURLをコピーします。
DynatraceのUIで、設定 > 統合 > 問題通知 > 設定通知 > Ansible Towerに移動します
。 コピーしたAnsible TowerジョブテンプレートのURLを入力します
。 Ansibleにアクセスするための認証情報を入力する(メールで提供されたもの)
。 Sent test notification(テスト通知の送信)」ボタンをクリックして、設定を検証します
。 成功すると、緑色の確認メッセージが表示されます
。 設定の保存

Ansible

異常検知の調整

Dynatraceの問題検知と異常検知には、DynatraceのAI技術「DAVIS」が活用されています。つまり、DAVISは一つ一つのマイクロサービスがどのように振る舞うかを学習し、それらをベースラインとしています。そのため、現在のようなデモシナリオでは、AIエンジンをユーザー定義の値でオーバーライドして、故障率を人為的に増加させることで問題を発生させる必要があります。(注意:アプリケーションを実行し、エンドユーザートラフィックを数時間/数日シミュレートする場合は、このステップは必要ありません)

Dynatraceのテナントで、「Transaction & services」に移動し、タグ「[Kubernetes]stage:prod」でフィルタリングし、ItemsController Serviceを選択します
。 ItemsController Serviceのページで、サービス名の横にある3つのドット( ... )をクリックします。Edit
をクリックします。 次の画面で、anomaly detection settings**を以下のように編集します

Ansible

リメディエーション・プレイブックの起動

Ansible Tower の UI に戻ります。サイドメニューから、Resources -> Templatesに移動します。
。 ロケットアイコン**をクリックして、start-campaign playbookを起動します。
。 プロンプトのポップアップウィンドウで Next をクリックし、Launch をクリックします。
。 プレイブックが実行されると、ステータスが成功したことを確認します。

Ansible

リメディエーションの観察

ItemsControllerに戻って、サービスイベントを見てみましょう。プロモーションレートが50%に変更されたときに、プレイブックがDynatraceに通知しています。

Ansible

失敗率が増加し、最終的には Dynatrace が問題を検出していることがわかります。 何度かブラウザを更新する必要があるかもしれません。

Ansible

新たな問題が発生したことを確認してください。コメント欄には、Ansible Towerによって行われた修復アクションが表示されます

Ansible

問題をドリルダウンします。 Ansible Tower によって報告された新しい構成変更イベントが表示されます。 プロモーションレートが0%に戻され、トランザクションの失敗に修正されました

Ansible

Ansible Tower で実行されたジョブ

Ansible

** 問題解決 - 問題は自動的に解決されました

Ansible

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

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

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

このラボで最も役立ったことは何ですか?

Keptnの設定 JenkinsとDynatrace間のKeptnの統合 自律型クラウドの原理を理解する サービスとしての自己治癒力

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

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