7
5

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.

zabbixの外部チェックでaws連携した時にハマったこと

Last updated at Posted at 2020-01-17

やりたかったこと

EC2やRDSの監視をzabbixでやりたかったが、RDSにはZabbixAgentが載せられないので
RDSのメトリクスを取得して監視を試みた。
awsコマンドでメトリクスを取得するスクリプトを作って、Zabbixの外部チェックでスクリプトを設定し定時実行する流れです。

環境

CentOS7
※ EC2ではなくローカルのVM

ハマったこと

基本的な設定は以下の記事をなぞりましたが、自分の場合はもう少し考慮が必要でした。
恐らくEC2の環境ならあまり気にしなくて良いのだと思います。
zabbixの設定が〜というよりはLINUX関連のハマりです。

参考
zabbix外部チェックでcloudwatch連携

zabbixユーザでawsコマンドが実行できない

スクリプトがきちんと動くか確認をとったところ、awsコマンドがうまく動かなかった。

$ sudo -u zabbix /usr/lib/zabbix/externalscripts/cloudwatch.sh -n AWS/RDS -m ReadLatency -s Maximum
/usr/lib/zabbix/externalscripts/cloudwatch.sh: line 16: aws: command not found

問題:
rootユーザにawscliをインストールしていたので、zabbixでawsが実行できなかった。
zabbixはnologinユーザなのでインストール方法を変える必要があった。

解決:
インストールのoptionを変える。

## これだとuser限定でインストールされちゃう
$ sudo pip install awscli --upgrade --user
$ echo 'export PATH=$PATH:~/.local/bin' >> ~/.bash_profile
$ source ~/.bash_profile
$ which aws
/root/.local/bin/aws

## これなら誰でも使える
$ sudo pip install awscli --ignore-installed six
$ which aws
/bin/aws

認証情報がない

awsが実行できたので再度実行してみるも、認証情報がないと怒られた。

$ sudo -u zabbix /usr/lib/zabbix/externalscripts/cloudwatch.sh -n AWS/RDS -m ReadLatency -s Maximum
Unable to locate credentials. You can configure credentials by running "aws configure".

.awsをどこに格納したら良いのか。 /usr/lib/zabbix/.awsか?
とも思ってやりましたが違うようで、試しに以下のコマンドを打ったらどこに格納すべきか判明しました。

$ sudo -u zabbix aws configure
AWS Access Key ID [None]:****
AWS Secret Access Key [None]:****
Default region name [None]: 
Default output format [None]: json

[Errno 13] Permission denied: '/var/lib/zabbix'

なるほどそこか!

あとは色々作って完成です。

$ mkdir /var/lib/zabbix
$ mkdir /var/lib/zabbix/.aws
$ vim /var/lib/zabbix/.aws/config
$ vim /var/lib/zabbix/.aws/credentials
$ chmod 755 /var/lib/zabbix/.aws/config 
$ chmod 755 /var/lib/zabbix/.aws/credentials
 
$ sudo -u zabbix /usr/lib/zabbix/externalscripts/cloudwatch.sh -n AWS/RDS -m ReadLatency -s Maximum
0.0118

zabbixの画面でも無事に取得できているようでした。めでたしめでたし。
スクリーンショット 2020-01-17 17.58.44.png

最後に

認証情報でハマりましたが、監視サーバをEC2でzabbixを使うなら
アクセスキーを使わずIAMロールで接続できるようにすることをお勧めします。
そうすればaws configureの設定は不要になります。

7
5
1

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
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?