Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
16
Help us understand the problem. What is going on with this article?
@kou_bacchus

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

More than 5 years have passed since last update.

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のグラフ

今回はこのくらいで。

16
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kou_bacchus
属性:闇、野良SE。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
16
Help us understand the problem. What is going on with this article?