アプリからの情報を秘密裏にApacheのログに書き出す方法

16

Click here to load reader

Transcript of アプリからの情報を秘密裏にApacheのログに書き出す方法

Page 1: アプリからの情報を秘密裏にApacheのログに書き出す方法

Monitoring Casual Talk #3

2013/03/08 Y.Teraoka

Page 2: アプリからの情報を秘密裏にApacheのログに書き出す方法

自己紹介

@yteraoka

某ISPで8年サーバエンジニアその後現職インフラ屋よろずIT関連http://blog.1q77.com/

前回に続き2回目です。よろしくお願いします。

Page 3: アプリからの情報を秘密裏にApacheのログに書き出す方法

自己紹介

今流行の Fluentd plugin 書いてみました

書いただけで使ってないけど・・・

Page 4: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache の Log にアプリからの情報を入れ込みたい

でも Client (Browser) にはそのデータは返したくない

今日の話題

Page 5: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache の Log にアプリからの情報を入れ込みたい

→Response Header に入れれば

%{HeaderName}o で出力できる

でも Client (Browser) にはそのデータは返したくない

今日の話題

Page 6: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache の Log にアプリからの情報を入れ込みたい

→Response Header に入れれば

%{HeaderName}o で出力できる

でも Client (Browser) にはそのデータは返したくない→あれ、返しちゃう・・・

今日の話題

Page 7: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache の Log にアプリからの情報を入れ込みたい

→Response Header に入れれば

%{HeaderName}o で出力できる

でも Client (Browser) にはそのデータは返したくない→あれ、返しちゃう・・・

そうか、Header unset HeaderName だ

今日の話題

Page 8: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache の Log にアプリからの情報を入れ込みたい

→Response Header に入れれば

%{HeaderName}o で出力できる

でも Client (Browser) にはそのデータは返したくない→あれ、返しちゃう・・・

そうか、Header unset HeaderName だ

→あれ、unset すると %o で使えない...

今日の話題

Page 9: アプリからの情報を秘密裏にApacheのログに書き出す方法

じゃあどうするか?

Page 10: アプリからの情報を秘密裏にApacheのログに書き出す方法

今でしょう!!

Page 11: アプリからの情報を秘密裏にApacheのログに書き出す方法

Patch 書くでしょう

Page 12: アプリからの情報を秘密裏にApacheのログに書き出す方法

mod_headers.c に手を入れました

https://gist.github.com/yteraoka/5098379

Page 13: アプリからの情報を秘密裏にApacheのログに書き出す方法

で HeaderName の値を subprocess_env にコピー

し、Header から削除します、これで %{EnvName}e

を使ってログに書き出せます

使い方

Header toenv HeaderName EnvName

Page 14: アプリからの情報を秘密裏にApacheのログに書き出す方法

他のDBなどと突き合わせなくても誰のアクセスなのか?などが把握可能

何が嬉しいのか?

X-UserId: 1234

X-Age: 10代X-Age: 20代

X-Sex: 女

X-UserClass: VIP

こんなの入ってたら便利じゃない?

(あ、これだとClientに返しても問題ないか??)

Page 15: アプリからの情報を秘密裏にApacheのログに書き出す方法

そういえば今使ってるのは

mod_jk.c + 3 行 patch 版だった

mod_proxy_http.c 版、mod_caucho.c 版

とかあって嫌になったので

mod_headers.c で対応したのが今回のやつ

Page 16: アプリからの情報を秘密裏にApacheのログに書き出す方法

Apache 2.4.4 から mod_headers で%l, %i, %b

が使えるようになってます%l: Load Average

%i: idle process and thread percentage

%b: busy process and thread percentagehttp://httpd.apache.org/docs/2.4/mod/mod_headers.html

おまけ