LoginSignup
42
58

More than 5 years have passed since last update.

ログ解析について

Last updated at Posted at 2016-07-19

ログを活用する前に

長期的に結果を出す前に必要なこと

  • [収集]どのデータを集めるべきか、どのようにデータを格納するか
  • [変換]データをどのように前処理し、分析しやすい形式にするか
  • [保存]どういったデータが入っていて、どこに保存するか
  • [分析]どのように基盤に入れたデータを分析し、活用してもらうか。データを入れるだけでなく、分析のために快適な環境を用意するにはどのようにすれば良いか
  • [表示]どのようにデータを可視化し、結果を伝えられるか
  • [運用]データを分析するための基盤を長期に渡って運用していくにはどのようにすれば良いか

ログとは何か

「ある時点での事実を残すもの」

  • ユーザが商品を購入した際のログ どの商品をいつ何円で買ったか
  • 室温のログ 部屋に取りつけられた温度センサーにより記録、ある時点での室温と温度のデータ
  • 音響測定データ 計測用のマクロフォンを利用して収集したある時点での音圧レベルのデータ

ログデータ入門

データの鮮度

ログデータを扱う際、データの鮮度によって2つの分け方をする

  • hot data  発生した直後のログデータ。発生してすぐに利用される。または、高頻度でアクセスされるログデータ
  • cold data  作成されてから利用されるまでにある一定の時間がかかるログデータのこと

鮮度の違いで何が変わるか

分析をする上で、鮮度の違いは、活用の方法を左右する

hot dataとcold data

hot data

  • 今この瞬間でトラフィックにどういう変化が起こっているか
  • 特定のキャンペーンで、どの商品の注文が増えているか

cold data

  • 蓄積された全体のデータを分析してマーケティングなどに活かす

ログを抜き出す際の注意

ログを抜き出す際には、後でどのような分析に必要になるか考えるのではなく、ひとまず「どのようなログがあるか」だけ整理し、すべてcold dataとして後から使えるように保存しておく

ログ解析のツールの組み合わせ(定番)

  • Fluentd - ログを収集する
  • Elasticsearch - 全文検索時エンジン+RestfullAPI
  • Kibana - ログ解析&可視化 webページ

使われている例

  • ソーシャルゲーム
  • アドテク
  • webサービス関連
  • クラウド基盤のバックエンド

今回は実際のサービスを対象にログ解析する前に自分のパソコンのログを見てみる

syslog入門

今回

自分のmacのログを見てみる

システムログとは

デーモンなどが出力するシステムの動作記録、ユーザが操作した内容が記録されている

用途

システムに不具合が生じた場合や、セキュリティ障害などが起きた時の解決に重要

Linuxシステムのログはどこにあるのか

主なログファイルは/var/log

@mymac~$ cd /var/log
@mymac/var/log$ ls
Accounts            authd.log.4.gz          daily.out           opendirectoryd.log.2        system.log          wifi.log.0.bz2
CDIS.custom         authd.log.5.gz          displaypolicyd.log      opendirectoryd.log.3        system.log.0.gz         wifi.log.1.bz2
CoreCapture         bluetooth.pklg          displaypolicyd.stdout.log   opendirectoryd.log.4        system.log.1.gz         wifi.log.10.bz2
DiagnosticMessages      com.apple.clouddocs.asl     emond               opendirectoryd.log.5        system.log.2.gz         wifi.log.2.bz2
SleepWakeStacks.bin     com.apple.revisiond     fax             opendirectoryd.log.6        system.log.3.gz         wifi.log.3.bz2
apache2             com.apple.xpc.launchd       fsck_hfs.log            opendirectoryd.log.7        system.log.4.gz         wifi.log.4.bz2
asl             commerce.log            install.log         opendirectoryd.log.8        system.log.5.gz         wifi.log.5.bz2
authd.log           corecaptured.log        module              opendirectoryd.log.9        system.log.6.gz         wifi.log.6.bz2
authd.log.0.gz          coreduetd.log           monthly.out         powermanagement         system.log.7.gz         wifi.log.7.bz2
authd.log.1.gz          coreduetd.log.0.gz      opendirectoryd.log      ppp             uucp                wifi.log.8.bz2
authd.log.2.gz          coreduetd.log.1.gz      opendirectoryd.log.0        sa              weekly.out          wifi.log.9.bz2
authd.log.3.gz          cups                opendirectoryd.log.1        secinitd.log.0.gz       wifi.log

Linux主なシステムログファイルの種類

/var/log/boot.log システム起動時のログ
/var/log/mail.log メールシステムのログ
/var/log/cron cronのログ
/var/log/secure 認証関連のログ
/var/log/dmesg システム起動時のdmesgの内容
/var/log/lastlog 最終ログイン情報の記録
/var/log/wtmp ログイン情報の記録
/var/log/anaconda.* インストーラのログ
/var/log/messages 上記に含まれないログ

ログを表示する

tailコマンドを使って自分のmacのインストールログを表示させてみる

@mymac/var/log$ sudo tail -f install.log
            "zzzz031-63213",
            "031-49592"
        );
    }
Jun 30 13:53:37 shoushiichiba-no-MacBook-Air softwareupdate_notify_agent[81250]: appstoreupdateagent notified
Jun 30 13:53:37 shoushiichiba-no-MacBook-Air softwareupdate_notify_agent[81250]: AssertionMgr: Cancel com.apple.softwareupdate.NotifyAgentAssertion assertion for pid 81250
Jun 30 13:53:37 shoushiichiba-no-MacBook-Air softwareupdated[535]: Removing client SUUpdateServiceClient pid=81250, uid=501, installAuth=NO rights=(), transactions=0 (/System/Library/CoreServices/Software Update.app/Contents/Resources/softwareupdate_notify_agent)
Jul  1 09:31:38 shoushiichiba-no-MacBook-Air installd[439]: ___CacheDeleteRegisterLegacyCallbacks_block_invoke475:449 com.apple.installd.CacheDelete has periodic property in CacheDelete.plist, but a NULL callback
Jul  1 09:31:39 shoushiichiba-no-MacBook-Air installd[439]: ___CacheDeleteRegisterLegacyCallbacks_block_invoke475:449 com.apple.installd.CacheDelete has periodic property in CacheDelete.plist, but a NULL callback
Jul  1 09:32:09 --- last message repeated 3 times ---

ログの出力について

Linuxのログは、主にsyslogという仕組みを使ってログを収集、出力を行う。

特徴

  • TCPによるログのネットワーク転送
  • TLS/SSLによる暗号化
  • MySQL、PostgreSQLへのログの保存
  • ログのフィルタリング
  • ロギング以外にも様々な通知方法(メール、SNMPTrap)

システムログを見てみる。syslogを表示する

@mymac~$ syslog

syslogのファシリティとプライオリティ

syslogはログの分類と重要度が定義されている。

  • ファシリティ(facility)ーログの分類
  • プライオリティ(priority)ーログの重要度

ファシリティ(分類) 説明

auth - 認証サービスのメッセージ
authpriv - 認証サービス
cron - cronのメッセージ
daemon - デーモンのメッセージ
kern - カーネルのメッセージ
lpr - プリンタサービスのメッセージ
mail - メールサービスのメッセージ
news - ニュースサービスのメッセージ
syslog - syslogのメッセージ
user - ユーザープロセスのメッセージ
uucp - uucp転送を行うプログラムのメッセージ
local0~7 - 任意に使用できるファシリティ

プライオリティ(重要度)

プライオリティ - 説明
debug - デバッグ情報
info - 情報
notice - 通知
warn - 警告
err - 一般的なエラー
crit - 致命的なエラー
alert - 緊急に対処すべきエラー
emerg - 緊急事態

ファシリティとプライオリティを意識してもう一度

@mymac~$ syslog

syslogを検索してみる

syslog -k Sender eq kernel

syslogの設定を見てみる

/etc/asl.conf には、次の規則で、何を、どこへ、書き込むかが定義されている。
{ファシリティ}.{レベル} {書き込み先}

@mymac~$ cat /etc/asl.conf
##
# configuration file for syslogd and aslmanager
##

# aslmanager logs
> /var/log/asl/Logs/aslmanager external style=lcl-b ttl=2

# authpriv messages are root/admin readable
? [= Facility authpriv] access 0 80

# remoteauth critical, alert, and emergency messages are root/admin readable
? [= Facility remoteauth] [<= Level critical] access 0 80

# broadcast emergency messages
? [= Level emergency] broadcast

# save kernel [PID 0] and launchd [PID 1] messages
? [<= PID 1] store

# ignore "internal" facility
? [= Facility internal] ignore

# save everything from emergency to notice
? [<= Level notice] store

# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log

# Facility com.apple.alf.logging gets saved in appfirewall.log
? [= Facility com.apple.alf.logging] file appfirewall.log file_max=5M all_max=50M

自分のmacのシステムログに直接書き込んでみる

@mymac~$ logger  test-test
@mymac~$ syslog
Jul  1 12:01:38 shoushiichiba-no-MacBook-Air mymac[83126] <Notice>:  test-test
Jul  1 12:01:53 shoushiichiba-no-MacBook-Air syslogd[47] <Notice>: ASL Sender Statistics

ユーザとプライオリティを設定して出力

@mymac~$ logger -t Test -p  local5.notice helloworld
@mymac~$ syslog
Jul  1 12:05:29 shoushiichiba-no-MacBook-Air Test[83128] <Notice>: helloworld

今日やったこと

・ログとは
・ログ解析ツールの紹介
・自分のmacのシステムログを見てみる
・syslogを使ってみる

次回、webサービスでログの解析一通りの流れを行ってみる

次回構築する環境について

  • Vagrant 1.5.2
  • Ubuntu 14.04 LTS (Trusty Tahr)
  • tg-agent 1.1.18(Fluentd 0.10.45)
  • Elasticsearch 1.2.1
  • openjdk-7-jre-headless
42
58
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
42
58