2015年3月30日月曜日

Logstashでファイルを最後まで読んだあとに終了する方法

はじめに

 Logstashの長所はリアルタイムにログを処理できるところですが、場合によってはその場限りで実行したいときがあると思います。たとえばスクリプトからLogstashを実行し、処理が完了してから次の処理を実行したいようなときですね。
 これをやる方法がありました。標準入力でファイルを渡すだけです。ただし、Logstash1.4.0~1.4.2ではエラーが出て動いてくれませんでした。(Windows環境で。Linuxは未検証)
 以下、バッチファイルでLogstashを起動し、ログファイルからcsvを出力して終了させてみます。

環境

Logstash1.3.3
java7
Windows7

準備

javaのPATHは通しておきます。
Logstash1.3.3をダウンロードします。次のURLに行き「download logstash 1.3.3」をクリック。
以下のファイルをデスクトップに置きました。
  • syslog.log
  • logstash-1.3.3-flatjar.jar
  • test.conf Logstash設定ファイル
Logstashへの入力を設定するinput部分で、標準入力を受け取るstdinプラグインを用います。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
input {
  stdin {}
}

filter {
  grok {
      match => { "message" => "%{TIMESTAMP_ISO8601:timestamp}.*" }
  }
}
 
output {
  csv {
    fields => ["@timestamp"]
    path => "C:\Users\Ryuji\Desktop\out.csv"
  }
}

  • runlogstash.bat Logstashを呼び出すバッチファイル
Logstash起動時に処理するログファイルを入力します。

1
2
3
4
cd %~dp0
echo start
java -jar logstash-1.3.3-flatjar.jar agent -f test.conf < C:\Users\Ryuji\Desktop\syslog.log > nul
echo end 


実行

バッチファイルを実行します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
C:\Users\Ryuji\Desktop>C:\Users\Ryuji\Desktop\runlogstash.bat

C:\Users\Ryuji\Desktop>cd C:\Users\Ryuji\Desktop\

C:\Users\Ryuji\Desktop>echo start
start

C:\Users\Ryuji\Desktop>java -jar logstash-1.3.3-flatjar.jar agent -f test.conf
0<C:\Users\Ryuji\Desktop\syslog.log 1>nul

C:\Users\Ryuji\Desktop>echo end
end

C:\Users\Ryuji\Desktop>

Logstashが終了しているのが確認できました。

2015年3月22日日曜日

JenkinsとPerforceの連携

はじめに

 JenkinsとPerforceの連携に関する日本語の記事が少ない。ということで、JenkinsにP4 Pluginを導入し、Perforce上のファイルをJenkinsワークスペースに落とすところまでのメモ。

環境

Perforceマシン1台
Jenkinsマシン1台

P4 Pluginの導入

ホーム画面 > Jenkinsの管理 > プラグインの管理 > 利用可能
 P4 Pluginにチェックを入れて再起動せずにインストール。


環境変数の設定

 P4 Pluginが使用するPerforceクライアントの場所を指定します。Jenkinsマシンにp4.exe(Linuxはp4)を配置し、PATHを設定します。


認証情報の追加

ホーム画面 > 認証情報 > グローバルドメイン > 認証情報の追加
 Perforceサーバにアクセスするために認証情報を追加します。「種類」から「Perforce Passward Credential」を選んで必要な情報を入力し、Test Connectionボタン押下。接続確認が成功したらOKボタンを押して登録完了。


ジョブの設定と実行

 テスト用に新規ジョブを作成します。ジョブ設定で「ソースコード管理」の項目にPerforce Softwareが追加されているので選択、すると設定項目が出てきます。

  • Perforce Credentials
 先ほど追加した認証情報を選択する。Addボタンでここから認証情報を追加することもできる。
  • Workspace behaviour
 まず「Manual(custom view)」を選択。このモードを選択すると、指定したワークスペースが存在しないとき自動で生成される。
 Workspace nameではJenkinsが使用しているとわかるように頭に"jenkins-"などとつけるべし。ここで設定したワークスペースはジョブ実行時に設定が書き換わるため(root、ビューなど)注意。また、複数ジョブで同じワークスペースを用いるとうまく動かないことがあるので、ジョブごとにユニークなものを用いましょう。ワークスペース名にジョブ名を含めると良いと思います。
 View MappingsでJenkinsに落としてくるファイルの位置を指定します。下図は//depot/project1/以下のファイルを指定する例。



  • Populate options
 ファイルの同期方法を指定します。"Auto cleanup and sync"を選ぶと最も効率的に同期するようです。うまく同期できないときは"Forced clean and sync"で毎回すべてのファイルを削除して落としなおすことがきます。
  • Polling build filters
 SCMをポーリングするときに監視したくない位置を指定できます。今回は手動でビルドするので設定しません。


設定は以上です。保存してビルドを実行します。
 

確認

 うまく動けばジョブのワークスペースにファイルが落ちてきているはずです。