[云监控]AE3-Script脚本引擎进阶

简介: 在上一篇[《[云监控]AE3-Script AE3脚本引擎》](https://ata.alibaba-inc.com/articles/217887)中介绍了AE3-Script的基本特性。本篇将继续介绍该脚本的一些更加深入的用法。## 一、动态算术运算AE3-Script是一种动态类型的语言,字符串(string)、数值(number)和布尔值(bool)都可以进行数学运算。运算时字符串和

在上一篇[《[云监控]AE3-Script AE3脚本引擎》](https://ata.alibaba-inc.com/articles/217887)中介绍了AE3-Script的基本特性。本篇将继续介绍该脚本的一些更加深入的用法。

一、动态算术运算

AE3-Script是一种动态类型的语言,字符串(string)、数值(number)和布尔值(bool)都可以进行数学运算。运算时字符串和布尔值将会被转化为数值。如下面的表达式:

"100" + 50 + true;
// Output: 151
true + false;
// Output: 1
true + true
// Output: 2

具体转换规则如下:

类型 转换后
字符串(string) 按十进制文本进行转换
布尔 true 1
布尔 false 0

数学运算的最终结果为数值。

二、动态算术比较运算

当进行比较运算时,如果比较的双方是同类型,且具有可比性,则直接进行比较。如

"A" > "B";
// Output: false
true == true;
// Output: true
true != true
// Output: false

而当双方不是相同类型,或不具可比性时,比较的双方会先转换成数值,再进行比较。如

true > false
// Output: true

根据上一节的转换规则,true为1,false为0,则比较的结果为true。再如:

1 == true
// Output: true

避坑提示 字符串'true''false'转换数值时将失败,而不是转为布尔值的truefalse

'true' == true

将会产生运行时错误:

invalid operation: string == bool (1:8)
| "true" == true
| ............^

比较运算的最终结果为布尔型。

三、赋值

之前介绍了变量,但主要目的是为了引入metric数据的表达。事实上,变量是可以在AE3-Script中被主动创建的。AE3-Script是动态类型语言,变量本身没有类型,被赋值成什么类型,变量就会成为什么类型。变量可以被重复赋值,且可以被赋予不同类型的值。变量必须先赋值后使用,且区分大小写

A := 100;
// 此时变量A为数值类型
A := 'hello'
// A又成为了字符串类型

当一段代码中需要重复进行计算时,可以先把计算的结果放入变量中。

preValue := LastPeriod(@cpu_total[60]).$Average;
(@cpu_total[60].$Average - preValue) * 100 / preValue

这个是典型的同比计算,计算时需要使用上一周期的$Average值两次,通过中间变量preValue有效增强最可读性,同时提升了运行效率。
友情提示 像Java、C++一样,如果是多条语句的话,每条后面一定要有一个英文分号;。最后一条语句,或单条语句则对分号不做强制要求。

四、字符串

算术和比较运算可以将符串转为数值。相反的,在AE3-Script中也可以将两个非字符串转换为字符串。

4.1 字符相加运算符#

不管#两边是什么类型,#会先两将两侧转换为字符串再进行字符串相加操作。

userId := 2
'acs_custom_' # userId;
// Output: acs_custom_2
true # ' ' # 'name'
// Output: true name

4.2 join函数

join函数是一个内置函数,其原型为join(sep string, args...),其中args可以是一个slice,也可以是变长参数。该函数返回以sep连接的字符串。

join(' ', "My name is", 20);
// Output: My name is 20
list := [1, 2, 3];
join(', ', list)
// Output: 1, 2, 3 

五、最佳实践

目前云监控新版控制台已上线多指标报警规则,欢迎体验。

5. 1 创建简单的多指标规则

创建报警规则界面,通过若干步鼠标点击,可以迅速创建出简单的多指标规则。如下图:

上图创建的规则需要『两个指标同时符合条件』才会报警。等同于如下表达式

@cpu_total[60].$Average >= 80 && @load_1m[60].$Average >= 5

对于初接触云监控,对指标不甚了解的人员,可以通过简单的界面点击,迅速建立一个满足80%应用需求的报警规则。

5.2 复杂的多指标规则

当条件比较复杂时,简单的界面就无法满足要求了,此时可以使用『表达式创建』。比如有三个指标,当其中的两个满足条件时就报警:

表达式:

A := @cpu_total[60].$Average > 80; 
B := @load_1m[60].$Average >= 4; 
C := @memory_usedutilization[60].$Average > 90;
A + B + C >= 2

目前界面还有一些小瑕疵,无法进行多行编辑。以上四句写在一行也是OK的,只不过可读性上稍微差些。

目录
相关文章
|
监控 Java 编译器
[云监控]AE3-Script AE3脚本引擎
本文介绍了阿里云监控计算引擎 **AE3-Script** 语法。旨在帮助云监控报警用户更高效、更灵活地使用alert,实现所想即所得的报警体验。 ## 一、为什么需要AE3-Script 过去几年间,alert报警表达式引擎经历了两代衍进。 **第一代**,简单二元运算表达式,形如:``$Average >= 3``。该表达式要求必须为二元运算。其形式为: 。聚合方式必须以`$`开头,后
410 0
[云监控]AE3-Script AE3脚本引擎
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第26天】Prometheus与Grafana是智能运维中的强大组合,前者是开源的系统监控和警报工具,后者是数据可视化平台。Prometheus具备时间序列数据库、多维数据模型、PromQL查询语言等特性,而Grafana支持多数据源、丰富的可视化选项和告警功能。两者结合可实现实时监控、灵活告警和高度定制化的仪表板,广泛应用于服务器、应用和数据库的监控。
1601 3
|
12月前
|
运维 监控 网络协议
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
379 11
物联网设备状态监控全解析:从告警参数到静默管理的深度指南-优雅草卓伊凡
|
Prometheus 监控 Cloud Native
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
【监控】prometheus传统环境监控告警常用配置
|
数据采集 运维 监控
数据采集监控与告警:错误重试、日志分析与自动化运维
本文探讨了数据采集技术从“简单采集”到自动化运维的演进。传统方式因反爬策略和网络波动常导致数据丢失,而引入错误重试、日志分析与自动化告警机制可显著提升系统稳定性与时效性。正方强调健全监控体系的重要性,反方则担忧复杂化带来的成本与安全风险。未来,结合AI与大数据技术,数据采集将向智能化、全自动方向发展,实现动态调整与智能识别反爬策略,降低人工干预需求。附带的Python示例展示了如何通过代理IP、重试策略及日志记录实现高效的数据采集程序。
599 7
数据采集监控与告警:错误重试、日志分析与自动化运维
|
11月前
|
编解码 监控 算法
CDN+OSS边缘加速实践:动态压缩+智能路由降低30%视频流量成本(含带宽峰值监控与告警配置)
本方案通过动态压缩、智能路由及CDN与OSS集成优化,实现视频业务带宽成本下降31%,首帧时间缩短50%,错误率降低53%。结合实测数据分析与架构创新,有效解决冷启动延迟、跨区域传输及设备适配性问题,具备快速投入回收能力。
784 0
|
Prometheus Kubernetes 监控
Kubernetes监控:Prometheus与AlertManager结合,配置邮件告警。
完成这些步骤之后,您就拥有了一个可以用邮件通知你的Kubernetes监控解决方案了。当然,所有的这些配置都需要相互照应,还要对你的Kubernetes集群状况有深入的了解。希望这份指南能帮助你创建出适合自己场景的监控系统,让你在首次发现问题时就能做出响应。
793 22
|
Prometheus 监控 Cloud Native
无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?
Prometheus 是一个完全开源的系统监控和告警工具包,受 Google 内部 BorgMon 系统启发,自2012年由前 Google 工程师在 SoundCloud 开发以来,已被众多公司采用。它拥有活跃的开发者和用户社区,现为独立开源项目,并于2016年加入云原生计算基金会(CNCF)。Prometheus 的主要特点包括多维数据模型、灵活的查询语言 PromQL、不依赖分布式存储、通过 HTTP 拉取时间序列数据等。其架构简单且功能强大,支持多种图形和仪表盘展示模式。安装和使用 Prometheus 非常简便,可以通过 Docker 快速部署,并与 Grafana 等可
6354 2
|
Prometheus 运维 监控
智能运维实战:Prometheus与Grafana的监控与告警体系
【10月更文挑战第27天】在智能运维中,Prometheus和Grafana的组合已成为监控和告警体系的事实标准。Prometheus负责数据收集和存储,支持灵活的查询语言PromQL;Grafana提供数据的可视化展示和告警功能。本文介绍如何配置Prometheus监控目标、Grafana数据源及告警规则,帮助运维团队实时监控系统状态,确保稳定性和可靠性。
1372 0
|
Prometheus 监控 Cloud Native
SpringCloud微服务实战——搭建企业级开发框架(四十五):【微服务监控告警实现方式二】使用Actuator(Micrometer)+Prometheus+Grafana实现完整的微服务监控
无论是使用SpringBootAdmin还是使用Prometheus+Grafana都离不开SpringBoot提供的核心组件Actuator。提到Actuator,又不得不提Micrometer,从SpringBoot2.x开始,Actuator的功能实现都是基于Micrometer的。
1648 57

热门文章

最新文章