Memo/Grafana/CloudWatch

https://dexlab.net:443/pukiwiki/index.php?Memo/Grafana/CloudWatch
 

AWS CloudWatch


CloudWatch Logs

  • Grafana v7.0 以降で内蔵のdatasourceで参照できるようになった。
  • IAM Policies でAllowReadingLogsFromCloudWatchが追加になっているので、IAM role等に追加する。
  • Lambdaのログを見たい場合、以下のようなクエリを設定する。
    • Query Mode: CloudWatch Logs
    • Log Groups: /aws/lambda/example
    • query
      fields @timestamp, @message

データがドットで表示される場合

症状:

  • v6.5ではリソースが多かったり、期間が長いとCloudWatch APIの上限で「Too many datapoints requested」エラーが多かったので、期間を短くしたりした。
  • v6.6以降では期間を自動調整して、datapointsを減らすように変更されたようだ。datapointsが減ったので、ドットで表示されるグラフもある。

解決:

  • Visualization > Staking & Null value
    • Null value: connected (デフォルトのnullだと、ドットになる)

S3のBucketSizeBytes, NumberOfObjectsの表示

  • 数日に1回しかメトリクスが出力されないようで、periodが短いと表示されない。2〜7にすると表示された。
  • awscliでの取得方法を参考に。
  • Grafana v6.5.2

BucketSizeBytesの場合:
Queryes:

  • Region: ap-northeast-1
  • Namespace: AWS/S3
  • MetricName: BucketSizeBytes
  • Stats: Sum
  • Dimensions
    • Bucketname = <bucket name>
    • StorageType = StandardStorage (これを忘れると表示されない)

Visualization:

  • Unit: bytes
  • Staking & Null value
    • Null value: connected (デフォルトのnullだと、点になるため指定)

NumberOfObjectsの場合: (同じ箇所は省略)
Queryes:

  • MetricName: NumberOfObjects
  • Stats: Average
  • Dimensions
    • Bucketname = <bucket name>
    • StorageType = AllStorageTypes (これを忘れると表示されない)

Visualization:

  • Unit: short
  • Staking & Null value
    • Null value: connected (デフォルトのnullだと、点になるため指定)

Panel:Query:Expressionの使い方

DataSourceの種類によって、使える関数が異なる。
CloudWatchだと、一つのQueryでは計算ができないので、計算用の別のQueryを使う。
Totalを別metricsとして表示等も出来る。

  • 環境
    • Grafana v6.5.2

例1: metrics A(Byte)の月額金額(1GBあたり、$0.1)を出したい。

  • Query A:
    • Metric Name: ExampleByte
    • id: example_byte (ここで決めたidが、別Queryから参照できる)
    • 非表示にする(目玉アイコンをクリック)
  • Query B:
    • Expression:
      example_byte / 1024 / 1024 / 1024 * 0.1
    • Alias: ExampleByteが複数の種類がある場合に、表示用のラベルとして使える。
      {{label}}

AWS Billingの表示

  • 2019-05-22時点
    • 1日に2回データがCloudWatchに入る
    • 設定有効後の値のみ見える。過去のBillingは見えない。
    • 一括請求が有効な場合、masterアカウントのBillingが初めに見える。3日ほど経過すると、子アカウントのBillingがCloudWatch metricsに入ってくる。
    • 動的にServiceName, LinkedAccountを取得できる。変数として登録するとフィルタのように使えるので便利。Memo/Grafana#geeacc90
    • 子アカウントの名前は入っていない
  • 2019-05-22時点でのCloudWatch メトリクス
    • LinkedAccount: 連結アカウント。アカウント番号
    • ServiceName: サービス名。CloudWatch上のサービス名。一貫性が無い
    • Currency: 通貨。通常はUSD
    • EstimatedCharges: 料金
  1. AWSアカウントでBilling情報をCloudWatchへ出力するように指定する。
  2. GrafanaホストはEC2上に作り、IAM roleで権限を与える。IAM userのアクセスキーは発行しない方がセキュリティ的に良い。
  3. AWS Billingのidをコピー
  4. Grafana上で、Create -> Import
  5. Paste dashborad id: 139
  6. Revision等をtagに付けると更新された場合に分かりやすい。Tag: r13
  7. Save
  8. DatasourceでCloudWatchのアカウントを指定する。
    • 一括請求の場合、masterアカウントを指定する

AWS(CloudWatch)で使えるquery

  • AWS CloudWatch | Grafana Documentation
    • dimension_values(): CloudWatch metrics全般を取得できる。動的に取得できるため、templateに利用できる。
    • ec2_instance_attribute(): EC2の属性から、一覧を取得
  • ID一覧(dimension_key)を取ってくる時の、metricは値が入っていればなんでも良い。
  • リージョン 一覧
    $region = regions()
  • EC2のTags.Name一覧
    $EC2_TagsName: ec2_instance_attribute($region, Tags.Name, {})
    Custom all value: *
    Multi-value: uncheck
  • EC2のTags.Nameと一致する、InstanceId一覧。EC2_TagsNameが複数の場合に一致しないため困る。
    $EC2_InstanceId: ec2_instance_attribute($region, InstanceId, {"tag:Name": ["$EC2_TagsName"]})
  • Billing/LinkedAccount: 一括請求(Consolidated billing)の場合、masterアカウント1つだけ。子アカウントは表示されなかった。
    $LinkedAccount: dimension_values($region, AWS/Billing, EstimatedCharges, LinkedAccount)
  • Billing/ServiceName一覧
    $ServiceName: dimension_values($region, AWS/Billing, EstimatedCharges, ServiceName)
  • RDS instance id一覧:
    $RDS_DBInstanceIdentifier: dimension_values($region,AWS/RDS,CPUUtilization,DBInstanceIdentifier)
  • DynamoDB Table一覧:
    $DynamoDB_TableName: dimension_values($region,AWS/DynamoDB,ConsumedReadCapacityUnits,TableName)
  • ALB LoadBalancer Target Group一覧:
    $ELB_LoadBalancerName: dimension_values($region,AWS/ELB,RequestCount,LoadBalancerName)
  • ELB LoadBalancerName一覧:
    $ALB_LoadBalancer:
    dimension_values($region,AWS/ApplicationELB,RequestCount,LoadBalancer)
  • SQS QueueName 一覧:
    $SQS_QueueName: dimension_values($region,AWS/SQS,ApproximateNumberOfMessagesVisible,QueueName)
  • ElastiCache CacheClusterId 一覧:
    $ElastiCache_CacheClusterId: dimension_values($region,AWS/ElastiCache,CPUUtilization,CacheClusterId)
  • CloudWatch Logs LogGroupName一覧
    $Logs_LogGroupName: dimension_values($region,AWS/Logs,IncomingLogEvents,LogGroupName)
  • S3 BucketName一覧
    $S3_BucketName = dimension_values($region,AWS/S3,BucketSizeBytes,BucketName)

Datasource

  • AWS CloudWatch | Grafana Documentation
    • Assume Role Arn: Accesskeyを発行しないので、セキュリティ的に一番良い。EC2で運用する場合はこれを使う冪
    • AWS credentials file: assume roleの設定を入れた場合はできなかった。v6.3.5
      sudo mkdir /usr/share/grafana/.aws
      sudo vim /usr/share/grafana/.aws/credentials
      ---
      [default]
      aws_access_key_id = ****
      aws_secret_access_key = ****
      region = ap-northeast-1
      ---
      
      sudo chown -R grafana:grafana /usr/share/grafana/.aws/
      sudo chmod -R 600 /usr/share/grafana/.aws/credentials

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-08-07 (金) 14:30:38 (2d)