際際滷

際際滷Share a Scribd company logo
Norikra meetup session #2
kawamuray
¢ 兆念: kawamuray
¢ 云I: 寄僥垪俐平n殻2定
¢ 険I1: アルバイトサ`バサイドエンジニア@LINE Corp
¢ 険I2: Student@Google Summer of Code
¢ Norikraとのvわり: jrubyでudfける圭隈k苧したりした
About me
Norikraでアプリログを鹿してリ
アルタイムエラ`宥岑
あるいはNorikraの附除な試喘隈
テ`マ
¢ screen or tmux + tail -F ?
¢ 畠何のアプリれる
¢ 送れ壼いと毛さない
暴の栽:
¢ アクティブに_kしてるとき or デプロイr しかてない
¢ バッチ吉嶷勣蕉中の払,ikachanでIRCへgo
¢ でもerrorとかcriticalレベルで預かれるログは畠何たい
アプリのログOしてる
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);
}
}
エラ`ログは畠何宥岑する
エラ`宥岑という兆の皆永粥珂
¢ メッセ`ジは篳によって裏虫に`うかもしれない
¢ ログのレベルファイル佩が揖じなら揖じような坪否とみなして措いよね
¢ エラ`宥岑はきっかけざっくり坪否が蛍かれば措い
¢ はどうせファイルに佩くでしょ
サマライズしよう
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";
# ... ファイルにくI尖 ...
# fluentdに畠何誘げちゃうど
$fluent_logger->post('foo.applog', {
level => $level,
file => $file,
line => $line,
host => $hostname,
message => $message,
});
}
やること1
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
$ crontab -l
*/1 * * * * setlock -nx /tmp/norikra-error-notify.pl.lock /path/to/norikra-error-notify.pl
やること3
#!/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
Architecture
App
IRC norikra-error-notify.pl
@ cron
すっきり
¢ }方ノ`ド}方インスタンスのアプリログをまとめられる
¢ Fluentdに誘げとけばアプリの翌箸琶垢┐
¢ ロガ`とeに宥岑I尖を秘れなくてgむ
措い泣
音:
¢ プロジェクト阿縫エリ鞠hしたりcron碧譴韻襪里瓩鵑匹
¢ 1業栖た宥岑が俐屎恬I嶄に採指もくるのがうっとおしい
婢李:
¢ そのへん中宜みてくれるいい湖じのアプリでも恬るけ
¢ と房っているところです
婢李
アプリログにvして:
¢ アプリのログはくだけじゃなくてちゃんとOしよう
Norikraにvして:
¢ Norikraは附除なとこでも聞える
¢ SQLければだいたい聞える
¢ ログ+ストリ`ム(リアルタイム)I尖のMみ栽わせは弼?でき
そう
¢ ありがとう タゴ愁皀螢
まとめ

More Related Content

Norikraでアプリログを鹿してリアルタイムエラ`宥岑 # Norikra meetup