Cloudera Manager + fluentd webhdfsのイベントで報告されるFileNotFoundExceptionを除外する

Cloudera Manager Standard(以下CM)で環境構築中。 

CMでは,CMの管理画面上で各種サービスの設定を管理できるようになっているが,主要な設定以外の任意の設定を追加したい場合,安全バルブというフックを利用することで可能となっている。fluentd + webhdfsでHDFSへファイルを書き込む場合,2回のHTTPリクエストが発生する。1回目のHTTPリクエストでは,新規ファイル作成の場合は以下のようなFileNotFoundExceptionが表示されるが,これは仕様どおりで実質無害なExceptionなので除外したい。

ERROR org.apache.hadoop.security.UserGroupInformation: PriviledgedActionException as:hadoop (auth:SIMPLE) cause:java.io.FileNotFoundException: File /tmp/service=test/dt=20131214/cent6.20131214-20.fd1.log not found.

初め,NameNodeの安全バルブでappenderのRFAにorg.apache.log4j.varia.StringMatchFilterの設定を加えたが,変わらずCM管理画面上のイベントには,FileNotFoundExceptionが報告されてしまう。ということで,どうもEventServerは上記とは別にログイベントを受け取っているようだ。EventServer,NameNodeのlog4j.propertiesを見ると,以下のような定義が見られる。

log4j.appender.EventCatcher=com.cloudera.cmf.eventcatcher.client.logs.ExceptionForwarderAppender

ということで,RFAとは別にログイベントを転送しているであろうこのappenderにfilter設定を追加すれば上手くいきそうである。properties形式で以下のように安全バルブに設定を加える。

log4j.appender.EventCatcher.filter.1=org.apache.log4j.varia.StringMatchFilter
log4j.appender.EventCatcher.filter.1.StringToMatch=FileNotFoundException
log4j.appender.EventCatcher.filter.1.AcceptOnMatch=false

これで今のところイベントにあがってきていないので上手くいったようだ。NameNodeのログもフィルタリングする場合は,RFAにも設定を加える。

参考

byebyehaikikyou

日記やIT系関連のネタ、WordPressに関することなど様々な事柄を書き付けた雑記です。ITエンジニア経験があるのでプログラミングに関することなどが多いです。

シェアする

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする

Translate »