0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DynatraceのLog Monitoring v2を使ってAWSのログを監視してみる

Posted at

はじめに

Dynatraceで新しく導入されたLog Monitoring v2を利用することで様々なテクノロジーからログを取り込むことができるようになります。
本記事では、このLog Monitoring v2を利用してAWS Cloudwatch Logsの取得を試してみます。
通常のホストのログやAWS以外にも以下のアーキテクチャに対応しています。

  • オープンソースのフレームワーク(FluentDやLogstash)
  • Kubernetesのログやイベント
  • クラウドプロバイダ(AWS、GCP、Microsoft Azure、Red Hat OpenShift)
  • その他

様々なデバイスやクラウドプロバイダ自身がログを生成しますが、個別にログ監視するのは非常に手間がかかります。Dynatraceのような監視ツールを使うことで以下のようなメリットが生まれます

  • データを一元管理できる。わざわざ個別のデバイスにログインすることなくログの確認が可能
  • 問題発生時に障害が発生したホストだけでなく周辺装置のログ情報も同時に確認可能

Dynatraceでは15日間の無料トライアルを利用することができるので、自分の環境でも簡単に試してみることができます。
Dynatraceフリートライアル

参考URL

Dynatraceの公式サイトに必要な情報がまとまっています。

Set up AWS log forwarding | Dynatrace Documentation
Log Monitoring v2 | Dynatrace Documentation
dynatrace-oss/dynatrace-aws-log-forwarder: AWS log forwarding allows you to stream logs from AWS CloudWatch into Dynatrace logs

前提条件

ログを転送するのに、ActiveGateを経由する必要があります。本手順ではActiveGateはすでに構築済みとして進めますが、インストールスクリプトを実行する際にActiveGateを自動で構築することも可能です。
また、LambdaからActiveGateへアクセスできる必要があるため、ActiveGateの/var/lib/dynatrace/gateway/config/custom.propertiesに以下の設定を追加し、プロセスの再起動を実施します。また、セキュリティグループでTCP: 9999をフルオープンにする必要がございます。

/var/lib/dynatrace/gateway/config/custom.properties
[connectivity]
dnsEntryPoint = https://パブリックDNS名:9999
プロセス再起動
sudo systemctl restart dynatracegateway.service

設定手順

API Token の発行

ログをアップロードするために必要なAPIの発行を行います。

Dynatrace GUI上のSettings > Integration > Dynatrace APIを選びます。
image.png

Type a token nameフィールドにトークン名を入力し、Ingest logsを有効にします。
image.png

Generateボタンをクリックすると、トークンが発行されるので、忘れずにパスワードマネージャなどに保存します。
再表示はできないため、保存を忘れた場合は、再度トークンを発行する必要があります。
image.png

デプロイ

必要なポリシーの確認

CloudFormationにより、ログ取得に必要な設定は自動で実行されますが、AWS CLIを実行する端末に以下のポリシーが割り当てられている必要があります。

CloudFormation実行に必要なポリシー
{
  "Version": "2012-10-17",
  "Statement": [
	{
	  "Sid": "VisualEditor0",
	  "Effect": "Allow",
	  "Action": [
		"cloudformation:CreateChangeSet",
		"cloudformation:ExecuteChangeSet",
		"cloudformation:DescribeChangeSet",
		"cloudformation:DescribeStacks",
		"s3:CreateBucket",
		"s3:PutLifecycleConfiguration",
		"iam:GetRole",
		"iam:CreateRole",
		"iam:AttachRolePolicy",
		"iam:PutRolePolicy",
		"iam:GetRolePolicy",
		"iam:PassRole",
		"lambda:CreateFunction",
		"lambda:UpdateFunctionCode",
		"lambda:GetFunction",
		"lambda:GetFunctionCodeSigningConfig",
		"cloudwatch:PutDashboard",
		"cloudwatch:GetDashboard",
		"firehose:DescribeDeliveryStream",
		"firehose:CreateDeliveryStream",
		"firehose:ListTagsForDeliveryStream",
		"logs:DeleteSubscriptionFilter",
		"logs:DescribeLogGroups",
		"logs:PutSubscriptionFilter"
	  ],
	  "Resource": "*"
	},
	{
	  "Sid": "VisualEditor1",
	  "Effect": "Allow",
	  "Action": [
		"kms:Decrypt",
		"kms:Encrypt",
		"kms:DescribeKey",
		"kms:CreateGrant"
	  ],
	  "Resource": "*",
	  "Condition": {
		"ForAnyValue:StringEquals": {
		  "kms:ResourceAliases": "aws/lambda"
		}
	  }
	}
  ]
}

環境変数の設定

TARGET_URL=https://<ActiveGate のパブリックDNS名>:9999/e/<DynatraceのテナントID>
TARGET_API_TOKEN=<先ほど発行した_API_token>
REQUIRE_VALID_CERTIFICATE=false

インストールスクリプトの実行

wget -O dynatrace-aws-log-forwarder.zip https://github.com/dynatrace-oss/dynatrace-aws-log-forwarder/releases/latest/download/dynatrace-aws-log-forwarder.zip \
 && unzip -qo dynatrace-aws-log-forwarder.zip \
 && ./dynatrace-aws-logs.sh deploy --target-url $TARGET_URL --target-api-token $TARGET_API_TOKEN --use-existing-active-gate true --require-valid-certificate $REQUIRE_VALID_CERTIFICATE

dynatrace-aws-logsというスタック名でCloudFormationが実行されます。
image.png

ロググループの購読

CloudWatchのロググールプからDynatraceへ送りたいロググループを登録します。
image.png

ここではテスト試しに/aws/lambda/testFuncのログを登録してみます。
以下のコマンドを実行することで、ロググループの購読が開始されます。

./dynatrace-aws-logs.sh subscribe --log-groups /aws/lambda/testFunc

ログの確認

CloudWatchに新しいログが出力されるとDynatrace側にも該当ログが送られます。
DynatracenのLog Viewer

image.png

AWS CloudWatchログのログイベント

image.png

まとめ

本記事ではDynatraceで新しく導入されたLog Monitoring v2を使用してAWSのCloudWatchのログをDynatrace側で取得できる方法についてまとめました。
コンテナ環境のログなども含めてログの管理を一元化できるのは大きなメリットがありますので、ぜひ試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?