そこで、Graylogでこのsquidログに対し、分類・タグ付け(ログの正規化)を行い、統計情報を表示できるようにしてみた。
GraySquidのダウンロード
まず、Graylogにてsquidを管理するためのContent Packを以下からダウンロードしておく。GraySquid
https://marketplace.graylog.org/addons/bd3efa5f-6ccb-47ce-97ea-6ebe0270a9c7
拡張子が.jsonとなるJSONで記載されたテキストファイルがダウンロードされる。
※JSON (JavaScript Object Notation):XMLのようなテキストベースのデータフォーマット
このContet Packの概要は以下の通り。
・Graylogの受信ポート番号はTCP/19302を使う
・squidログは標準形式のものを取り込む(apacheのログ形式はきちんと取り込めない)
・squidログの各種情報(アクセス先URLやステータスコードなど)を正規化して取り込む
・squidの直近の通信の統計情報を表示するDashboardも用意されている
GraylogにGraySquidをインポート
GraylogのWeb GUIにログインし、Content Packのインポートから実施する。「System」→「Content Packs」を選択し、「Select content packs」の一番下に「Import Content Pack」という項目があるため、先ほどダウンロードしたJSONのファイルを選択し、「Upload」ボタンを押下する。
インポートが成功すると、「Select content packs」に「Proxies」という項目が新たに表示されるので、その中の「Squid Logs」を選択し、「Apply Content」ボタンを押下する。
これだけで、TCP/19302で受信したログをsquidのログとして取り込む準備が完了する。
squid側の設定
squid側でログを飛ばす設定を行う。squidのaccess.logをrsyslogにてGraylogに飛ばす設定となる。なお、今回ログを飛ばすOS、squid、rsyslogのバージョンは以下の通りとなる。# cat /etc/redhat-release
------------------------------
CentOS Linux release 7.3.1611 (Core)
------------------------------
# squid -v
------------------------------
Squid Cache: Version 3.5.20
------------------------------
# rsyslogd -v
------------------------------
rsyslogd 7.4.7
------------------------------
# vi /etc/rsyslog.d/60-squid.conf
------------------------------
# Load Modules
module(load="imfile")
module(load="omfwd")
# rsyslog Input Modules
input(type="imfile"
File="/var/log/squid/access.log"
Tag="squid-access"
Severity="info"
Facility="local7"
ruleset="SquidForward")
# rsyslog RuleSets
ruleset(name="SquidForward") {
action(type="omfwd"
Target="<GraylogのIPアドレス>"
Port="19302"
Protocol="tcp"
template="RSYSLOG_SyslogProtocol23Format")
}
------------------------------
設定反映のため、rsyslogサービスをリスタートする。
# systemctl restart rsyslog
# systemctl status rsyslog ←確認
------------------------------
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since 日 2017-04-02 07:22:34 JST; 5s ago
Main PID: 5493 (rsyslogd)
CGroup: /system.slice/rsyslog.service
mq5493 /usr/sbin/rsyslogd -n
4月 02 07:22:34 t3023ce72 systemd[1]: Starting System Logging Service...
4月 02 07:22:34 t3023ce72 systemd[1]: Started System Logging Service.
------------------------------
Graylogにてログの確認
squid側の設定が完了したら、実際にログが表示されることを確認する。「Search」タブにてログを表示させ、squidのログをクリックしてみる。MethodやStatus_Codeがそれぞれ分類されて表示されており、ログが正規化されていることがわかる。
次に「Dashboards」を選択すると、以下3つのDashboardが追加されていることがわかる。
・Squid TCP_ALLOWED
・Squid TCP_DENIED Stats
・SquidStats
お勧めは3つめの「SquidStats」で、直近15分のsquidを経由した通信の統計情報が表示される。直近15分では統計情報として物足りないのであれば、時間をカスタマイズすることも可能な模様。ただし、時間を延ばせば、その分Graylogの処理も増えるはずなので、マシンリソースと相談して設定するのがよいだろう。
以上で、Graylogにてsquidログを正規化して取り込み、統計情報を表示することができた。ただし、squidログは生ログで見ると時間表示がUNIX時間(1970/1/1からの累計時間)で表示される仕様となっており、人間が確認する場合は視認性がいまいちである。squidログはapache形式にログ表示を変えることができるので、apache形式でログ取得して同様のことができないかも調べていきたい。
0 件のコメント:
コメントを投稿