2015年04月26日

CentOS6にawstatsをインストールする

Apacheのログを解析するため、awstatsをサクッと入れる。
環境は、CentOS6 + Apache 2.4 での例。

1. epelからawstatsをインストール

EPELが入ってない場合は適宜いれる。過去記事などを参照。
# yum install --enablerepo=epel awstats
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
:
(略)
:
Installed:
awstats.noarch 0:7.0-3.el6
Complete!


2.awstatsのconfigを書き換える

デフォルトでは、/etc/awstats 以下に、awstats.(ホスト名).conf ができている。
解析するサーバーが1つで、ホスト名とWebサーバー名が同一ならこのままのファイル名でいいが、バーチャルホストを切っていたりして複数の設定にしたい時は、awstats.(設定名).conf という名前でファイルを作成する。(設定名)は、後でアクセスするときに使う。
例えば、設定名www、設定名virtualの2つを使うときはこんな感じにする。
# cp awstats.model.conf awstats.www.conf
# cp awstats.model.conf awstats.virtual.conf
# ls -l
total 320
-rw-r--r-- 1 root root 61665 Feb 21 2013 awstats.model.conf
-rw-r--r-- 1 root root 61665 Apr 26 08:39 awstats.virtual.conf
-rw-r--r-- 1 root root 61665 Apr 26 08:37 awstats.www.conf
それぞれのconfを書き換える。
最低限書き換える箇所は# vi awstats.XXXX.conf
---
LogFile="(ログファイルのパス)"
LogFormat=(ログファイルの形式:1-4)
---
LogFileは、ログファイルのパスを、解析したいログの場所に変更する。複数のログファイルを結合して解析したい時は、
LogFile="/usr/share/awstats/tools/logresolvemerge.pl (ログファイル1) (ログファイル2) (...) |"こんな風にlogresolvemerge.plを使うと、複数ファイルを時系列で並べ替えて結合してくれる。

LogFormatは、ログファイルの形式を指定する。commonの時は4にするが、combinedの方が取れるデータが多いのでオススメ。変更するときはApacheの設定ファイルのCustomLogを書き換える。
# vi (http.confあるいはVirtualHostの中)
---
CustomLog (ログファイルのパス) common

CustomLog (ログファイルのパス) combined
---
古いログをよけてから、apacheをリスタートする。

3.Webからawstatsを見えるように設定。

設定を直接httpd.confかVirtualHostの中に書いても良いし、conf/extra/awstats.conf などに分けてincludeしてもいい。必要なら認証もかける。
例・awstats.confを作る
# vi (apacheのconfディレクトリ)/extra/awstats.conf
---
Alias /awstatsclasses "/usr/share/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/share/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/share/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/share/awstats/wwwroot/cgi-bin/"

<Directory "/usr/share/awstats/wwwroot/cgi-bin">
DirectoryIndex awstats.pl
Options ExecCGI
</Directory>

<Directory "/usr/share/awstats/wwwroot">
AuthUserFile (パスワードファイルの配置ディレクトリ)/passwd.awstats
AuthName "AWSTATS"
AuthType Basic
Require valid-user
Require all denied
Require ip 127.0.0.1
</Directory>
---

例・httpd.confから設定ファイルをincludeする
# vi httpd.conf
---
:
(任意の場所に追加)
Include conf/extra/awstats.conf
---

例・BASIC認証を設定
# htpasswd -c (パスワードファイルの配置ディレクトリ)/passwd.awstats
New password:
Re-type new password:
Adding password for user XXXX
#

4.初回の解析データ生成

まだ解析データはないので、初回だけ手動でデータを生成する。
ログサイズによっては、初回の生成は時間がかかるかも。
# /usr/share/awstats/tools/awstats_updateall.pl now \
-configdir="/etc/awstats" \
-awstatsprog="/usr/share/awstats/wwwroot/cgi-bin/awstats.pl"

Running '"/usr/share/awstats/wwwroot/cgi-bin/awstats.pl" -update -config=XXXXXX -configdir="/etc/awstats"' to update config XXXXXX
Create/Update database for config "/etc/awstats/awstats.XXXXXX.conf" by AWStats version 7.0 (build 1.971)
From data in log file "/usr/local/apache2/logs/access_XXXXXX_log"...
Phase 1 : First bypass old records, searching new record...
:
(略)
:
Found 1 new qualified records.
#

5.アクセスできるか試してみる

2. で、設定名とサーバー名が同じで1つしかないなら、http://(インストールしたサーバー名)/awstats/ にアクセスしてみる。
設定が複数あったり、設定名がサーバー名と違うなら、http://(インストールしたサーバー名)/awstats/awstats.pl?config=(設定名) にアクセスしてみる。

awstat-example-150426.png


うまくできていれば、解析された結果が表示される。
データの更新は、標準では1時間に1回で、起動のためのスクリプトは /etc/cron.hourly/awstats に配置されている。1日1回に変えたい、あるいは任意の頻度に変えたい場合は、このスクリプトを適当な場所に移したりすると良い。
タグ:Linux Apache awstats
posted by usoinfo at 10:32 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2015年04月12日

METARのデータを取得して整形する

前回に引き続き。
気象庁以外で気温などの現在値が取れるものはないか、ということで、世界各国の空港の気象情報であるMETARからデータを取るPHP関数も作ってみた。
これ metar.phps

適当な場所に置いて include して使用する。
例:metar_sample.php

#!/usr/local/bin/php
<?php
include 'metar.phps';

$data = METAR_get('RJAA');

foreach($data['info'] as $i => $v){
echo $v['name'].' '.$data['data'][ $i ].' '.$v['unit']."\n";
}
?>

空港のコードには、ICAOの4レターコードをくべる。
例えば、成田空港のデータを引っ張ってきて表示。こんな結果。

$ ./metar_sample.php
時刻 2015/04/12 08:30:00
気温 12 ℃
湿度 71 %
気圧 1030 hPa
風向 NNE
風速 10 kt

空港によっては30分刻みでデータが来るので、気象庁よりいいかも知れない。気温の値の小数点以下が丸まってしまうのが欠点。
posted by usoinfo at 09:11 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする

2015年04月11日

気象庁のアメダス、今日のデータを取得して整形する

気象庁のアメダスのデータは、昨日より前のものはcsvで取得できるが、今日の分は取れない。Webページで見られるだけである。
このページを取得して、不要な部分を削除してデータだけ抜き出したかったので、ちょっとPHPで関数を書いてみた。
これ jma.phps

適当な場所に置いて include して使用する。
例:jma_sample.php

#!/usr/local/bin/php
<?php
include 'jma.phps';
$data = JMA_get('44132');
foreach($data['data'] as $h)
{
foreach($data['info'] as $key => $i){
echo $i['title'].$h[ $key ].$i['unit']." ";
}
echo "\n";
}
?>

場所のコードには、アメダスのURLの http://www.jma.go.jp/jp/amedas_h/today-XXXXX.html の XXXXX(数字5桁) をくべる。
例えば、東京(44132)のデータを引っ張ってきて表示。こんな結果。

$ ./jma_sample.php
時刻1時 気温8.5℃ 降水量0.5mm 風向北北西16方位 風速3.3m/s 日照時間0h 積雪深96cm 湿度1020.7% 気圧hPa
時刻2時 気温8.8℃ 降水量0.5mm 風向北北西16方位 風速3.8m/s 日照時間0h 積雪深97cm 湿度1019.6% 気圧hPa
時刻3時 気温8.8℃ 降水量2.0mm 風向北北西16方位 風速3.4m/s 日照時間0h 積雪深97cm 湿度1019.0% 気圧hPa
時刻4時 気温8.8℃ 降水量0.5mm 風向北西16方位 風速3.2m/s 日照時間0.0h 積雪深0cm 湿度97% 気圧1018.7hPa
時刻5時 気温8.9℃ 降水量0.5mm 風向北西16方位 風速3.5m/s 日照時間0.0h 積雪深0cm 湿度97% 気圧1018.8hPa
時刻6時 気温9.1℃ 降水量1.0mm 風向北北西16方位 風速3.5m/s 日照時間0.0h 積雪深0cm 湿度97% 気圧1019.3hPa
時刻7時 気温9.4℃ 降水量1.0mm 風向北北西16方位 風速3.2m/s 日照時間0.0h 積雪深0cm 湿度97% 気圧1019.6hPa
時刻8時 気温9.9℃ 降水量0.5mm 風向北北西16方位 風速4.0m/s 日照時間0.0h 積雪深0cm 湿度97% 気圧1019.7hPa
時刻9時 気温10.4℃ 降水量0.0mm 風向北北西16方位 風速3.1m/s 日照時間0.0h 積雪深0cm 湿度96% 気圧1020.4hPa
時刻10時 気温11.4℃ 降水量0.5mm 風向北北西16方位 風速2.8m/s 日照時間0.0h 積雪深0cm 湿度94% 気圧1020.6hPa
時刻11時 気温11.9℃ 降水量0.0mm 風向北北西16方位 風速1.3m/s 日照時間0.0h 積雪深0cm 湿度92% 気圧1020.3hPa
時刻12時 気温13.1℃ 降水量0.5mm 風向北北西16方位 風速2.1m/s 日照時間0.0h 積雪深0cm 湿度90% 気圧1019.9hPa
時刻13時 気温14.0℃ 降水量0.0mm 風向北16方位 風速1.5m/s 日照時間0.0h 積雪深0cm 湿度83% 気圧1020.1hPa
時刻14時 気温14.9℃ 降水量0.0mm 風向北東16方位 風速2.9m/s 日照時間0.0h 積雪深0cm 湿度70% 気圧1019.8hPa
時刻15時 気温15.9℃ 降水量0.0mm 風向東北東16方位 風速3.2m/s 日照時間0.0h 積雪深0cm 湿度69% 気圧1019.8hPa
時刻16時 気温15.2℃ 降水量0.0mm 風向東16方位 風速2.9m/s 日照時間0.0h 積雪深0cm 湿度72% 気圧1020.4hPa

自己責任でどうぞ。
(※気象庁のホームページには、自動収集を遠慮せよとの旨記載があるので注意)
posted by usoinfo at 17:22 | Comment(0) | 開発 | このブログの読者になる | 更新情報をチェックする