はじめに
この記事はDatadog Advent Calendar 2019の12/9分になります。
今年リリースした弊社のサービスでdatadog logsを初めて使い、その便利さと手軽さにやられてしまった勢になります。
やっぱりサーバーメトリクスとログを一緒に見れるというのは強い。
その中でも
書いた事
RDSのログをCloudwatch logsへ出力し、lambdaを経由してDatadog logsへ流す手順。
terraformで書いているのでついでに晒します。
slowquery log送信手順
データの流れと作成するもののイメージです。
1. 転送用のLambdaの用意
公式マニュアルでは2つのパターンが書かれています。
- Datadog-Log-Forwarderをデプロイするパターン
- 手動で作成し、lambda_function.pyをuploadするパターン
今回は2.のコードを元にterraformで作成することにしました。
lambdaはterraformで管理するか否か別れるとこだと思いますが、基本変更無いコードでもあるので、
モジュールとして作成し、各アカウント共通で使用するようにしています。
サンプルとしてgithubにあげました。
このサンプルではDatadogのAPIキーをパラメーターストアから取得するようにしています。(こちらの管理の都合上・・・)
2. RDSのクラスター設定でCloudWatch Logsにslowqueryを出力する。
手動で作成済みな場合はコンソール、CLI好きなように。
参考: https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html#USER_LogAccess.MySQLDB.PublishtoCloudWatchLogs
terraformでdb作成している場合はenabled_cloudwatch_logs_exports
を設定するのみ。
https://www.terraform.io/docs/providers/aws/r/rds_cluster.html
aurora clusterのサンプル
resource "aws_rds_cluster" "master" {
cluster_identifier = "hoge-master"
availability_zones = [var.rds_region.writer, var.rds_region.reader]
db_cluster_parameter_group_name = "hoge-aurora-cluster"
vpc_security_group_ids = ["${aws_security_group.rds.id}"]
backup_retention_period = 7
preferred_backup_window = "17:00-18:00"
preferred_maintenance_window = "sun:19:00-sun:19:30"
master_username = "${var.mysql_user}"
master_password = "${var.mysql_pass}"
skip_final_snapshot = "false"
final_snapshot_identifier = "hoge-final"
db_subnet_group_name = "${aws_db_subnet_group.main.id}"
enabled_cloudwatch_logs_exports = ["error", "slowquery"] ← ここ
# Aurora(mysql5.7)
engine = "aurora-mysql"
engine_version = "5.7.mysql_aurora.2.04.6"
lifecycle {
ignore_changes = [
"availability_zones",
]
}
tags = {
Env = var.environment
Monitor = "datadog"
}
}
3. terraformでlambdaのtriggerを作成
公式マニュアルのMANUALLY SETUP TRIGGERSの部分になります。
こちらも長くなるので、terraformのサンプルをgithubにあげました。
モジュールとしてそのまま使用できます。
CloudWatch Logsのロググループから、指定したLambdaへログを流すというものなので、本件以外での活用も可能です。
まとめ
ログを流すとこまで、としましたがdatadog側で可視化する手順としては、
Datadog Log Managementを使ってRDSのSlowQueryを可視化する
の記事を参考にさせていただいた為、これ以上書くと同じことを書いてしまうと思いここまでとします。
Grok Parserでのサンプルは大変有用で助かりました。
この場を借りて@syogunさんへ感謝させていただきたいと思います。
今回公開したgithubのサンプルはいずれterraform registoryにpublishしたいです。
それでは皆さま、良いdatadogライフを!!!