LoginSignup
5
6

More than 1 year has passed since last update.

クロスアカウントアクセス環境のAWSをZABBIXで監視する

Last updated at Posted at 2022-03-14

背景

下記記事でZABBIXからCloudWatch APIを使用してCloudWatchメトリクスを監視する方法を記載しました。

AWS-ZABBIX2-1.png

実際の環境は下記の様にZABBIXが存在するAWSアカウントと監視対象のAWSアカウントが異なっていることがあります。
この時、Asuume Roleの作成やAWS CLIでAsuume Roleを使用する設定が必要となるため、権限設定周りを中心に記載します。

AWS-ZABBIX2-2.png

内容

AWS-ZABBIX2-3.png

  • 111111111111内のZABBIXから222222222222内のAWSリソースを監視します。
  • ZABBIXはEC2で作成しZABBIX用IAMロールを付与します。
  • このロールにCloudWatch FullAccessを付与します。(同じアカウント内のAWSリソースを監視するためです。)
  • このロールにsts:AssumeRoleを付与します。(別アカウントのAWSリソースを監視するためです。)
  • 222222222222側にAssume Roleを作成します。
  • このロールにCloudWatch FullAccessを付与します。
  • ZABBIXサーバ内でプロファイルを定義します。

手順

IAMロール、IAMポリシーの詳しい詳細な設定方法などは割愛させて頂きます。

IAMポリシー設定(111111111111側)

  • sts:AssumeRole設定
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::222222222222:role/ZABBIX-Access-Role"
            ]
        }
    ]
}

IAMロール設定(111111111111側)

  • ZABBIX用IAMロール設定
  • 許可は「CloudWatchFullAccess」、上記で作成した「sts:AssumeRole」のポリシーを設定

IAMロール設定(222222222222側)

  • Assume Role(ZABBIX-Access-Role)設定
  • 許可は「CloudWatchFullAccess」を設定
  • 信頼関係「タブ」は下記の通り
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111111111111:root"
            },
            "Action": "sts:AssumeRole",
            "Condition": {}
        }
    ]
}

ZABBIX設定

  • AWS CLI設定
    zabbixユーザでシェルが動くように設定します。
cd ~
yum -y install unzip
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
./aws/install
mkdir /var/lib/zabbix/
cd /var/lib/zabbix/
mkdir .aws
chown zabbix:zabbix .aws
su -s /bin/bash - zabbix
aws --version
  • プロファイル作成
/var/lib/zabbix/.aws/config
[profile aws-zabbix]
role_arn = arn:aws:iam::222222222222:role/ZABBIX-Access-Role
credential_source = Ec2InstanceMetadata
  • 環境変数設定
    上記で設定したプロファイルを使用する様、環境変数で設定する必要があります。
    今回はシェルの中に追加しました。
/usr/lib/zabbix/externalscripts/cloudwatch01.sh
export AWS_PROFILE=aws-zabbix
python3 /usr/lib/zabbix/externalscripts/cloudwatch01.py $1 $2 $3 $4
. ./cloudwatch01.sh 'AWS/VPN' 'TunnelState' 'TunnelIpAddress' 'xx.xx.xx.xx'
1.0

ZABBIXコンソールから確認

AWSのマネージドサービスをZABBIXで監視する参照

テンプレートに5個ほどアイテムを作成、変数はマクロで渡す形にしました。
AWS-ZABBIX2-4.png

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6