Kapacitor之TICK腳本,監控輸出


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

 

首先申明:一下內容僅供參考,切勿轉發。
閱讀一下文章需要對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  

 

 

 

 

在kapacitor的后台當中 有很多命令都是查看 任務 模板 狀態 ,這些都在官方文檔有介紹,我這列出一些圖給大家進行參考結合自己的理解。

 這個是查看 定義腳本之后生成的模板命令,展示的就是模板。

 

想要查看具體模板的信息 如下圖

 

 

 

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

 

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

如果在操作的過程中,狀態那邊的節點數都是0 如果有error 那個error那里會顯示出具體的個數,但是不會顯示具體的錯誤。具體錯誤查看下面講解。

 

 

相信大家現在對TICK 具體是什么有一定的了解了吧。
下來我們查看下如何查看我們的TICK腳本 都執行了什么,錯在了,怎么查看日志

  

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

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

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

 

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

 

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

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


文中有很多沒有詳細講解,畢竟時間有限,篇幅有限,如有時間繼續細化內容。(如有差錯望博友指正以至於及時修改,淺顯講解勿噴~都是有素質的人)
在這里祝大家工作順利,所有BUG都能順利結局~

再見

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM