LoginSignup
17
16

More than 5 years have passed since last update.

GrowthForecast+FluentdでWeb管理を素敵にしよう!① 〜まずはGrowthForecastでCloudWatchのログを溜めてみよう〜

Last updated at Posted at 2014-02-03

GrowthForecast+FluentdでWeb管理を素敵にしよう!のゴール

  1. GrowthForecast導入とCloudWatch連携理解
  2. GrowthForecastの情報が生で見えるのは精神衛生上悪いので認証プロクシ化
  3. Fluentd導入とログ連携理解
  4. Apacheベースでnginx理解
  5. 各種OSリソース情報等の出力
  6. GrowthForecast+FluentdでWeb管理を素敵にしよう!

段階的にnginxやGrowthForecast、Fluentdを理解して、Zabbix無しでも軽くて素敵な運用が出来ることがゴール。

GrowthForecastのインストール

まんま、CloudWatchをGrowthForecastでロングスパングラフ化するを参考に。
ちょいと引っかかったり、普段使いの鯖がSingaporeなので微妙に違う部分があったりしたので、そこらも抑えられれば。

OSは、Amazon Linuxを使用。(AMIはAmimotoです)
Amazon LinuxはCentOSカスタマイズなので、基本CentOSの手順でOK。

yum updateとタイムゾーンの設定

パッケージ導入するのでお約束のyum updateとタイムゾーンの設定というのは、GrowthForecastで表示したい時間軸がどこのタイムゾーンかを設定する。

$ sudo yum update
$ rm /etc/localtime
$ sudo ln -s /usr/share/zoneinfo/Japan /etc/localtime

AWSのSingaporeリージョンだったので、/etc/localtimeが/usr/share/zoneinfo/Singaporeのシンボリックリンクだったので、cpしちゃうとSingaporeをTokyoで上書きしちゃうので、シンボリックリンク貼り替え。
どこの手順を見ても、cpで元のタイムゾーン上書きしちゃうので気持ち悪かった。

GrowthForecastで必要なパッケージを黙々と導入

$ sudo yum groupinstall "Development Tools"
$ sudo yum install pkgconfig glib2-devel gettext libxml2-devel pango-devel cairo-devel
$ sudo yum install libyaml-devel
$ sudo yum install *YAML*
$ sudo yum install cpan
$ sudo cpan App::cpanminus

GrowthForecastの導入

cpanmを使用してGrowthForecastを導入します。

$ cpanm -n GrowthForecast

何度かEnter叩いて導入完了。

GrowthForecastの起動

まず、perl等のライブラリにパスを通す。
で、sourceコマンドで~/.bashrcの読み直し。

$ vi ~/.bashrc
export PERL_CPANM_OPT="--local-lib=~/perl5"
export PERL5LIB="/home/ec2-user/perl5/lib/perl5"
export PATH="~/perl5/bin:$PATH"

$ source ~/.bashrc
$ /home/ec2-user/perl5/bin/growthforecast.pl --data-dir /home/ec2-user/growthforecast &

で起動。
デフォだと5125/tcpで通信するので、SecurityGroup等も手当すること。

CloudWatchのデータをGrowthForecastへ連携

参考にしたサイトのスクリプトがjqを使用しているので、導入。

$ sudo yum install jq

連携スクリプトは以下の内容。
オリジナルからは、
TokyoリージョンがSingaporeリージョンなので、ap-northeast-1をap-southeast-1に変更。
とりあえず1台構成なので、GFSERVERのIPをループバックアドレスに。

cloudwatch_push.sh
#!/bin/bash

GFSERVER="127.0.0.1:5125"
INSTANCE_ID=`curl http://169.254.169.254/latest/meta-data/instance-id`
START_DATE=`date -u -d '10 minutes ago' +%Y-%m-%dT%TZ`
END_DATE=`date -u +%Y-%m-%dT%TZ`

CPU=`aws cloudwatch get-metric-statistics --metric-name CPUUtilization --namespace AWS/EC2 --region ap-southeast-1 --statistics Average --start-time $START_DATE --end-time $END_DATE --period 60 --dimensions Name=InstanceId,Value=$INSTANCE_ID | jq '.Datapoints[0] | .Average' | sed s/\.[0-9,]*$//g`
NIN=`aws cloudwatch get-metric-statistics --metric-name NetworkIn --namespace AWS/EC2 --region ap-southeast-1 --statistics Average --start-time $START_DATE --end-time $END_DATE --period 60 --dimensions Name=InstanceId,Value=$INSTANCE_ID | jq '.Datapoints[0] | .Average' | sed s/\.[0-9,]*$//g`
NOUT=`aws cloudwatch get-metric-statistics --metric-name NetworkOut --namespace AWS/EC2 --region ap-southeast-1 --statistics Average --start-time $START_DATE --end-time $END_DATE --period 60 --dimensions Name=InstanceId,Value=$INSTANCE_ID | jq '.Datapoints[0] | .Average' | sed s/\.[0-9,]*$//g`

if [ -n "$CPU" ]; then
  curl -F number=$CPU http://$GFSERVER/api/$INSTANCE_ID/cpu/cpu
fi

if [ -n "$NIN" ]; then
  curl -F number=$NIN http://$GFSERVER/api/$INSTANCE_ID/networkin/networkin
fi

if [ -n "$NOUT" ]; then
  curl -F number=$NOUT http://$GFSERVER/api/$INSTANCE_ID/networkout/networkout
fi

(2014/02/14追記)
※ スクリプトの以下を変更
 http://$GFSERVER/api/$INSTANCE_ID/cpu/registerhttp://$GFSERVER/api/$INSTANCE_ID/cpu/cpu

こいつをcronに登録。(10分置きに稼働)

$ crontab -e
*/10  *  *  *  *    /home/ec2-user/cloudwatch_push.sh

このままだとエラーになったのでトラブルシュート

以下のようなエラーが出るので、

Unable to locate credentials. You can configure credentials by running "aws configure".

以下のコマンドを実行。

$ aws configure
AWS Access Key ID [None]: XXXXXXXXXXXXXXXXXXXX
AWS Secret Access Key [None]: +xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Default region name [None]: ap-southeast-1
Default output format [None]:

Security CredentialsのAccess Key IDとSecret Access Keyを入力。
自分は鯖がSingaporeリージョンなので、ap-southeast-1を入力。
outputフォーマットはデフォルトのまま。

アクセスしてみる

GrowthForecastを導入したサーバのグローバルアドレスの5125ポートにアクセス。

以下は、CloudWatchのCPU使用率を表示したグラフ。

ex
http://www.hoge.com:5125

GrowthForecastのグラフ

今回はこのくらいで。

17
16
2

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
17
16