godではwatch対象アプリの標準出力をコマンドに渡せる、loggerでsyslogへというのが定番のよう。
でもsyslogってのも今更感があったのでmongoimportに渡してみたらmongodbに直行してくれた。
さて、mongoimportをつかって適当な文字列をmongodbにストアするには、下記のようにする。
# echo hogehoge | mongoimport -d logger -c rawdata --type tsv -f value
connected to: 127.0.0.1
imported 1 objects
通常インポートに使う文字列はjsonだが、typeをtsvにしているので指定した1つのフィールドに収めてimportしてするという次第。
ドキュメントを確認する。
> db.rawdata.find()
{ "_id" : ObjectId("4e198edee39b019df5a93157"), "value" : "hogehoge" }
ちなみにタブがあったら"field1","field2".. と勝手にずれる。
csvでカンマ区切りもいける。
# echo hogehoge,piyopiyo | mongoimport -d logger -c rawdata --type csv -f value1,value2
connected to: 127.0.0.1
imported 1 objects
> db.rawdata.find()
{ "_id" : ObjectId("4e198edee39b019df5a93157"), "value" : "hogehoge" }
{ "_id" : ObjectId("4e198f10e39b019df5a93158"), "value1" : "hogehoge", "value2" : "piyopiyo" }
god のコンフィグでこんな感じにすると、STDOUTとSTDERRがmongodbに入っていった。
w.log_cmd = 'mongoimport -d logger -c rawdata --type tsv -f value'
w.err_log_cmd = 'mongoimport -d logger -c rawdata_err --type tsv -f value'
そのあとどうするかは特に決めてないが、、MRするか。
1 件のコメント:
[...] 少々前に似たような記事、logger代わりにmongoimportを上げた。 [...]
コメントを投稿