kapacitor脚本tick针对bool类型的处理

2024-05-25 05:08

本文主要是介绍kapacitor脚本tick针对bool类型的处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

stream类型的tick脚本

bool()函数

正确的做法

最终完整的tick脚本(batch)


telegraf采集k8s endpoint metric的时候会存一些bool类型的值到influxdb里面。

如判断endpoint是否ready,就是bool类型。

直接使用influxql查询是没问题的。

 

stream类型的tick脚本

pod_alert.tick

stream|from().measurement('kubernetes_endpoint').where(lambda: "namespace" == 'ctg')|window().period(10m).every(1s)|alert().id('stream pod not ready alerting').message('type: pod | {{ .Level}}: pod is not ready ').warn(lambda: "ready" == false).log('/root/pod_alerts.log').email('xxx@qq.com')
kapacitor define pod_unready -type "stream" -dbrp "telegraf"."autogen" -tick pod_alert.tick 

 报错

invalid TICKscript: name "false" is undefined. Names in scope: time,stream

bool()函数

https://docs.influxdata.com/kapacitor/v1.5/tick/expr/#stateless-functions

对于int类型: 

     bool(0) 对应false

     bool(1) 对应true

对于string类型:

    '0', 'f','F', 'false', 'FALSE','False',  对应false

    '1', 't', 'T', 'true', 'TRUE', 'True' , 对应true

   bool() 函数的参数如果是tring类型,只能是单引号,不可用双引号,否则报错 :

Cannot call function \"bool\" argument \"0\" is missing, values in scope are [\"ready\"]

后来把stream修改为了batch,生效了 。

正确的做法

   把bool值使用bool()方法进行转换。

    lambda:  "ready" == bool(0)  或者lambda: "ready" == bool('0')

bool(value) bool
调用的是golang 的strconv.ParseBool()方法,源码如下:package strconv// ParseBool returns the boolean value represented by the string.
// It accepts 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False.
// Any other value returns an error.
func ParseBool(str string) (bool, error) {switch str {case "1", "t", "T", "true", "TRUE", "True":return true, nilcase "0", "f", "F", "false", "FALSE", "False":return false, nil}return false, syntaxError("ParseBool", str)
}

 

最终完整的tick脚本(batch)

类型batch

batch|query('''SELECT * FROM "telegraf"."autogen"."kubernetes_endpoint" WHERE "namespace"='ctg' ''').period(1m).every(1s)|alert().message('{{ .Level}}:{{ index .Fields "pod"}} is  unready, pls check.host: {{ index .Fields "host"}}, node name: {{ index .Fields "node_name"}}').warn(lambda: "ready" == bool('0')).log('/root/pod_alerts.log').email('xxx@qq.com')

 

这篇关于kapacitor脚本tick针对bool类型的处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1000558

相关文章

Spring Boot 处理带文件表单的方式汇总

《SpringBoot处理带文件表单的方式汇总》本文详细介绍了六种处理文件上传的方式,包括@RequestParam、@RequestPart、@ModelAttribute、@ModelAttr... 目录方式 1:@RequestParam接收文件后端代码前端代码特点方式 2:@RequestPart接

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

MyBatis中的两种参数传递类型详解(示例代码)

《MyBatis中的两种参数传递类型详解(示例代码)》文章介绍了MyBatis中传递多个参数的两种方式,使用Map和使用@Param注解或封装POJO,Map方式适用于动态、不固定的参数,但可读性和安... 目录✅ android方式一:使用Map<String, Object>✅ 方式二:使用@Param

C# WebAPI的几种返回类型方式

《C#WebAPI的几种返回类型方式》本文主要介绍了C#WebAPI的几种返回类型方式,包括直接返回指定类型、返回IActionResult实例和返回ActionResult,文中通过示例代码介绍的... 目录创建 Controller 和 Model 类在 Action 中返回 指定类型在 Action

SpringSecurity中的跨域问题处理方案

《SpringSecurity中的跨域问题处理方案》本文介绍了跨域资源共享(CORS)技术在JavaEE开发中的应用,详细讲解了CORS的工作原理,包括简单请求和非简单请求的处理方式,本文结合实例代码... 目录1.什么是CORS2.简单请求3.非简单请求4.Spring跨域解决方案4.1.@CrossOr

requests处理token鉴权接口和jsonpath使用方式

《requests处理token鉴权接口和jsonpath使用方式》文章介绍了如何使用requests库进行token鉴权接口的处理,包括登录提取token并保存,还详述了如何使用jsonpath表达... 目录requests处理token鉴权接口和jsonpath使用json数据提取工具总结reques

C# 空值处理运算符??、?. 及其它常用符号

《C#空值处理运算符??、?.及其它常用符号》本文主要介绍了C#空值处理运算符??、?.及其它常用符号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录一、核心运算符:直接解决空值问题1.??空合并运算符2.?.空条件运算符二、辅助运算符:扩展空值处理

浅析Python中如何处理Socket超时

《浅析Python中如何处理Socket超时》在网络编程中,Socket是实现网络通信的基础,本文将深入探讨Python中如何处理Socket超时,并提供完整的代码示例和最佳实践,希望对大家有所帮助... 目录开篇引言核心要点逐一深入讲解每个要点1. 设置Socket超时2. 处理超时异常3. 使用sele

SpringMVC配置、映射与参数处理​入门案例详解

《SpringMVC配置、映射与参数处理​入门案例详解》文章介绍了SpringMVC框架的基本概念和使用方法,包括如何配置和编写Controller、设置请求映射规则、使用RestFul风格、获取请求... 目录1.SpringMVC概述2.入门案例①导入相关依赖②配置web.XML③配置SpringMVC