前提
Airflowにはスケジュールされたタスクの進捗状況やログなどを確認することが出来るwebserverがついている。
問題
ただこれUTCで固定されている。なので動作としてはJSTで動いていても、画面上ではUTCになってしまう。
頭の中で時刻を変換しないといけないから結構辛い。
これについてのissueは出ているけどまだマージはされていない。
https://github.com/airbnb/airflow/issues/227
解決策
全体共通
上記issueにも書いてあるがハードコーディングしてある部分を手動で直してあげる
/usr/local/lib/python2.7/site-packages/airflow/www/templates/admin/master.html
timestampとして設定されているUTCsecondsの代わりにx.getTime()
にしてあげる。
x = new Date()
//var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000);
var seconds = x.getTime();
$("#clock").clock({
"seconds":"false",
"calendar":"false",
"format":"24",
"timestamp":seconds
}).click(function(){
alert('{{ hostname }}');
});
$('span').tooltip();
/usr/local/lib/python2.7/site-packages/airflow/www/static/jqClock.min.js
下記コード部分に"UTC </span>"
とかかれているのでここを任意の文字列に変更してあげる。
<span class='clocktime'>"+p+":"+l+(n.seconds=="true"?":"+v:"")+o+"UTC </span>");t[r]=setTimeout(function(){f($(j),n)},1000)}};f($(this),d)})};
tree view
/usr/local/lib/python2.7/site-packages/airflow/www/static/d3.v3.min.js
Qa.scale.utc
をQa.scale
に変更する。
/usr/local/lib/python2.7/site-packages/airflow/www/templates/airflow/tree.html
dttm.setHours(dttm.getHours()+7)
でplus7時間されているのでdttm.setHours(dttm.getHours())
にしてあげる。
var extent = d3.extent(base_node.instances, function(d,i) {
dttm = new Date(d.execution_date);
dttm.setHours(dttm.getHours());
//dttm.setHours(dttm.getHours()+7)
return dttm;
});
gantt view
/usr/local/lib/python2.7/site-packages/airflow/www/static/highcharts.js
useUTC:!0
からuseUTC:false
に変更してあげる
## 最後に
これで少しは見やすくなった