ELK 排程設定

之前設定了 jenkins 的 cron 格式,然而 ELK 上也有 cron 的格式可以套用在 watcher 上,然而兩邊的格式稍有不同,但整體而言是相像的

在 jenkins 上的 cron 格式只有五個格式,可見上一篇的說明,不過最近在設定 ELK 的 cron 格式時,發現居然可以設定到七個

先看看 ELK 怎麼說明每一個參數所代表的意義
<seconds> <minutes> <hours> <day_of_month> <month> <day_of_week> [year]

需要特別注意第六個參數,他的 1 代表的是星期日, 2 代表的才是星期一
<day_of_week>
(Required) Valid values: 1-7, SUN-SAT, sun-sat, and the special characters , - * / ? L #

最大的差別就在於第一個參數跟第七個參數

簡言之就是 ELK support 到了秒的層級,至於 year 要不要設,就是選擇性的欄位,不填也沒關係,所以常見的 cron 格式大多是設定到六個

其中 ELK 在不同欄位所能用的特殊字元也強大很多

舉其中幾個比較少見的出來看看

/
 遞增,在第二個欄位(分)以 0/1 而言,就是從 0 分開始,每次遞增 1 分鐘 觸發,也就是每分鐘會執行的形式執行

L
 Last, 先看範例 0 5 9 ? * 2L。
 在第六個欄位(day_of_week),而給的值是 2L,就代表是最後一個星期一 (1是星期日,2是星期一,可以看<day_of_week>的列舉說明),所以這樣的形式就是 每個月的最後一個星期一的 9:05 a.m. UTC 執行,如果要自己寫程式完成這樣的需求,絕對是麻煩的,所以這塊雖然少用,但卻非常的厲害。
 
#
這個目前只能用在第六個欄位, 範例 0 5 9 ? * 6#1 (第一個數字6 代表的是星期五,可以看<day_of_week>的列舉說明) 每個月的第一個星期五的 9:05 a.m. UTC

參考資料
https://dotblogs.com.tw/AceLee/2020/03/18/182525
https://www.elastic.co/guide/en/elasticsearch/reference/current/cron-expressions.html