SlideShare a Scribd company logo
1 of 16
Download to read offline
Norikra meetup session #2
kawamuray
● 名前: kawamuray
● 本業: 大学院修士課程2年
● 副業1: アルバイトサーバサイドエンジニア@LINE Corp
● 副業2: Student@Google Summer of Code
● Norikraとの関わり: jrubyでudf書ける方法発明したりした
About me
Norikraでアプリログを集計してリ
アルタイムエラー通知
あるいは,Norikraの身近な活用法
テーマ
● screen or tmux + tail -F ?
● 全部のアプリ見れる?
● 流れ早いと見逃さない?
私の場合:
● アクティブに開発してるとき or デプロイ時 しか見てない
● バッチ等重要局面の失敗はikachanでIRCへgo
● でも,errorとかcriticalレベルで吐かれるログは全部見たい
アプリのログ,監視してる?
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);
}
}
エラーログは全部通知する?
エラー通知という名のSPAM
● メッセージは変数によって微妙に違うかもしれない
● ログのレベル,ファイル,行が同じなら同じような内容とみなして良いよね
● エラー通知はきっかけ.ざっくり内容が分かれば良い.
● 詳細はどうせファイル見に行くでしょ?
サマライズしよう
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
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に投げとけばアプリの外側で使える
● ロガーと別に通知処理を入れなくて済む
良い点
不満:
● プロジェクト毎にクエリ登録したりcron仕掛けるのめんどい
● 1度来た通知が修正作業中に何回もくるのがうっとおしい
展望:
● そのへん面倒みてくれるいい感じのアプリでも作るけ?
● と思っているところです.
展望
アプリログに関して:
● アプリのログは書くだけじゃなくてちゃんと監視しよう
Norikraに関して:
● Norikraは身近なとこでも使える
● SQL書ければだいたい使える
● ログ+ストリーム(リアルタイム)処理の組み合わせは色々でき
そう
● ありがとう タゴ=モリス
まとめ

More Related Content

More from kawamuray

Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEKafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEkawamuray
 
Multitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEMultitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEkawamuray
 
LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...kawamuray
 
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEKafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEkawamuray
 
Monitoring Kafka w/ Prometheus
Monitoring Kafka w/ PrometheusMonitoring Kafka w/ Prometheus
Monitoring Kafka w/ Prometheuskawamuray
 
Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restorekawamuray
 

More from kawamuray (6)

Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINEKafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
Kafka Multi-Tenancy - 160 Billion Daily Messages on One Shared Cluster at LINE
 
Multitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINEMultitenancy: Kafka clusters for everyone at LINE
Multitenancy: Kafka clusters for everyone at LINE
 
LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...LINE's messaging service architecture underlying more than 200 million monthl...
LINE's messaging service architecture underlying more than 200 million monthl...
 
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINEKafka meetup JP #3 - Engineering Apache Kafka at LINE
Kafka meetup JP #3 - Engineering Apache Kafka at LINE
 
Monitoring Kafka w/ Prometheus
Monitoring Kafka w/ PrometheusMonitoring Kafka w/ Prometheus
Monitoring Kafka w/ Prometheus
 
Docker + Checkpoint/Restore
Docker + Checkpoint/RestoreDocker + Checkpoint/Restore
Docker + Checkpoint/Restore
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

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