際際滷

際際滷Share a Scribd company logo
Lightning Talk at YAPC今Asia 2012




Fluentdで、コ`ドをいてみ
ようかなと房った
       perls磯定くらいですやさしくしてください



                                    @studio3104
@studio3104 (Satoshi SUZUKI)


-- 永艶姻鉛s磯定くらい

-- WEBI順2定朕

-- 曇、弟、連徨います




-- ソシャゲ、巷塀サイト、パチ(スロ)ンコ

-- こんなのやってます ★★★★★★★

-- Perlと伉嶄するらしいです



 徭失B初
碧並採してるかってかれると

仝IT狼のエンジニア々
仝え、SE織廛蹈哀薀泯拭
仝`う、インフラ狼々
仝え、インフラ織ス拭
Yapc -asia 2012 lt @studio3104
インフラ
エンジニア
インフラ
碧並採してるかってかれると



仝インフラ々
仝え、インフラ織ス拭
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
仝インフラのエンジニアなんだ
からプログラムなんてく駅
勣ないんだよね。々
                        23r 槻來


インフラエンジニアのプログラミングへの吭R
仝とりあえずなんとなくJavaの
秘TIってひと宥りやって
みたけど聞い侭ないと房って
る。々
                        24r 槻來
インフラエンジニアのプログラミングへの吭R
仝\喘に駅勣で徭蛍で恬りた
いと房うI尖って、Y蕉シェ
ルスクリプトでgに栽っちゃう
んだよね。々
                        25r 槻來
インフラエンジニアのプログラミングへの吭R
仝やっぱりコ`ドけるように
なりたいので、サ`ビスの砿
尖鮫中恬ってみようとしたけ
ど伎孵した。々
                        26r 槻來
インフラエンジニアのプログラミングへの吭R
畠何
^肇のワタシが
房ってたことです
Yapc -asia 2012 lt @studio3104
\喘狼エンジニアが
徭蛍でいて嗤吩であろうもの


?Munin Plugin
?Nagios Plugin
?Ganglia Plugin
?Zabbix Plugin
?fluent-plugin
\喘狼エンジニアが
徭蛍でいて嗤吩であろうもの


?Munin Plugin ★ なんでもok
?Nagios Plugin ★ なんでもok
?Ganglia Plugin ★ pythonだけ
?Zabbix Plugin ★ よく岑らない
?fluent-plugin ★ ruby
そこで
out_exec_filter
Yapc -asia 2012 lt @studio3104
Yapc -asia 2012 lt @studio3104
log_format main
    '$remote_addr - $remote_user
[$time_local] "$request" $status
$body_bytes_sent "$http_referer"
"$http_user_agent "$request_time';


 combined+レスポンスタイムなnginxのログフォ`マット
{"host":"192.168.1.4","user":"-","method":"
GET","path":"/foo/bar/index.psgi?
source=ig&hl=ja&rlz=1G1GGLQ_JAJP314&q=
td-agent&oq=td-
agent&aq=f&aqi=&aql=&gs_l=igoogle.3...
0.0.0.387.0.0.0.0.0.0.0.0..0.0...0.0.","code":"
200",size":"0","referer":"-","agent":"Mozilla/5.
0 (X11; Linux x86_64) AppleWebKit/536.5
(KHTML, like Gecko) Chrome/19.0.1084.56
Safari/536.5","response":"0.000"}

 噸宥にFluentdのI尖を宥すとこうなる
{"host":"192.168.1.4","user":"-","method":"
GET","path":"/foo/bar/index.psgi?
source=ig&hl=ja&rlz=1G1GGLQ_JAJP314&q=
td-agent&oq=td-
agent&aq=f&aqi=&aql=&gs_l=igoogle.3...
0.0.0.387.0.0.0.0.0.0.0.0..0.0...0.0.","code":"
200",size":"0","referer":"-","agent":"Mozilla/5.
0 (X11; Linux x86_64) AppleWebKit/536.5
(KHTML, like Gecko) Chrome/19.0.1084.56
Safari/536.5","response":"0.000"}

 combined+レスポンスタイムなnginxのログフォ`マット
{"agent":"Mozilla/5.0 (X11; Linux x86_64)
AppleWebKit/536.5 (KHTML, like Gecko)
Chrome/19.0.1084.56 Safari/536.5","code":"
200","host":"192.168.1.4","method":"GET","
path":"/foo/bar/index.psgi","referer":"-","
response":"0.000","size":"0","user":"-","
query_strings":{"source":"ig","aqi":"","aq":"
f","oq":"td-agent","rlz":"1G1GGLQ_JAJP314","
hl":"ja","gs_l":"igoogle.3...
0.0.0.387.0.0.0.0.0.0.0.0..0.0...0.0.","q":"td-
agent","aql":""},}
 combined+レスポンスタイムなnginxのログフォ`マット
Yapc -asia 2012 lt @studio3104
デモ
MySQL                                                                  slow_log



  1 #!/usr/bin/env perl$                                  27 $                            tail
  2$                                                      28 unless ( defined $slowlog->{sql} ) {$
  3 use strict;$                                          29 print $mp->pack($slowlog);$
  4 use warnings;$                                        30 next;$
  5 use Data::Dumper;$                                    31 }$
          EXPLAIN
  6 use DBIx::Handler;$
  7 use JSON::XS;$
                                                          32 $
                                                          33 my $select_statement;$
  8 use Data::MessagePack;$                               34 if ( $slowlog->{sql} =~ /(select[^;]+)/i ) {$
  9$                                                      35 $select_statement = $1;$
 10 $| = 1;$                                              36 }$
 11 $                                                     37 $
 12 my $mp = Data::MessagePack->new();$                   38 if ( $slowlog->{sql} =~ /^use ([^;]+)/i ) {$
 13 $                                                     39 $db = '`' . $1 . '`';$
 14 my $db_user = "root";$                                40 }$
 15 my $db_passwd = "";$                                  41 $
 16 my $db_opt = { RaiseError => 0, PrintError => 1 };$   42 if ( defined $db && defined $select_statement ) {$
 17 my $handler = DBIx::Handler->new( "DBI:mysql:         43 $handler->dbh->do("use $db");$
database=information_schema:1 27.0.0.1", $db_user,        44 my $explains = eval { $handler->dbh-
$db_passwd, $db_opt );$                                   >selectall_arrayref( "EXPLAIN $selec t_statement", +{
 18 $                                                     Slice => {} } ); };$
 19 my $db;$                                              45 if ( ref $explains eq 'ARRAY' ) {$
 20 my $long_query_time = $handler->dbh-                  46      $slowlog->{explain} = $explains;$
>selectrow_array($                                        47      $slowlog->{database} = $db;$
 21 "SELECT VARIABLE_VALUE FROM                           48 }$
GLOBAL_VARIABLES WHERE VARIABLE_NAME =                    49 }$
'LONG_Q UERY_TIME'");$                                    50 $
 22 $handler->dbh->do("SELECT SLEEP                       51 print $mp->pack($slowlog);$
($long_query_time)");$                                    52 }$
 23 $
 24 while ( my $json = <STDIN> ) {$
 25 my $slowlog = eval { decode_json($json); };$
 26 next if ($@);$                                                                                       store    MongoDB
永艶姻鉛s
Lightning Talk at YAPC今Asia 2012




Fluentdで、コ`ドをいてみ
ようかなと房った
               ご賠ありがとうございました



                                    @studio3104

More Related Content

Yapc -asia 2012 lt @studio3104