Your SlideShare is downloading. ×
0
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Norikraでアプリログを集計してリアルタイムエラー通知 # Norikra meetup

2,024

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,024
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Norikra meetup session #2 kawamuray
  • 2. ● 名前: kawamuray ● 本業: 大学院修士課程2年 ● 副業1: アルバイトサーバサイドエンジニア@LINE Corp ● 副業2: Student@Google Summer of Code ● Norikraとの関わり: jrubyでudf書ける方法発明したりした About me
  • 3. Norikraでアプリログを集計してリ アルタイムエラー通知 あるいは,Norikraの身近な活用法 テーマ
  • 4. ● screen or tmux + tail -F ? ● 全部のアプリ見れる? ● 流れ早いと見逃さない? 私の場合: ● アクティブに開発してるとき or デプロイ時 しか見てない ● バッチ等重要局面の失敗はikachanでIRCへgo ● でも,errorとかcriticalレベルで吐かれるログは全部見たい アプリのログ,監視してる?
  • 5. sub logger { my ($level, $message) = @_; my(undef, $file, $line) = caller(0); my $content = "[$level] $message at $file line $line"; print STDERR $content, "n"; if ($level eq 'error' || $level eq ‘critical’) { $c->ikachan($content); } } エラーログは全部通知する?
  • 6. エラー通知という名のSPAM
  • 7. ● メッセージは変数によって微妙に違うかもしれない ● ログのレベル,ファイル,行が同じなら同じような内容とみなして良いよね ● エラー通知はきっかけ.ざっくり内容が分かれば良い. ● 詳細はどうせファイル見に行くでしょ? サマライズしよう
  • 8. my $fluent_logger = Fluent::Logger->new(...); my $hostname = `hostname`; chomp $hostname; sub logger { my ($level, $message) = @_; my(undef, $file, $line) = caller(0); my $content = "[$level] $message at $file line $line"; # ... ファイルに書く処理 ... # fluentdに全部投げちゃうど $fluent_logger->post('foo.applog', { level => $level, file => $file, line => $line, host => $hostname, message => $message, }); } やること1
  • 9. SELECT level, file, line, LAST(host) AS host, LAST (message) AS message, COUNT(*) AS count FROM foo_applog.win:time_batch(5 min) WHERE level IN ('error', 'critical') GROUP BY level, file, line やること2
  • 10. $ crontab -l */1 * * * * setlock -nx /tmp/norikra-error-notify.pl.lock /path/to/norikra-error-notify.pl やること3
  • 11. #!/usr/bin/env perl use strict; use warnings; use Foo; # project class use Norikra::Client; my $IntervalMinutes = 5; my $c = Foo->bootstrap; my $norikra = Norikra::Client->new('norikra.server.address', 26571); my $query_name = "foo_errors_in_${IntervalMinutes}min"; my $events = $norikra->event($query_name); for my $event (@$events) { my ($time, $log) = @$event; next if $log->{count} == 0; my $msg = "[$log->{host}][$level] $log->{message} at $log->{file} line $log->{line}"; if ($log->{count} > 1) { my $count = $log->{count} - 1; $msg .= " ... and $count more similar logs in this $IntervalMinutes minutes"; } $c->ikachan($msg); # post to IRC via ikachan } norikra-error-notify.pl
  • 12. Architecture App IRC norikra-error-notify.pl @ cron
  • 13. すっきり
  • 14. ● 複数ノード,複数インスタンスのアプリログをまとめられる ● Fluentdに投げとけばアプリの外側で使える ● ロガーと別に通知処理を入れなくて済む 良い点
  • 15. 不満: ● プロジェクト毎にクエリ登録したりcron仕掛けるのめんどい ● 1度来た通知が修正作業中に何回もくるのがうっとおしい 展望: ● そのへん面倒みてくれるいい感じのアプリでも作るけ? ● と思っているところです. 展望
  • 16. アプリログに関して: ● アプリのログは書くだけじゃなくてちゃんと監視しよう Norikraに関して: ● Norikraは身近なとこでも使える ● SQL書ければだいたい使える ● ログ+ストリーム(リアルタイム)処理の組み合わせは色々でき そう ● ありがとう タゴ=モリス まとめ

×