1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AWSコスト情報をZabbixでモニタリングする

Posted at

やりたいこと

最近、ようやくAWSを触り始めました。いやー楽しいですね。全然わかんないけどw。
趣味のため、無料枠でAWSのいろいろなサービスを使って遊んでします。
が、何が無料枠か否か理解しておらずコストが突然跳ね上がったときに気付きたいと思い、
Zabbixで、一日に一回、AWSのコストをモニタリング(以下)するようにしました。

Screenshot from 2020-06-25 21-04-04.png

もうちょっと具体的に

  • AWSのトータルコストと各サービスのコストをモニタリング(1日1回)
  • トータルコストに対して、閾値(WARN/HIGH)のトリガーを設定できます。
  • zabbix-agentとaws-cli(aws ce)を使用します。
  • aws-cliの実行方法(awsコマンド+jq)は、以下URLを参考(ありがとうございます!)

注意事項

  • AWSのCostExplorerを利用するためコストが発生します。
  • CostExplorerを実行するたびに、0.01USD発生します(2020/06/24現在)
  • 当機能を使用すると、1日に2回CostExplorerを呼び出すため、0.02USDの費用が発生します。

内容

作成物は以下の2ファイル (githubに登録,下図でいうオレンジ部分)
https://github.com/mishikawan/aws-getcost-zabbix-template

  • zabbix-agentの設定ファイル
    • zabbix_agentd.d/userparameter_awscli.conf
  • zabbixのテンプレート
    • zabbix_template/zbx_AWSCost_templates.xml

Screenshot from 2020-06-25 21-35-16.png

稼働条件

  • Linuxサーバ(検証環境はオンプレのCentOS8)が稼働しており、以下が動いていること
    • zabbixサーバ(検証環境は4.0)
    • AWSCLI
    • jqコマンド

導入手順

1.JQのインストール

yum install jq

2.AWSCLI導入(既に導入されていれば不要)

# pip3 install awscli

3.zabbixユーザでのAWSコンフィグ設定(既に設定されていれば不要)

3-1.zabbixユーザのホームディレクトリのパスを調べる

# egrep zabbix /etc/passwd
zabbix:x:2000:2000:Zabbix:/var/lib/zabbix:/sbin/nologin

3-2.zabbixユーザのホームディレクトリ(上記例で/var/lib/zabbix)が無い場合は作成します

# mkdir /var/lib/zabbix

3-3.AWSコンフィグ用のファイルを設置します

# mkdir /var/lib/zabbix/.aws
# cat > /var/lib/zabbix/.aws/config 
[default]
output=json
^D
# cat > /var/lib/zabbix/.aws/credentials 
[default]
aws_access_key_id=XXXXXXXXXXXXXXXXXXXX
aws_secret_access_key=XXXXXXXXXXXXXXXXXXXX
^D
# chown -R zabbix:zabbix /var/lib/zabbix/.aws

4.zabbix_angentファイルを/etc/zabbix/zabbix_agentd.d/配下に設置

# cp zabbix_template/zbx_AWSCost_templates.xml /etc/zabbix/zabbix_agentd.d/.
# systemctl restart zabbix-agent.service 

5.設置したzabbix_agentが機能していることを確認します

5-1.zabbix_agentその1: aws.getcost

# zabbix_get -s 127.0.0.1 -k "aws.getcost"
{"AWS Config":"0"
,"AWS Cost Explorer":"0"
,"AWS Elemental MediaStore":"0"
,"AWS Key Management Service":"0"
,"AWS Lambda":"0"
,"AWS Systems Manager":"0"
,"Amazon API Gateway":"0"
,"Amazon CloudFront":"0"
,"EC2 - Other":"0"
,"Amazon Elastic Compute Cloud - Compute":"0"
,"Amazon Elastic Load Balancing":"0"
,"Amazon Simple Notification Service":"0"
,"Amazon Simple Queue Service":"0"
,"Amazon Simple Storage Service":"0"
,"Amazon Virtual Private Cloud":"0"
,"AmazonCloudWatch":"0"
,"Tax":"0"
}

5-2.zabbix_agentその2: aws.getcosttotal

# zabbix_get -s 127.0.0.1 -k "aws.getcosttotal"
{"Total":"0"}

6.zabbix_templateファイルをZABBIXにインポート

必要に応じて、template内のMacrosの内容(以下)を変更します。

Macro Value 備考
{$BUDGET_HIGH} 100 コストの閾値 100USD超えればアラート(深刻度=HIGH)
{$BUDGET_WARNING} 10 コストの閾値 10USD超えればアラート(深刻度=WARNING)
{$COSTCHECK_DATETIME} h11m00 Cost Explorerを呼び出す時間 (h11m00 = 11:00)
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?