クラウドエージェント
この文書は、AWSとNCP環境でWhaTapクラウドエージェントを設定するためのガイドです。 主要設定項目、フィールドの説明、権限構成、実行コマンドまで含めて、運用環境にすぐに適用できるように構成されています。
エージェント設定
AWS Aurora and RDSとNCP Cloud DB for PostgreSQLの設定方法です。
AWS Aurora and RDSの設定
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を入力 |
region | AWSリージョンコード - 例 ap-northeast-1 (東京リージョン) |
instances | 常に収集す るインスタンスの一覧で、オートスケール有無に関係なく、指定されたインスタンスは無条件に収集する |
instances[].name | RDSインスタンス名 - 例 mysql-rds |
instances[].slow_query | 該当インスタンスのスロークエリーを収集するかどうか、MySQL及びPostgreSQLインスタンスでのみ対応 - true: 収集- false: 非収集 |
clusters | RDSクラスター関連設定 |
clusters.autoscale.enabled | クラスターオートスケール収集有無 - true: 自動的にインスタンスを追加/削除して収集- false: instancesに直接入力したインスタンスのみ収集対象に含める |
clusters.autoscale.interval | オートスケール有無を感知する周期(単位:秒) |
clusters.names | オートスケール有無をチェックするクラスター名の一覧 |
metrics | 収集するメトリック項目のリスト - 例 CPUUtilization、FreeStorageSpaceなど- 参考 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 設定
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_arn | X | STS AssumeRole ARN。省略するとローカルアカウントを使用 |
clusters | O | Aurora/DocumentDBクラスター名。所属インスタンスを自動検出 |
instances | X | クラスターに属さないスタンドアロンRDSインスタンス名 |
clustersとinstancesの違い
clusters | instances | |
|---|---|---|
| 対象 | 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"]
-
namesとaccount_configsは同時に使用できません。エージェント起動時にバリデーションエラーが発生します。 -
ARN形式を厳密に検証します。
arn:aws:iam::<12桁の数字>:role/<名前>— コロン2つ(::)を省略しないよう注意してください。 -
各
account_configには最低1つのclusterが必要です。 -
autoscale.enabled: trueでないとクラスターディスカバリーが動作しません。
NCP Cloud DB for PostgreSQL設定
input:
csp: "ncp" # クラウドサービスプロバイダーを入力します。
namespace: "vpc_postgresql"
region: "KR" # KR | SGN | JPN | USWN | DEN
accessKey: "YOUR_ACCESS_KEY"
secretKey: "YOUR_SECRET_KEY"
instances: # Cloud DB for PostgreSQL (VPC) リストでモニタリング対象DBサーバー名を明示します。
- name: "instance-name"
domain: "pg-xxxxx.vpc-pub-cdb-kr.ntruss.com" # 接続可能なprivateまたはpublicドメインを入力します。
metrics: # 収集するメトリックを入力します。
- "cpu_user"
- "mem_used"
- "disk_usage"
- "nic_total"
- "cpu_load_1"
- "tup_inserted"
output: # 収集したメトリックデータを受信するWhaTap情報を入力します。
license: "4544ee0few5-a880410bb205-2987709519af"
host: "127.0.0.1"
| フィールドパス | 説明 |
|---|---|
csp | クラウドサービスのプロバイダーとしてNaver Cloud Platform(ncp)使用を表す |
namespace | モニタリング対象の区切り記号またはグループ名で使用される - 例 vpc_postgresql |
region | クラウドリージョン(region)コード - 対応値: KR、SGN、JPN、USWN、DEN |
accessKey | Naver CloudのAPI呼び出しのためのアクセスキー - 参考 Access Key / Secret Key発行方法 |
secretKey | Naver CloudのAPI呼び出しのためのシークレットキー |
instances | モニタリング対象であるPostgreSQLインスタンスリスト - 各インスタンスは nameとdomain フィールドを含む |
instances[].name | Cloud DB for PostgreSQL (VPC)インスタンス名 - NAVER CLOUD PLATFORMコンソールのDB Server > DB Server名項目で確認可能 - 例 whatap-001-70ld |
instances[].domain | 当該インスタンスのアクセス可能なドメインアドレス - NAVER CLOUD PLATFORMコンソールのDB Server > PrivateまたはPublicドメイン項目で確認可能 - DBXエージェントが実際に接続中の PrivateまたはPublicドメインアドレスを入力する必要がある - 例 pg-33rr40.vpc-pub-cdb-kr.ntruss.com |
metrics | 収集するメトリック項目のリスト - 参考 Cloud DB for PostgreSQL (VPC)指標公式文書 |
output | 収集したメトリックデータを受信するWhaTap情報 |
output.license | 収集されたメトリックデータを転送するWhaTapのライセンスキー |
output.host | 収集データを転送するWhaTapサーバーのホストアドレス(IP) |
Access Key / Secret Key の発行方法
-
NAVER CLOUD PLATFORM コンソールにログインします。
-
上部メニューから My Page > アカウント管理 に移動します。
-
メニューで 認証キー管理 をクリックします。
-
[キー生成] ボタンをクリックして、新しい Access Key と Secret Key を生成します。
権限設定
エージェントが正常に動作するには、サービスごとに必要な権限を設定する必要があります。
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": "*"
}
NCP Cloud DB for PostgreSQL権限
クラウドエージェントは、NCP Cloud DB for PostgreSQLインスタンスのメトリックと設定情報を収集するために、NCP Cloud Insight APIを呼び出します。 そのためにはAccess KeyとSecret Keyが必要です。
Access Key / Secret Key発行方法
- NAVER CLOUD PLATFORMコンソールにログインします。
- 上段メニューでMy Page> アカウント管理に移動します。
- メニューで認証キー管理を選択します。
- **[キー生成]**ボタンをクリックして新しいAccess KeyとSecret Keyを生成します。
料金案内
クラウドモニタリングエージェントは無料ですが、クラウドサービスの使用によっては別途料金が発生することがありますので、確認が必要です。
AWS料金
クラウドモニタリングエージェントは別途のSaaS料金なしで提供され、エージェントのインストールだけでモニタリング機能を使用できます。 ただ、AWS CloudWatchなどクラウドサービスのAPIを通じてメトリックを収集するため、CloudWatch使用量によって別途料金がかかる場合があります。
本エージェントは、基本的に1分周期でGetMetricData APIを呼び出ししてメトリックを収集し、呼び出し頻度と収集対象 によって料金が増加することがあるので注意が必要です。
詳しい料金ポリシーはAWS公式文書のAmazon CloudWatch料金ページを参照してください。
NCP料金
クラウドモニタリングエージェントは別途のSaaS料金なしで提供され、エージェントのインストールだけでモニタリング機能を使用できます。 クラウドモニタリングエージェントは、5分周期でCloud Insight APIを呼び出し、1分単位のメトリックデータを収集します。
NAVERクラウドプラットフォーム(NCP)のCloud Insightサービスは現在無料で提供されていますが、今後のポリシーによっては有料化される場合があります。 Cloud Insightサービスが有料化される場合、API呼び出し回数によって料金がかかる場合がありますので、使用量にご注意ください。
詳しい料金ポリシーはNAVERクラウドプラットフォームの公式料金案内ページを参照してください。
-
namesとaccount_configsは同時に使用できません。エージェント起動時にバリデーションエラーが発生します。 -
ARN形式を厳密に検証します。
arn:aws:iam::<12桁の数字>:role/<名前>— コロン2つ(::)を省略しないよう注意してください。 -
各
account_configには最低1つのclusterが必要です。 -
autoscale.enabled: trueでないとクラスターディスカバリーが動作しません。