はじめに
みなさんこんにちは!
突然ですが、Dynatraceをご存知でしょうか。Dynatraceは、ガートナーのオブザーバビリティプラットフォーム部門のマジック・クアドラントにおいてリーダーに選出されているオブザーバビリティツールです。今回は、Google Cloudで取得したメトリクスやログをDynatraceへ連携する方法についてご紹介します。
全体像
全体像は以下の通りです。Dynatrace との連携はGKEクラスタ上にデプロイしたdynatrace-gcp-monitor
コンテナを介して行います。ログはPub/Subトピックを経由し、メトリクスはPub/Subトピックを経由せずコンテナに連携されます。Pub/Subトピックやコンテナの作成については専用のシェルスクリプトが用意されおり、簡単にデプロイできます。
作業の流れ
作業の流れは以下の通りです。基本的にはCloud Shell上でコマンドを実行することで設定が完了しますが、一部DynatraceやGoogle Cloudのコンソール上での操作が必要となります。
(●:Google Cloudで実施する作業、■:Dynatraceで実施する作業)
- IAMロール作成 ●
- ログエクスポート用Pub/Subトピック作成用のスクリプト実行 ●
- ログシンクの設定 ●
- アクセストークン発行 ■
- Helm デプロイ パッケージをダウンロード・展開 ●
- パラメータ設定 ●
- デプロイスクリプトを実行 ●
1.IAMロール作成
Google Cloudでの作業に必要なIAMロールを作成し、ユーザに割り当てます。ロールを定義したyamlファイルを作成した上で、公式ガイドのGCP permissionsに記載されている、以下コマンドを実行します。
gcloud iam roles create <ロール名> --project=<プロジェクトID>--file=<ロールを定義したyamlファイル>
yamlファイルの内容
title: Dynatrace GCP Monitor helm deployment role
description: Role for Dynatrace GCP Monitor helm and pubsub deployment
stage: GA
includedPermissions:
- container.clusters.get
- container.configMaps.create
- container.configMaps.delete
- container.configMaps.get
- container.configMaps.update
- container.deployments.create
- container.deployments.delete
- container.deployments.get
- container.deployments.update
- container.namespaces.create
- container.namespaces.get
- container.pods.get
- container.pods.list
- container.secrets.create
- container.secrets.delete
- container.secrets.get
- container.secrets.list
- container.secrets.update
- container.serviceAccounts.create
- container.serviceAccounts.delete
- container.serviceAccounts.get
- iam.roles.create
- iam.roles.list
- iam.roles.update
- iam.serviceAccounts.actAs
- iam.serviceAccounts.create
- iam.serviceAccounts.getIamPolicy
- iam.serviceAccounts.list
- iam.serviceAccounts.setIamPolicy
- pubsub.subscriptions.create
- pubsub.subscriptions.get
- pubsub.subscriptions.list
- pubsub.topics.attachSubscription
- pubsub.topics.create
- pubsub.topics.getIamPolicy
- pubsub.topics.list
- pubsub.topics.setIamPolicy
- pubsub.topics.update
- resourcemanager.projects.get
- resourcemanager.projects.getIamPolicy
- resourcemanager.projects.setIamPolicy
- serviceusage.services.enable
- serviceusage.services.get
- serviceusage.services.list
- serviceusage.services.use
ユーザへのIAMロールの割り当ては、[IAMと管理]→[IAM]より対象のユーザのプリンシパルを編集します。編集画面の「+別のロールを追加」より、先ほど作成したIAMロールを選択します。
2.ログエクスポート用Pub/Subトピック作成用のスクリプト実行
Cloud ShellでPub/Subトピック作成用のスクリプトをダウンロードし、実行します。公式ガイドのConfigure log exportに記載されている、以下コマンドを実行しました。
wget https://raw.githubusercontent.com/dynatrace-oss/dynatrace-gcp-monitor/master/scripts/deploy-pubsub.sh
chmod +x deploy-pubsub.sh
./deploy-pubsub.sh --topic-name <任意のトピック名> --subscription-name <作業対象のGoogle Cloud サブスクリプション名>
3.ログシンクの設定
2で作成したPub/Subトピックに対してログを転送するために、ログシンクを設定します。[オブザーバビリティ]→[ログルーター]→[シンクを作成]よりログシンクを作成します。「シンクに含めるログの選択」で転送するログを絞り込むことができます。今回は、DynatraceとGoogle Cloud連携用のGKEクラスタに関するログを対象としました。実際の画面は以下の通りです。
4.アクセストークン発行
連携に必要なDynatraceのアクセストークンの発行を[Access Tokens]→[新規トークンの生成]より行います。今回は、既に連携用のテンプレート(GCP サービス モニタリング)が用意されていたのでそちらを選択しました。詳細は公式ガイドのDynatrace permissionsを参照ください。
作成後に表示されるアクセストークンは「6.パラメータ設定」で使用するのでメモしておきましょう。
5.Helm デプロイ パッケージをダウンロード・展開
Cloud Shellでコンテナをデプロイするために必要なパッケージをダウンロード・展開します。公式ガイドのDownload the Helm deployment package in Google Cloud Shellに記載されているコマンドを実行しました。
wget -q "https://github.com/dynatrace-oss/dynatrace-gcp-monitor/releases/latest/download/helm-deployment-package.tar"; tar -xvf helm-deployment-package.tar; chmod +x helm-deployment-package/deploy-helm.sh
6.パラメータ設定
Cloud Shellで、5にてダウンロード・展開した、helm-deployment-package/dynatrace-gcp-monitor/values.yaml
を編集してパラメータを設定します。必須パラメータは以下の通りです。その他のパラメータについては公式ガイドのConfigure parameter valuesを参照ください。
-
gcpProjectId
連携対象となるGoogle CloudのプロジェクトID -
deploymentType
Dynatraceに連携する対象(logs
metrics
all
から選択) -
dynatraceAccessKey
「4.アクセストークン発行」で発行したDynatraceのアクセストークン -
dynatraceUrl
DynatraceコンソールのURL(赤枠部分が該当)
-
logsSubscriptionId
3で作成したログシンクのサブスクリプション([Pub/Sub]→[サブスクリプション]より確認、赤枠部分が該当)
7.デプロイスクリプトを実行
Cloud Shellでコンテナをデプロイするためのスクリプトを実行します。今回は、公式ガイドのRun the deployment scriptに記載されている以下コマンドを実行しました。
cd helm-deployment-package
./deploy-helm.sh --create-autopilot-cluster
実行前にデフォルトのリージョンを設定していないと以下エラーが発生するので注意してください。今回はエラーメッセージの指示に従って、東京リージョン(asia-northeast1
)を指定しました。
ERROR: Default region not set. Set default region by running 'gcloud config set compute/region <REGION>'.
実行後、Dynatrace上でログやメトリクスが表示されていれば、連携完了です。ログ画面の場合は以下のように、「GCP」タブよりインスタンス名やプロジェクトIDなどが選択できるようになります。
終わりに
いかがでしたでしょうか。今回はGoogle Cloudで取得したメトリクスやログをDynatraceへ連携する方法についてご紹介しました。専用のシェルスクリプトが用意されており、少ないコンソール操作で簡単に連携できる点が魅力的だと感じました。みなさんも試してみてはいかがでしょうか。この記事が参考になりましたら、「いいね」や「記事のストック」をしていただけると嬉しいです!
- Dynatrace は、米国その他の諸国における Dynatrace LLC またはその関連会社の商標です。
- Google Cloud は、Google LLC の商標または登録商標です。
- その他、記載されている会社名および商品・製品・サービス名は、各社の商標または登録商標です。