44
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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
44
59
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
44
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?