Kapacitor之TICK腳本,監控輸出

  很久沒更新博客園了,說來也慚愧,以前說好每隔幾天更新一個的,雖然沒什麼人看,可是做爲一個記錄,回顧也是能有新的認識,這篇博客是講的目前我在工做中使用的一個結束點,這個技術點目前網上資料少之甚少,也是但願給剛接觸的人一個大概的思路,稍做分析下。說了這麼多其實我也是個半吊子,也就間接性的躊躇滿志,想到一出是一出,寫下這個博客都是腦子一熱,只是在本身使用的過程當中遇到不少問題,解決的比較艱難,查資料又查不了,只能看官方文檔,官方文檔又是全英文的,閱讀起來速度又比較慢,看翻譯以後的有不少翻譯根本就不對,會致使對方法的錯誤理解和使用。總之賊雞兒煩,因此下面的東西但願對你有所幫助,講的內容很少,也不深,只是給剛剛接觸的一個介紹,和本身的一個記錄,說了這麼多本身都不知道說啥,欲言又止,做爲一個程序員在生活中沒有那麼多時間去扯犢子,因此我就在這多嘮叨幾句了,對了我還有一個學習的羣,有興趣的能夠進來玩玩,494696003 反正沒事進來嘮嘮嗑啥的也是不錯的。java

 

首先申明:一下內容僅供參考,切勿轉發。
閱讀一下文章須要對TICK架構腳本 有必定了解,起碼知道TICK是幹嗎的,裏面的一部分語法是怎樣的。
熟悉一下TICK的官方文檔有必定的必要,不然可能不知道我在說啥。

 

 

 

 

 

下面咱們去看下tick裏面的腳本長什麼樣

 

 

 

在這個地方給你們介紹一下 腳本爲啥要這樣寫:
TICK 遵循必定的規範,官網能夠查。
|query(sql) 此節點能夠執行sql的查詢語句,
.period(10m) 此連接方法 是屬於query下的,意爲查詢時間的範圍,也就是說若是到時候你的sql寫完以後 會在真正執行的時候在你的sql後面拼接 where xx - xx 時間的範圍查詢,這個範圍就是你設定的 10m
.window(10) 以此類推 一下就很少作說明,這個也是屬於query的鏈接方法,意爲每一個多長時間咱們的腳本去執行一次這個查詢的時間,也就是10分鐘去執行一次查詢。
.groupBy('ciid') 這是根據給定的字段進行分組。
|eval 
這個節點是TICK腳本中用於業務計算的一個節點,經過lambda表達式可以對以上查詢出來的數據進行計算。
計算的時候在tick中 只有浮點數和整數的概念,因此計算的2側的數據類型要一致不然腳本運行出錯。

|influxDBOut() 
這個節點是將以上的數據計算以後 輸出到制定的數據庫中。
.databases(xx)
.measurement(xx)

以上數據庫均是Influxdb

  

如下是我寫的一個腳本:計算CPU使用率的一個模板 腳本
var period = 10m

var window = 10m

var to_kpiid = 'PM-00-01-001-05'

var to_kpiname = 'kpi_cpu_usage'

var sql = 'select mean(value) as value from kpi_mock.autogen."PM-00-01-001-01"'

var ciid = ''

var ciname = ''

var citype = ''

var cpu_idle = batch
    |query(sql)
        .period(period)
        .every(window)
        .align()

var usage = cpu_idle
    |eval(lambda: 100.0 - float("value"))
        .as('value')
    |delete()
        .tag('kpiname')
        .tag('kpiid')
        .tag('ciid')
        .tag('ciname')
        .tag('citype')
    |default()
        .tag('kpiname', to_kpiname)
        .tag('kpiid', to_kpiid)
        .tag('ciid', ciid)
        .tag('ciname', ciname)
        .tag('citype', citype)
    |influxDBOut()
        .database('kpi_mock')
        .measurement(to_kpiid)

 

如何定義一個模板(template 此處batch爲例,stream相似)

batch_avg_test爲本身取名 帶上.tick 即你的tick腳本 類型爲batch 

./kapacitor define-template batch_avg_test -tick batch_avg_test.tick -type batch 程序員

 

如何根據一個模板建立具體的任務(task)
在建立具體任務的時候 你須要根據模板參數 寫一個相應的json文件,將參數傳入模板當中 生成具體的任務
PM-XX-XX-XX-XX:爲任務名稱
batch_avg_test:模板名稱(即剛上面建立的模板)
test.json:傳入數據的json文件
xxx.autogen 制定腳本當中執行sql語句和輸出數據庫的 保留策略(見官方文檔)

./kapacitor define PM-XX-XX-XX-XX -template batch_avg_test -vars test.json -dbrp xxx.autogen  sql

 

 

 

 

在kapacitor的後臺當中 有不少命令都是查看 任務 模板 狀態 ,這些都在官方文檔有介紹,我這列出一些圖給你們進行參考結合本身的理解。數據庫

 這個是查看 定義腳本以後生成的模板命令,展現的就是模板。json

 

想要查看具體模板的信息 以下圖架構

 

 

 

這個是查看 根據模板 生成具體的任務, 展現的是任務學習

 

想要查看每個任務的具體的狀態信息能夠執行,能夠查看到具體的執行時間,寫入的節點數等等...翻譯

若是在操做的過程當中,狀態那邊的節點數都是0 若是有error 那個error那裏會顯示出具體的個數,可是不會顯示具體的錯誤。具體錯誤查看下面講解。3d

 

 

相信你們如今對TICK 具體是什麼有必定的瞭解了吧。
下來咱們查看下如何查看咱們的TICK腳本 都執行了什麼,錯在了,怎麼查看日誌

  

 還記得第一張圖中有一個 KapaData的目錄嗎,進去到log 目錄下執行日誌

grep PM-XX-XX-XX-XX *.log 

其中 PM-XX-XX-XX-XX 表明着你具體的執行任務的名稱

 

這樣你就知道你的任務具體是怎麼跑,出什麼錯都會在這裏顯示,還有sql 語句,將sql複製去influxdb 執行就能對比出來數據是否正確了。

 

以上是使用TICK 的一整套的流程,具體的計算方式須要閱讀官方文檔,例如計算,保留策略,節點,連接方法,精度等問題。

全部運行都沒問題的狀況下,你只需查看influxdb數據庫產生的表中的數據是否正確便可。這樣一整套TICK腳本監控指標就完成了。


文中有不少沒有詳細講解,畢竟時間有限,篇幅有限,若有時間繼續細化內容。(若有差錯望博友指正以致於及時修改,淺顯講解勿噴~都是有素質的人)
在這裏祝你們工做順利,全部BUG都能順利結局~

再見
相關文章
相關標籤/搜索