社内SubversionからGitHubに移行するのにあたって、git-svnで移行処理を進めたんですが、 Subversion時代の
- Author名
- Authorのメールアドレス
をGitHubのものに合わせたくて修正方法を調べていたらgit filter-branchを利用すると良いとのこと。
私は下記のような形で一括変更。(Subversion時代のAuthor名はmaedaです)
Subversion時代の遺産も活用出来るようになりました。
社内SubversionからGitHubに移行するのにあたって、git-svnで移行処理を進めたんですが、 Subversion時代の
をGitHubのものに合わせたくて修正方法を調べていたらgit filter-branchを利用すると良いとのこと。
私は下記のような形で一括変更。(Subversion時代のAuthor名はmaedaです)
Subversion時代の遺産も活用出来るようになりました。
下記3つはいずれもcommitの修正ですが、違いが分からない人は Gitポケットリファレンスを読むことをオススメします。(答えはGitポケットリファレンスに書いてあります。)
1 2 3 | |
以前書いたとおり社内SubversionリポジトリをGitHubへの移行中で GitHubへの本格移行する前に、「運用ルール決め」と「意識合わせ」の意味で 社内のインフラ系エンジニア向けに「Git、GitHub講習会」と銘打って勉強会を開催。
個人的にはGitHubも活用してて、Git自体も理解しているつもりだったんですが、 人に説明していると、理解があやふやな点が結構あることがわかったので、 先日発売されて、周りの評判も上々なGitポケットリファレンスを購入。
Gitの概念について説明している書籍は多数発売されていますが、本書はGitの一つ一つのコマンドについて 見やすく説明されているので、普段からGitをガンガン使っている人ほど手元に置いておくのが良いんじゃないかなーと思ったり。
特に複数人でのGit運用時に遭遇するであろうエラーとその対処方法について、 一つ一つ書いてあるので、GitHubに移行完了した後にかなり役に立ちそうな予感。
またgit-svnについても書いてあるので、いろいろ事情があってSubversionを使わざるを得ない人も 読むとある程度ストレスから解放されるんじゃないかと思います。(私がそうだったように)
Gitポケットリファレンスを手元に置いてワンランク上のエンジニアを目指しましょう!!1
Fluentdを触るようになって、いろんなログをfluentdに 渡すように試行錯誤している最中。
td-agent.conf、fluent.confを用意するときに任意のjson形式にするために
正規表現を用いてformatを書く必要があるんですが、formatの作り方というかデバック方法について
どういう手順に作ると良いのか情報がネット上に見当たらず試行錯誤中。
もっと良い方法を教えてもらいたいので、今やっている方法を晒してみる。
たとえばfluentd関連の情報を調べてると、
1
| |
1
| |
という感じで、formatの正規表現がサラッと書いてあって、 当然作れるでしょ的な感じでformatの作り方については言及されてない。 でも実際に作ろうとすると、どういう方法でやればいいのかよく分からない。
たとえば下記のようなsquidのaccess.log(squidのログ形式)をfluentdに渡して
1
| |
下記のようにシリアライズしたい。
1 2 3 4 5 6 7 8 9 10 11 12 | |
でもこれを実現するためのformatの作り方の手順を解説しているところが無い。(調べ方が悪いだけかもしれないですが)
最初は
というのを繰り返しやっていたんですが、非効率過ぎてこれだとformatを作る気にならず途中で断念。
というのが数ヶ月前の話。
今回再チャレンジでいろいろ調べてみると有益な情報が。
fluent/parserの"RegexpParser"クラスを利用すればformat作成のデバッグが出来るらしい。
上記サイトを参考に、下記のようなデバッグ用スクリプトを用意してlog,format,time_formatの部分を調整していく。
vim+quickrunとかの環境だと書きながらテストが出来るのでオススメです。
(外部ファイルを読み込ませる形より、log,formatを直接修正しながらテストしたほうが効率的でした)
いきなり全部のformatを書くのは無理なので、下記のような感じでログの一部ずつやっていく。
(今回の例だとtime_formatは利用していないので空のままです)
下記のような形でdateの項目だけ記載してシリアライズしてみる
意図した形式で出力された。
1
| |
上手くいったら、durationなど1個ずつ項目を増やしてやっていく。
これを繰り返していくと、下記のような形で出来上がる。
これをconfに反映。とりあえずfile書き出しで様子見。(td-agent.confには=は必要無いので消す)
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
これでやりたいことが実現出来た。

もっと上手いやり方ありそうなんだけど、「こうすると良い」とか誰かもっと良い方法を教えて欲しい。
追記 2012年7月16日
@tagomorisさんがirbを利用する方法を教えてくれました。感謝です
追記 2012年10月01日
今だとこういう便利なものがあるようです!!
社内にGrowthForecastブームが 来ているので、乗り遅れないように導入。
@do_akiさんのブログ記事にSupervisorでの起動方法を追加した内容です。 何回もググっているので自分の作業用メモも兼ねて。同じ事を2回ググったらブログに書く精神で。
導入環境はSL6.2です。作業の流れとしては
という感じです。
GrowthForecastは下記のように管理します。

1 2 | |
Perlbrewを導入するのでGrowthForecast用にユーザーを作成。パスワードも設定
1 2 | |
GrowthForecastの利用にはPerlbrewの利用が推奨されているので、perlbrewを導入。 growthforecastユーザのホームディレクトリ内に導入。
1 2 3 4 | |
続いてperl-5.16.0とcpanmの導入。結構時間がかかります。
1 2 3 | |
2012年7月5日 10:00 追記
antipopさんに教えてもらい、現在はもう不要な手順です。 Makefile.plに含まれているので別途導入する必要はありません。
1
| |
引き続き作業はgrowthforecastユーザで。
cpanmでの方法に修正 2012年7月5日 13:00
@oranieさんからの指摘でcpanmの方法に修正。
1
| |
とりあえず起動確認。
1
| |
hostname:5125にアクセスして表示されるか確認。
ちゃんと動いていたらctrl+cで終了。
過去の記事を参考にsupervisord経由で GrowthForecastを起動する。
ここからはrootかsudoで作業します。
1 2 3 | |
1 2 | |
supervisordが落ちたら元も子もないのでUpstart経由で起動。
/etc/init/supervisord.confを用意
1
| |
GrowthForecast用の設定を用意。(commandのところもっと上手い書き方知ってる人いたら教えてください!)
GrowthForecastデータ用ディレクトリも用意
1 2 | |
/tmp/.xslate_cache/に書き込み権限がないとエラーが出たので設定
1
| |
1 2 3 | |
動作ログでエラーを吐いてないか確認。
1
| |
正常に動作していれば、GrowthForecastをkillしてみる。
1
| |
を実行して、再度起動してくるか確認。
GrowthForecastがSupervisord経由で管理出来るように。
一通り作業を終えた後に@kazeburoさんがProcletというsupervisorを出していたことに気づいた。
とりあえず常駐化出来たので、fluentdを組み合わせてガンガン使っていこう。
EtsyからNode.jsで書かれた、ブラウザから利用するlogs streamerのSupergrepが リリースされたので早速試してみました。
ツールとしては任意のログが、任意の不要なログを除いた形式で出力され、 そこからさらにブラウザ上で自分でフィルタをかけるようなツールです。
公式の説明としても、
1
| |
という感じの説明をしていて、解析に必要無いログは排除する設定が任意で出来て、表示されています。
導入環境はSL6.2です。
SupergrepはNode.jsで書かれているので、Node.jsとnpmを導入。 2012年6月29日現在の最新版v0.8.0を導入
1 2 3 4 5 6 7 8 | |
1 2 3 | |
とりあえずデフォルトのまま起動。
1 2 3 4 5 6 | |
http://hostname:3000にアクセスしてみると下記のような感じのガイドが表示される




と説明が続く。
Supergrepの設定は同梱されているlocalConfig.jsに記載。
私は下記のように修正。当然ですが、apache以外のlogにも使えます。
Supergrepがlogを読み取れないといけないので、権限を修正
1
| |
設定が済んだら、再度Supergrepを起動してみる。
1
| |
apache_logを403でハイライトした感じ

ログサイズがでかい場合は、どのくらいの負荷になるのかなど検証しないといけないですが、
とかに向いてるかなという印象。 不要なログが排除されててログの見通しがよく、ターミナル上で見るより見やすい。
でも今だとfluentd+mongodbとかで、そういう環境を整えるのが良いかなーと思ったりも。
Etsyはサイトの見た目とは対照的に、SolrのIndexレプリケーションにBitTorrentを使っていたり、 技術的に尖ったことをやっていて面白い会社ですね。