本文へスキップ

クラウドエージェント

この文書は、AWS環境でWhaTapクラウドエージェントを設定するためのガイドです。 主要設定項目、フィールドの説明、権限構成、実行コマンドまで含めて、運用環境にすぐに適用できるように構成されています。

エージェント設定

AWS Aurora and RDSの設定方法です。

AWS Aurora and RDSの設定

config.yaml
input:
csp: "aws" # クラウドサービスのプロバイダーを入力します。
namespace: "rds"
region: "ap-northeast-1" # インスタンスが位置するリージョンを設定します。
instances: # 設定したインスタンスは常に収集します。クラスター内のインスタンスをここに指定すると、オートスケールに関係なく収集されます。
- name: "mysql-rds" # インスタンス名
slow_query: true # スロークエリーページを使用するには、trueに設定します。該当機能はMySQL及びPostgreSQLインスタンスでのみ対応されています。
clusters:
autoscale:
enabled: false # オートスケールが有効な場合、スケーリングされたインスタンスを収集対象に追加または削除します。
interval: 60 # 指定したクラスターのオートスケール確認間隔です。(単位: 秒)
names:
- "database-cluster-name"
metrics: # 収集するメトリクスを入力します。
- "CPUUtilization"
- "FreeStorageSpace"
- "FreeableMemory"
- "ReadLatency"
- "WriteLatency"
- "ReadIOPS"
- "WriteIOPS"
- "NetworkReceiveThroughput"
- "NetworkTransmitThroughput"
- "FreeLocalStorage"
logs:
enabled: false # ログ収集の有無を設定します。true/falseで設定できます。
groups: # 収集するAWSロググループを入力します。
- "/aws/rds/cluster/database-cluster-name/error"
- "/aws/lambda/MyLambda"

output: # 収集したメトリクスデータを受信するWhaTap情報を入力します。
license: "abcdefg-higjgkgjk-zxcvnbnbmc"
host: "127.0.0.1"
フィールド説明
cspクラウドサービスの提供者としてaws(Amazon Web Services)を意味
namespace収集対象サービスのネームスペース
- 固定値: Aurora and RDSの設定時、rdsを入力
regionAWSリージョンコード
- 例 ap-northeast-1 (東京リージョン)
instances常に収集するインスタンスの一覧で、オートスケール有無に関係なく、指定されたインスタンスは無条件に収集する
instances[].nameRDSインスタンス名
- 例 mysql-rds
instances[].slow_query該当インスタンスのスロークエリーを収集するかどうか、MySQL及びPostgreSQLインスタンスでのみ対応
- true: 収集
- false: 非収集
clustersRDSクラスター関連設定
clusters.autoscale.enabledクラスターオートスケール収集有無
- true: 自動的にインスタンスを追加/削除して収集
- false: instancesに直接入力したインスタンスのみ収集対象に含める
clusters.autoscale.intervalオートスケール有無を感知する周期(単位:秒)
clusters.namesオートスケール有無をチェックするクラスター名の一覧
metrics収集するメトリック項目のリスト
- 例 CPUUtilizationFreeStorageSpaceなど
- 参考 Amazon RDSに対するAmazon CloudWatch指標の公式文書へのショートカット
output.license収集されたデータを転送するWhaTapのライセンスキー
output.host収集データを転送するWhaTapサーバーのホストアドレス(IP)
クロスアカウントモニタリング(マルチAWSアカウント)

単一のクラウドエージェントで複数のAWSアカウントのRDS/DocumentDBをモニタリングできます。マルチアカウント(環境別分離、パートナーアカウントなど)を使用する場合、アカウントごとにエージェントをインストールする必要はなく、1つのエージェントからSTS AssumeRoleで他のアカウントのリソースを照会します。

項目内容
対応対象AWS RDS(Aurora、スタンドアロン)、DocumentDB
認証方式EC2 Instance Profile + STS AssumeRole

設定方式の選択

クラスター設定には2つの方式があり、同時に使用することはできません

  • names: 単一アカウント専用(エージェントがインストールされたEC2のIAM Roleで自アカウントのみ照会)

  • account_configs: クロスアカウント対応(STS AssumeRoleを通じて複数アカウントを照会)

account_configs 設定
config.yaml
input:
csp: "aws"
namespace: "rds"
region: "ap-northeast-2"
clusters:
autoscale:
enabled: true
interval: 300
account_configs:
# ローカルアカウント(assume_role_arnを省略すると自アカウント)
- clusters: ["local-aurora-cluster"]
instances: ["standalone-mysql-1"]

# 別のアカウント A
- assume_role_arn: "arn:aws:iam::111111111111:role/DBXCRole"
clusters: ["partner-cluster-1", "partner-cluster-2"]

# 別のアカウント B
- assume_role_arn: "arn:aws:iam::222222222222:role/QARole"
clusters: ["qa-cluster"]
instances: ["qa-standalone-pg"]
metrics:
- "CPUUtilization"
- "FreeStorageSpace"
- "FreeableMemory"
- "ReadLatency"
- "WriteLatency"

output:
license: "your-license-key"
host: "127.0.0.1"
表 | account_configs フィールド
フィールド必須説明
assume_role_arnXSTS AssumeRole ARN。省略するとローカルアカウントを使用
clustersOAurora/DocumentDBクラスター名。所属インスタンスを自動検出
instancesXクラスターに属さないスタンドアロンRDSインスタンス名
ノート

clustersinstancesの違い

clustersinstances
対象Auroraクラスター、DocumentDBクラスタークラスターなしで単独運用されるRDS
動作クラスター名で所属インスタンスを自動ディスカバリーインスタンス名を直接指定
オートスケールインスタンスの追加/削除時に自動反映該当なし
Aurora MySQLクラスターRDS MySQL単一インスタンス

設定例1. 単一アカウント + スタンドアロンインスタンス

clusters:
autoscale:
enabled: true
interval: 300
account_configs:
- clusters: ["prod-aurora"]
instances: ["legacy-mysql-standalone"]

設定例2. 3つのアカウント(自アカウント + パートナー + QA)

clusters:
autoscale:
enabled: true
interval: 300
account_configs:
- clusters: ["prod-cluster", "staging-cluster"]

- assume_role_arn: "arn:aws:iam::111111111111:role/DBXCRole"
clusters: ["partner-prod", "partner-dev"]

- assume_role_arn: "arn:aws:iam::222222222222:role/QADBXCRole"
clusters: ["qa-cluster"]
instances: ["qa-standalone-pg"]
注意
  • namesaccount_configs同時に使用できません。エージェント起動時にバリデーションエラーが発生します。

  • ARN形式を厳密に検証します。arn:aws:iam::<12桁の数字>:role/<名前> — コロン2つ(::)を省略しないよう注意してください。

  • account_configには最低1つのclusterが必要です。

  • autoscale.enabled: trueでないとクラスターディスカバリーが動作しません。

権限設定

エージェントが正常に動作するには、サービスごとに必要な権限を設定する必要があります。

AWS Aurora and RDS権限

クラウドエージェントは、次の機能を実行するためにAWS APIを呼び出します。

  • AWS Aurora and RDSインスタンスとクラスター情報を照会して監視対象を確認
  • CloudWatchメトリック収集

IAMインラインポリシー

JSONポリシーをIAMユーザーまたは役割にインラインポリシーで追加します。 EC2でエージェントを実行する場合、当該EC2インスタンスに接続されたIAMの役割に当該ポリシーを付与します。

  • このポリシーはAuroraとRDSサービスの両方に適用されます。
  • Resource項目は、すべてのAuroraとRDSリソースを対象に指定されており、セキュリティポリシーによって必要な場合、リソースARNを制限できます。
  • エージェントは照会(Read-only) APIのみ使用します。 データベースに影響を与える権限は含まれません。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "RDSPermissions",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:DescribeDBClusters",
"rds:DescribeDBClusterParameters",
"rds:DescribeOptionGroups"
],
"Resource": "*"
},
{
"Sid": "CloudWatchMetricsPermissions",
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics"
],
"Resource": "*"
},
{
"Sid": "CloudWatchLogsPermissions",
"Effect": "Allow",
"Action": [
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:FilterLogEvents",
"logs:GetLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:log-group:/aws/rds/*"
]
}
]
}
クロスアカウントIAM権限

account_configsを使用してクロスアカウントモニタリングを設定するには、追加のIAM権限が必要です。

エージェントEC2 Instance Profile

エージェントが実行されるEC2に、対象アカウントのRoleをAssumeできる権限を付与します。

{
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": [
"arn:aws:iam::111111111111:role/DBXCRole",
"arn:aws:iam::222222222222:role/QARole"
]
}
]
}

対象アカウントのCross-Account Role

対象アカウントでエージェントアカウントからのアクセスを許可するRoleを作成します。

  • Trust Relationship: エージェントアカウントを許可

    {
    "Principal": {
    "AWS": "arn:aws:iam::<エージェントアカウントID>:role/DBXC-EC2-Instance-Role"
    },
    "Action": "sts:AssumeRole"
    }
  • Permission Policy: RDS/CloudWatch照会権限

    {
    "Effect": "Allow",
    "Action": [
    "rds:DescribeDBInstances",
    "rds:DescribeDBClusters",
    "cloudwatch:GetMetricData",
    "logs:FilterLogEvents"
    ],
    "Resource": "*"
    }

料金案内

注意

クラウドモニタリングエージェントは無料ですが、クラウドサービスの使用によっては別途料金が発生することがありますので、確認が必要です。

AWS料金

クラウドモニタリングエージェントは別途のSaaS料金なしで提供され、エージェントのインストールだけでモニタリング機能を使用できます。 ただ、AWS CloudWatchなどクラウドサービスのAPIを通じてメトリックを収集するため、CloudWatch使用量によって別途料金がかかる場合があります

本エージェントは、基本的に1分周期でGetMetricData APIを呼び出ししてメトリックを収集し、呼び出し頻度と収集対象によって料金が増加することがあるので注意が必要です。

詳しい料金ポリシーはAWS公式文書のAmazon CloudWatch料金ページを参照してください。

注意
  • namesaccount_configs同時に使用できません。エージェント起動時にバリデーションエラーが発生します。

  • ARN形式を厳密に検証します。arn:aws:iam::<12桁の数字>:role/<名前> — コロン2つ(::)を省略しないよう注意してください。

  • account_configには最低1つのclusterが必要です。

  • autoscale.enabled: trueでないとクラスターディスカバリーが動作しません。