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

本文涉及的产品
云监控,每月短信1000条
简介: 在上一篇[《[云监控]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``。该表达式要求必须为二元运算。其形式为: 。聚合方式必须以`$`开头,后
177 0
[云监控]AE3-Script AE3脚本引擎
|
2月前
|
存储 传感器 监控
云监控:引领未来监控技术的新篇章
传统监控系统需要投入大量的人力物力进行建设和维护,而云监控则通过云计算平台的按需付费特性降低了建设和维护成本。用户只需根据实际需求购买相应的服务和资源即可实现监控功能,无需担心设备升级、维护等问题。
|
4月前
|
弹性计算 监控 安全
【阿里云弹性计算】ECS实例监控与告警系统构建:利用阿里云监控服务保障稳定性
【5月更文挑战第23天】在数字化时代,阿里云弹性计算服务(ECS)为业务连续性提供保障。通过阿里云监控服务,用户可实时监控ECS实例的CPU、内存、磁盘I/O和网络流量等指标。启用监控,创建自定义视图集中显示关键指标,并设置告警规则(如CPU使用率超80%),结合多种通知方式确保及时响应。定期维护和优化告警策略,利用健康诊断工具,能提升服务高可用性和稳定性,确保云服务的卓越性能。
199 1
|
弹性计算 运维 监控
基于云监控实现的监控系统
通过阿里云云监控功能给非阿里云主机安装监控插件,从而实现对非阿里云主机的各项指标进行监控和管理,在配置报警规则和报警人的情况下,能对特定的场景做出报警反应通知到报警人的手机上。
590 0
|
SQL 消息中间件 分布式计算
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
本文旨在分享 EMR 平台大数据服务基于阿里云 CloudMonitor 的监控实践,给客户提供除了 EMR 平台默认监控以外,自建监控方式,适用于统一多个阿里云服务的监控监控场景。
789 2
基于阿里云 CloudMonitor云监控自定义监控大盘对 EMR 自定义监控实践
|
弹性计算 监控 应用服务中间件
云监控之自定义监控
云监控之自定义监控
|
监控 负载均衡 网络协议
云监控-主机监控功能介绍|学习笔记
快速学习云监控-主机监控功能介绍
227 0
云监控-主机监控功能介绍|学习笔记
|
弹性计算 监控 开发者
云监控-创建 Dashboard 监控大盘|学习笔记
快速学习云监控-创建 Dashboard 监控大盘
197 0
云监控-创建 Dashboard 监控大盘|学习笔记
|
弹性计算 监控 开发者
云监控-创建Dashboard监控大盘|学习笔记
快速学习云监控-创建Dashboard监控大盘
231 0
云监控-创建Dashboard监控大盘|学习笔记
|
数据采集 Prometheus 监控
使用云监控来监控线下IDC(及其它云)的Mongodb,Redis,Mysql等中间件
背景当前很多用户的服务部署在混合环境中,比如同时使用多个云厂商,或者云加线下IDC等。而对于线下IDC的监控主要是使用开源的系统来自建。带来的问题就是需要花费较大精力来维护自建监控系统并且和云上的监控数据也无法打通。针对这种混合云环境,云监控推出了企业版监控服务,可以实现在阿里云上对下线IDC或其它云服务上部署的中间件进行监控。线下IDC中间件监控实现在云监控上对下线IDC的中间件进行监控,主要实
578 6
使用云监控来监控线下IDC(及其它云)的Mongodb,Redis,Mysql等中间件