はじめに
Jenkinsのログにタイムスタンプを残したいと思ったことはないでしょうか?
何かあったときに後から確認したい、監査に使いたい、等々。
ただ見たいだけであれば、Timestamperプラグインを入れることで、JenkinsのGUIの画面上から確認することはできます。
しかし、ログがたくさんたまったらアーカイブして…ということをしていると、古いログのタイムスタンプは見れなくなってしまいます。(そんな古いログのタイムスタンプを見る必要があるかどうかは置いておいて…)
上記に該当するログファイルを見ても、以下のようにGUIの画面では見えていたはずのタイムスタンプが見当たりません。
root@test ~]# cat /var/lib/jenkins/jobs/test-job/builds/1/log
Started by user ha:AAAAlx+LCAAAAAAAAP9b85aBtbiIQTGjNKU4P08vOT+vOD8nVc83PyU1x6OyILUoJzMv2y+/JJUBAhiZGBgqihhk0NSjKDWzXb3RdlLBUSYGJk8GtpzUvPSSDB8G5tKinBIGIZ+sxLJE/ZzEvHT94JKizLx0a6BxUmjGOUNodHsLgAzWEgZu/dLi1CL9xJTczDwAj6GcLcAAAAA=admin
Building in workspace /var/lib/jenkins/jobs/test-job/workspace
[workspace] $ /bin/sh -xe /tmp/hudson4221146535790319885.sh
+ echo Hello
Hello
Finished: SUCCESS
方法
JenkinsのAPIを使い、以下のURLにアクセスすると、タイムスタンプ付きのログのみをテキストで見ることができます。
http[s]://[url]/job/[job_name]/[build_number]/timestamps/?time=HH:mm:ss&appendLog

これを利用して以下のように curl
コマンドや wget
コマンドを使うことで、タイムスタンプ付きのログファイルを保存することができます。
[root@test ~]# curl -u test:test "http://192.168.10.20:8080/job/test-job/1/timestamps/?time=HH:mm:ss&appendLog" -o test-job.log
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
121 242 0 242 0 0 1172 0 --:--:-- --:--:-- --:--:-- 1174
注意点
これに対応しているのが、Timestamper 1.8.0からなので、それより新しいバージョンでないと使えません。
参考
- Timestamper - Jenkins - Jenkins Wiki
https://wiki.jenkins-ci.org/display/JENKINS/Timestamper