GrowthForecast+FluentdでWeb管理を素敵にしよう!のゴール
- GrowthForecast導入とCloudWatch連携理解
- GrowthForecastの情報が生で見えるのは精神衛生上悪いので認証プロクシ化
- Fluentd導入とログ連携理解
- Apacheベースでnginx理解
- 各種OSリソース情報等の出力
- 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をループバックアドレスに。
```
!/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/register fi
if [ -n "$NIN" ]; then curl -F number=$NIN http://$GFSERVER/api/$INSTANCE_ID/networkin/register fi
if [ -n "$NOUT" ]; then curl -F number=$NOUT http://$GFSERVER/api/$INSTANCE_ID/networkout/register fi
こいつを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使用率を表示したグラフ。
http://www.hoge.com:5125
今回はこのくらいで。