CentOS6 python2.6環境へのawscliのインストール

CentOS6環境へのawscliのインストール

以下の記事で、CloudWatchでオンプレミスサーバーのメトリクスを収集するための設定を紹介しました。

しかし、CentOS6系ですと標準でPythonのバージョンが2.6になるのですが、Python2.6ですとawscliのインストールができません。

Python2.7のインストール

このPython2.6 環境に Python2.7をインストールします。Software Collectionsを使います。

$ sudo yum install centos-release-scl-rh
$ sudo yum install python27

バージョンを確認します。

$ python -V
Python 2.6.6

この段階では、認識されるpythonのバージョンは 2.6 のままです。
以下のコマンドでpython2.7環境の新しいシェルを立ち上げます。

$ sudo scl enable python27 bash
$ python -V
Python 2.7.13

新しいシェル上でawscliをインストールします。

pipのインストール

$ sudo curl -O https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ pip --version

awscliのインストール

$ sudo pip install awscli --upgrade
$ aws --version

CentOS6環境でawscliを使ったシェルスクリプトをCRONに登録

以下の記事で、CloudWatchでサーバー上のプロセス監視について解説しましたが、CentOS6上では紹介したシェルスクリプトをCRONに登録してもうまくawscliが動きません。

/etc/crontab に当該シェルスクリプトを記述する際に、以下のように「scl enable python27」を付け、python2.7環境のシェル上でシェルスクリプトが起動するようにします。

# Put Metrics to CloudWatch
00-59/1 *  *  *  * root scl enable python27 /usr/local/bin/put-metric-data-process-onpremise-python26.sh >/dev/null 2>&1

プロセス監視用のシェルスクリプトは、うまくAIMユーザーのクレデンシャルが取れないので、環境変数に設定するようにしました。
put-metric-data-process-onpremise-python26.sh

#!/bin/sh

CUR_DIR=/usr/local/bin
NAMESPACE="Ec2ProcessOnPremise"
UNIT="Count"
REGION="ap-northeast-1"
HOST_NAME=`echo $HOSTNAME | cut -f1 -d.`

#監視対象プロセスリスト
PROCESS_LIST=$CUR_DIR/process-list.txt

PUT_COMMAND="aws cloudwatch put-metric-data"
DIMENSIONS="host=$HOST_NAME"

export AWS_ACCESS_KEY_ID=**************
export AWS_SECRET_ACCESS_KEY=*********************************
export AWS_DEFAULT_REGION=ap-northeast-1

#監視対象プロセス毎にプロセス数をカウントしてCloudWatchに格納する
cat $PROCESS_LIST | sed '/^$/d' | grep -v '^#.*' | while read PROCESS
do
	COUNT=`ps aux | grep $PROCESS | grep -v grep | wc -l`
	echo $PROCESS:$COUNT

	$PUT_COMMAND --metric-name $PROCESS --namespace $NAMESPACE --dimensions $DIMENSIONS --value $COUNT --unit $UNIT --region $REGION

done

コメントを残す

コメントは当サイト運営者の承認後に反映されます。
お名前はニックネームでも結構です。

Comments are allowed only in Japanese. / 日本語が含まれない投稿は無視されますのでご注意ください。