CloudWatchのログとメトリクスをgrafanaで確認できるようにする
要件
CloudWatchのログをgrafanaで確認できるようにする
タスク
CloudWatchのログをgrafanaで確認できるようにする
CloudWatchのメトリクスをgrafanaで確認できるようにする
helmでgrafanaを立ち上げる
grafanaのpodからcloudwatchのログが確認できようにRBACの仕組みを使う
以下のようにgrafanaでログを確認できるようにする
以下のようにgrafanaでメトリクスを確認できるようにする
参考記事
▼まずはドキュメント
▼grafanaのhelmのvalues.yamlを確認して、「serviceAccount」の項目を確認する
学べること
grafanaでcloudwatchのログを確認する方法
grafanaでcloudwatchのメトリクスを確認する方法
ヒント
▼irsaの設定方法はいくつかあるのですが、自分は以下のようにterraformで設定しました
module "grafana-policy" {
source = "./modules/grafana_policy"
}
#grafanaからcloudwatchのデータを取得するためのIRSA
module "irsa_grafana" {
source = "github.com/aws-ia/terraform-aws-eks-blueprints//modules/irsa?ref=v4.24.0"
create_kubernetes_namespace = false
kubernetes_namespace = "default"
kubernetes_service_account = "grafana-sa"
irsa_iam_role_name = "grafana_role"
irsa_iam_policies = [module.grafana-policy.policy_arn]
eks_cluster_id = module.eks_blueprints.eks_cluster_id
eks_oidc_provider_arn = module.eks_blueprints.eks_oidc_provider_arn
}
modules/grafana_policy/main.tf
# ------------------------------
# grafanaでcloud watchのログとメトリクスを取得するためのポリシー
# ------------------------------
resource "aws_iam_policy" "this" {
name = "grafana_policy"
policy = jsonencode({
"Version" : "2012-10-17",
"Statement" : [
{
"Sid" : "AllowReadingMetricsFromCloudWatch",
"Effect" : "Allow",
"Action" : [
"cloudwatch:DescribeAlarmsForMetric",
"cloudwatch:DescribeAlarmHistory",
"cloudwatch:DescribeAlarms",
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricData",
"cloudwatch:GetInsightRuleReport"
],
"Resource" : "*"
},
{
"Sid" : "AllowReadingLogsFromCloudWatch",
"Effect" : "Allow",
"Action" : [
"logs:DescribeLogGroups",
"logs:GetLogGroupFields",
"logs:StartQuery",
"logs:StopQuery",
"logs:GetQueryResults",
"logs:GetLogEvents"
],
"Resource" : "*"
},
{
"Sid" : "AllowReadingTagsInstancesRegionsFromEC2",
"Effect" : "Allow",
"Action" : ["ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions"],
"Resource" : "*"
},
{
"Sid" : "AllowReadingResourcesForTags",
"Effect" : "Allow",
"Action" : "tag:GetResources",
"Resource" : "*"
}
]
})
}
modules/grafana_policy/output.tf
output "policy_arn" {
value = aws_iam_policy.this.arn
}
▼grafanaのhelmの設定 自分はhelmfileでgrafanaを作成してます!
helmfile.yaml
releases:
- name: grafana
namespace: default
chart: grafana/grafana
values:
- ./grafana.yaml
grafana.yaml
service:
type: LoadBalancer
port: 4000
serviceAccount:
create: false
name: grafana-sa
annotations:
eks.amazonaws.com/role-arn: "arn:aws:iam::xxxxxxxxxxxx:role/grafana_role"
datasources:
datasources.yaml:
apiVersion: 1
datasources:
- name: CloudWatch
type: cloudwatch
jsonData:
authType: default
defaultRegion: ap-northeast-1
ハマりポイント
cloudwatchのログやメトリクスを取得するためには、cloudwatch用のクエリがあるのでそれを書かないとログを取得できないよ、、
ログのクエリの参考例
メトリクスのクエリの参考例
関連タグ
この記事が気に入ったらサポートをしてみませんか?