好久没更新博客园了,说来也惭愧,之前说好每隔几天更新一个的,虽然没什么人看,但是作为一个记录,回顾也是能有新的认识,这篇博客是讲的目前我在工作中使用的一个结束点,这个技术点目前网上资料少之甚少,也是希望给刚接触的人一个大概的思路,稍作分析下。说了这么多其实我也是个半吊子,也就间接性的踌躇满志,想到一出是一出,写下这个博客都是脑子一热,只是在自己使用的过程中遇到很多问题,解决的比较艰难,查资料又查不了,只能看官方文档,官方文档又是全英文的,阅读起来速度又比较慢,看翻译之后的有很多翻译根本就不对,会导致对方法的错误理解和使用。总之贼鸡儿烦,所以下面的东西希望对你有所帮助,讲的内容不多,也不深,只是给刚刚接触的一个介绍,和自己的一个记录,说了这么多自己都不知道说啥,欲言又止,作为一个程序员在生活中没有那么多时间去扯犊子,所以我就在这多唠叨几句了,对了我还有一个学习的群,有兴趣的可以进来玩玩,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都能顺利结局~ 再见

  

Kapacitor之TICK脚本,监控输出的更多相关文章

  1. 用shell脚本监控进程是否存在 不存在则启动的实例

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货: #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ]th ...

  2. shell脚本监控Linux系统性能指标

    2016-11-04 22:41 原作者不详 分类: Linux(7) 在服务器运维过程中,经常需要对服务器的各种资源进行监控, 例如:CPU的负载监控,磁盘的使用率监控,进程数目监控等等,以在系统出 ...

  3. linux shell脚本监控进程是否存在

    用shell脚本监控进程是否存在 不存在则启动的实例,先上代码干货:    #!/bin/shps -fe|grep processString |grep -v grepif [ $? -ne 0 ...

  4. Linux简单Shell脚本监控MySQL、Apache Web和磁盘空间

    Linux简单Shell脚本监控MySQL.Apache Web和磁盘空间 1. 目的或任务 当MySQL数据库.Apache Web服务器停止运行时,重新启动运行,并发送邮件通知: 当服务器磁盘的空 ...

  5. 学习笔记之Shell脚本的输出重定向

    shell http://baike.baidu.com/link?url=qN3THt5ZJhQtwRJJkakWdz5-vZp4V9H3OmNP97XNhaoL-dqU-6rrFrYfHXmYv6 ...

  6. shell for循环+case的脚本(监控程序状态)

    分享一个shell for循环+case的脚本(监控程序状态) 分享一个for循环+case的脚本(监控程序状态并执行相关操作) ,供大家学习参考. 复制代码代码如下: #/bin/bash set ...

  7. 使用脚本监控windows服务的方法

    以下脚本可监控某一个windows服务,发现其停止就立即重启之. @echo off rem 定义循环间隔时间和监测的服务: set secs=60 set srvname="NetWin ...

  8. shell脚本监控网站状态

    shell脚本监控网站状态 #!/bin/sh date=`date +"%Y%m%d-%H%M"` title="status" contentFail=&q ...

  9. centos 7中监控mysql 数据库脚本(监控端口)

    centos 7中监控mysql 数据库脚本(监控端口) 监控mysql数据库的方法如下: 1.监控端口 netstat -nltp |grep 3306 2.监控进程 ps -ef |grep 33 ...

随机推荐

  1. java实现:将一个数逆序输出

    前面我们用C语言实现过这个程序,其实java也一样的,很多步骤跟C差不多,但是有些接口和特性可能不同: import java.util.Scanner;//要使用scanner这个类,就需要导入一个 ...

  2. 谈谈Ext JS的组件——组件基类:Ext.Component

    概述 Ext.Component是所有Ext组件的基类,这在Ext.Component的API中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基 ...

  3. andrid面试题

    下面的题目都是楼主在android交流群大家面试时遇到的,如果大家有好的题目或者好的见解欢迎分享,楼主将长期维护此帖. 某公司高级面试题(2015-03-14)[感谢helder分享] 1.详述And ...

  4. RHEL6安装python包tornado

    RHEL6安装python包tornado tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发.通过使用非阻塞IO,Tornad ...

  5. 我也来写DBUtils

    关于重复造轮子 作为一个程序员,我们不止一次听到师长前辈们说:不要重复造轮子,已经有现成的了,直接用就是了. 对于这个观点,我觉得得仔细分析分析. 如果我们正在做一个真实的项目,经理天天追在我们屁股后 ...

  6. Otto事件总线框架的使用

    Otto是一个在Android中的事件总线框架,它是square的一个开源框架,具体介绍点击这里,项目下载点击这里 为什么要使用Otto事件总线: 通常来说在Android中: 1.Activity与 ...

  7. C语言之选择排序

    选择法排序是相对好理解的排序算法.假设要对含有n个数的序列进行升序排列,算法步骤是: 1.从数组存放的n个数中找出最小数的下标(算法见下面的"求最值"),然后将最小数与第1个数交换 ...

  8. SVN版本控制器中各符号的含义

    SVN符号的含义 项目开发过程中,随着学习的不断深入,开始慢慢接触到版本管理控制工具,其实这个工具主要用于团队开发之中,但对于个人项目的备份也有好处,可以避免在电脑出现不可预知的故障时,最大化的保护自 ...

  9. android Native堆

    Android 应用开发大家都知道可以通过DDMS来查看应用程序进程占用的内存大小:然而Native 内存并不能在虚拟堆上看到:Android系统基于Linux,这样的话其具备Linux的大多数特性: ...

  10. redis注册成window服务

    注册服务 redis-server.exe –service-install redis.windows.conf 删除服务 redis-server –service-uninstall 开启服务 ...