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

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Java使用Thumbnailator库实现图片处理与压缩功能

《Java使用Thumbnailator库实现图片处理与压缩功能》Thumbnailator是高性能Java图像处理库,支持缩放、旋转、水印添加、裁剪及格式转换,提供易用API和性能优化,适合Web应... 目录1. 图片处理库Thumbnailator介绍2. 基本和指定大小图片缩放功能2.1 图片缩放的

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

Java堆转储文件之1.6G大文件处理完整指南

《Java堆转储文件之1.6G大文件处理完整指南》堆转储文件是优化、分析内存消耗的重要工具,:本文主要介绍Java堆转储文件之1.6G大文件处理的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言文件为什么这么大?如何处理这个文件?分析文件内容(推荐)删除文件(如果不需要)查看错误来源如何避