常時 SSL 化 & HTTP/2 対応したのはいいのだけど、実際自サイトへのアクセスが、どれだけ HTTP/2 で来ているのかを定常的にチェックする仕組みを考えてみた。
自分のところは、HTTP も HTTPS も同じ /var/log/apache2/access.log にアクセスログを出力しているので、そのログに記録されている HTTP バージョンを集計すれば出来るな、ということで、
- logtail2 コマンドを使って、アクセスログの増分を取得
- HTTP/1.0 、 HTTP/1.1 、 HTTP/2 それぞれでのアクセス回数のカウントと、HTTP/2 でのアクセス比率を計算
- その結果を全て zabbix_sender で、Zabbixサーバに送信
スクリプトで利用している、 logtail2 コマンド( logtail パッケージに含まれる)と zabbix_sender のインストールについては、ここでは言及しません。
#HTTP と HTTPS でアクセスログを分離しているのであれば、 HTTPS 側だけ集計すればいいんですけど…。
下は実際に動作させているスクリプト。見てもらえれば、特に小難しいことをやってないのは判るんじゃないかと思います。
root@vps2:~# more bin/HTTP_Ver.sh
#!/bin/bash
item=()
# アクセスログの増分から、HTTPバージョンごとのアクセス数をカウント
/usr/sbin/logtail2 -f /var/log/apache2/access.log -o /tmp/apache2.offset > /tmp/apache2.diff
for i in 1.0 1.1 2 ; do
verCount=`/bin/grep -c HTTP/${i} /tmp/apache2.diff `
/usr/bin/zabbix_sender -z 127.0.0.1 -s vps2.downtown.jp -k HTTP.ver.${i} -o $verCount
item+=($verCount)
done
# HTTP/2でのアクセス比率を計算
if [ ${item[2]} -eq 0 ]; then
ratio=0.00000
else
ratio=`echo "scale=5 ; ${item[2]} / (${item[0]} + ${item[1]} + ${item[2]})" | bc`
fi
/usr/bin/zabbix_sender -z 127.0.0.1 -s vps2.downtown.jp -k HTTP2.ratio -o $ratio
for 文の繰り返し回数の制御を HTTP のバージョン番号である " 1.0 1.1 2" (実際にアクセスログ中に出てくるもの)で行うようにして、この値を zabbix_sender で指定するアイテムのを識別するための key の識別に使う、というような工夫はしていますけどね。
次に、Zabbix サーバ側に、このスクリプトが送信するデータを受け付けるためのアイテムを作成します。
コメントする