皆さんこんばんは。家に帰ってブログを書くまでが勉強会ですという先人の教えを忠実に実行したいと思います。本日はバスターワークスさんと共催で 第4回 一撃サーバー構築シェルスクリプト勉強会(もくもく) を開催してきました。
apache
[concrete5]LAMP環境にconcrete5をインストールする
最近concrete5がアツいらしいという噂を聞いたので、CentOS 6.6 (x86_64)の環境にインストールしてみました。作業はsudo権限をもった一般ユーザーで実施しています。(本稿の例では nullpopopo ユーザーで実施)
webサーバのアクセスログからステータスコードの集計を取る
ApacheやNginxのアクセスログから、ステータスコードの集計を行うことはよくあると思います。ApacheやNginxはrpmでインストールした場合、通常はlogrotateにより日次や週次でローテーションされるので、現在のアクセスログと1世代前のアクセスログから本日分のログを抜きだし集計します。なお、ログのフォーマットは通常のcombined方式を前提としています。
[(っ´∀`)っ@www ~]$ cat bin/LOGCOUNT #!/bin/bash LANG=C LOGDATE=$(date '+%b %d %H:%M:%S') ME=$(basename $0) HNAME=$(hostname -s) PID=$$ LOG0=/var/log/nginx/example.jp.access.log-$(date +%Y%m%d) LOG1=/var/log/nginx/example.jp.access.log TMP=${HOME}/tmp/${ME}_tmp.txt OUT=${HOME}/logs/${ME}/${ME}_$(date +%Y%m%d).log [ ! -d ${HOME}/logs/${ME} ] && mkdir -p ${HOME}/logs/${ME} sudo cat $LOG0 | egrep $(date +%d/%b/%Y) > $TMP sudo cat $LOG1 >> $TMP echo | awk '{print "STATUS""t""COUNT"}' cat $TMP | awk '{print $9}' | sort | uniq -c | sort -nr | awk '{print $2"t"$1}' wc -l $TMP | awk '{print "TOTAL""t"$1}'
ログのローテーション設定により、変数LOG0とLOG1で指定するファイル名が変わりますので、これらはよく確認してくださいね。出力結果はこんな感じです。
[(っ´∀`)っ@www ~]$ LOGCOUNT STATUS COUNT 200 224691 304 12849 404 7340 500 2904 "-" 1261 301 499 302 191 206 69 403 18 408 12 400 4 401 1 TOTAL 249839
ね、簡単でしょう?
[amazonjs asin="4844333399" locale="JP" title="できるPRO Apache Webサーバー 改訂版 Version 2.4/2.2/2.0対応 (できるPROシリーズ)"]
[CentOS]fluent と GrowthForecast を連携させてグラフを作ってみる #01
fluentとgrowthforecastが流行っていると聞いて試してみました。アクセスログの統計はawstatsなどを使っている方も多いと思いますが、ツールの提供する範囲でしか表やグラフを生成してくれません。しかし、自分が計測したい項目がそこになかった場合は、グラフを作るしかありません。これまでは敷居の高かったグラフ作成を、これら組み合わせで簡単に作ってしまいましょう。RRDtoolなど既存のツールを使って数字をグラフにするよりは、恐らくものすごく簡単だと思います。
fluentって?
メッセージングのコレクションサービス。フレームワークとして抽象化されており、各種プラグインを利用することで、様々なメッセージングを集約、伝搬することが出来る。
また転送時のデータ構造には MessagePack を採用しており、かなりの転送能力を誇る。
growthforecastって?
kazeburoさんが作成されたツールで、様々な値をAPI経由でグラフ化することができる。
動作イメージとしては以下の概念図のようになります。
今回は例題として、ApacheのアクセスログをfluentがJSON形式に変換し、そのログファイルをgrowthforecastがグラフ化するところまでやってみたいと思います。
あらかじめ手元の作業環境にApacheをインストールするか、他所のサーバからアクセスログ(combined形式)を任意のディレクトリにコピーしておいてください。