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