文档首页 > > 开发指南> SDK> Python> CES Python SDK示例

CES Python SDK示例

分享
更新时间: 2019/11/15 GMT+08:00

查询指标列表

查询系统当前可监控指标列表,可以指定指标命名空间、指标名称、维度、排序方式,起始记录和最大记录条数过滤查询结果。

下面获取当前租户所有的指标。

1
2
3
4
5
6
7
8
9
query = {
        "namespace": "SYS.ECS",
        "metric_name": "disk_read_bytes_rate",
        "start": "SYS.ECS.cpu_util.instance_id:d9112af5-6913-4f3b-bd0a-3f96711e004d",
        "limit": 50,
        "order": "desc"
    }
    # get some metric
    metrics = connection.cloud_eye.metrics(**query)
表1 参数说明

参数

说明

示例

namespace

指标命名空间,例如弹性云服务器命名空间。

SYS.ECS

metric_name

指标名称。

disk_read_bytes_rate

start

分页起始值,格式为:namespace.metric_name.key:value。

SYS.ECS.cpu_util.instance_id:d9112af5-6913-4f3b-bd0a-3f96711e004d

limit

取值范围(0,1000],默认值为1000。

用于限制结果数据条数。

50

order

用于标识结果排序方法。

取值说明,默认值为desc。

asc:升序

desc:降序

desc

查询告警规则列表

查询告警规则列表,可以指定分页条件限制结果数量,可以指定排序规则。

1
2
3
4
5
6
7
8
query = {
"limit": 50,
"start": "al1498535073312Z27eznaxV",
"order": "desc"
}
# get some alarm
for alarm in conn.cloud_eye.alarms(**query):
logging.info(alarm)
表2 参数说明

参数

说明

示例

start

分页起始值,内容为alarm_id。

al1498535073312Z27eznaxV

limit

取值范围(0,100],默认值为100

用于限制结果数据条数。

50

order

用于标识结果排序方法。

取值说明,默认值为desc。

asc:升序

desc:降序

desc

查询单条告警规则信息

根据告警ID查询告警规则信息。

1
2
3
4
# plain ID
alarm = conn.cloud_eye.get_alarm("some-alarm-id")
# Instance with ID
alarm = conn.cloud_eye.get_alarm(alarm.Alarm(id="some-alarm-id"))
表3 参数说明

参数

说明

示例

alarm_id

告警规则的ID。

al1498535073312Z27eznaxV

启停告警规则

启动或停止一条告警规则。

1
2
3
4
5
6
7
8
#start alarm
conn.cloud_eye.enable_alarm("some-alarm-id")
or
conn.cloud_eye.enable_alarm(alarm.Alarm(id="some-alarm-id"))
# stop alarm
conn.cloud_eye.disable_alarm("some-alarm-id")
or
conn.cloud_eye.disable_alarm(alarm.Alarm(id="some-alarm-id"))
表4 参数说明

参数

说明

示例

alarm_id

告警规则的ID。

al1498535073312Z27eznaxV

删除告警规则

删除一条告警规则。

1
2
3
conn.cloud_eye.delete_alarm("some-alarm-id")
or
conn.cloud_eye.delete_alarm(alarm.Alarm(id="some-alarm-id"))
表5 参数说明

参数

说明

示例

alarm_id

告警规则的ID。

al1498535073312Z27eznaxV

查询监控数据

查询指定时间范围指定指标的指定粒度的监控数据,可以通过参数指定需要查询的数据维度。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def get_epoch_time(datetime_):
if datetime_:
seconds = time.mktime(datetime_.timetuple())
return int(seconds) * 1000
else:
return None
now = datetime.datetime.now()
_to = now
_from = now - datetime.timedelta(minutes=5)
query = {
"namespace": "MINE.APP",
"metric_name": "cpu_util",
"from": get_epoch_time(_from),
"to": get_epoch_time(_to),
"period": 300,
"filter": "average",
"dimensions": [{
"name": "instance_id",
"value": "33328f02-3814-422e-b688-bfdba93d4050"
}]
}
for aggregation in conn.cloud_eye.metric_aggregations(**query):
logging.info(aggregation)
表6 参数说明

参数

说明

示例

namespace

指标命名空间,例如弹性云服务器命名空间。

SYS.ECS

metric_name

指标名称。

disk_read_bytes_rate

from

查询数据起始时间,UNIX时间戳,单位毫秒。建议from的值相对于当前时间向前偏移至少1个周期。由于聚合运算的过程是将一个聚合周期范围内的数据点聚合到周期起始边界上,如果将from和to的范围设置在聚合周期内,会因为聚合未完成而造成查询数据为空,所以建议from参数相对于当前时间向前偏移至少1个周期。以5分钟聚合周期为例:假设当前时间点为10:35,10:30~10:35之间的原始数据会被聚合到10:30这个点上,所以查询5分钟数据点时from参数应为10:30或之前。

说明:

云监控会根据所选择的聚合粒度向前取整from参数。

1499134191061l

to

查询数据截止时间UNIX时间戳,单位毫秒。from必须小于to。

14991341892581

period

监控数据粒度。

取值范围:

  • 1,实时数据
  • 300,5分钟粒度
  • 1200,20分钟粒度
  • 3600,1小时粒度
  • 14400,4小时粒度
  • 86400,1天粒度

filter

数据聚合方式。

max, min, average, sum, variance。

dimensions

指标维度列表。单个维度为json对象,结构说明如下:

dimension.name:必须以字母开头,只能包含0-9/a-z/A-Z/_/-,长度最短为1,最大为32。

dimension.value:必须以字母或数字开头,只能包含0-9/a-z/A-Z/_/-,长度最短为1,最大为64。例如,当监控对象为ELB经典型载均衡器时,参考弹性负载均衡监控指标说明,dimension.name 的取值是“lb_instance_id”。如图1所示。

"dimensions": [{

"name": "instance_id",

"value": "33328f02-3814-422e-b688-bfdba93d4050"

},

{

"name": "server_id",

"value": "57899009-3814-422e-b688-bfdba93d4050"

}

]

添加监控数据

添加一条或多条指标监控数据。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def get_epoch_time(datetime_):
if datetime_:
seconds = time.mktime(datetime_.timetuple())
return int(seconds) * 1000
else:
return None

now = datetime.datetime.now()
collect_time_1 = now
collect_time_2 = now - datetime.timedelta(minutes=5)
data = [
{
"metric": {
"namespace": "MINE.APP",
"dimensions": [
{
"name": "instance_id",
"value": "33328f02-3814-422e-b688-bfdba93d4050"
}
],
"metric_name": "cpu_util"
},
"ttl": 604800,
"collect_time": get_epoch_time(collect_time_1),
"value": 60,
"unit": "%"
},
{
"metric": {
"namespace": "MINE.APP",
"dimensions": [
{
"name": "instance_id",
"value": "33328f02-3814-422e-b688-bfdba93d4050"
}
],
"metric_name": "cpu_util"
},
"ttl": 604800,
"collect_time": get_epoch_time(collect_time_2),
"value": 70,
"unit": "%"
}
]
conn.cloud_eye.add_metric_data(data)
表7 参数说明

参数

说明

示例

metric

指标数据。

JSON结构

namespace

指标命名空间,格式为service.item;service和item必须是字符串,必须以字母开头,只能包含0-9/a-z/A-Z/_,总长度最短为3,最大为32,service不能为“SYS”。

ABC.ECS

metric_name

指标名称,必须以字母开头,只能包含0-9/a-z/A-Z/_,长度最短为1,最大为64。

disk_read_bytes_rate

dimensions

指标维度列表。单个维度为json对象,结构说明如下:

dimension.name:必须以字母开头,只能包含0-9/a-z/A-Z/_/-,长度最短为1,最大为32。

各服务监控对象的dimension.name请参考各服务监控指标说明页面的“维度”表格中的key值。

例如,当监控对象为ELB经典型载均衡器时,参考弹性负载均衡监控指标说明,dimension.name 的取值是“lb_instance_id”。如图1所示。

dimension.value:必须以字母或数字开头,只能包含0-9/a-z/A-Z/_/-,长度最短为1,最大为64。

"dimensions": [{

"name": "instance_id",

"value": "33328f02-3814-422e-b688-bfdba93d4050"

},

{

"name": "server_id",

"value": "57899009-3814-422e-b688-bfdba93d4050"

}

]

ttl

数据的有效期,超出该有效期则自动删除该数据,单位秒,最大值604800。

172800

collect_time

数据收集时间

UNIX时间戳,单位毫秒。

说明:

因为客户端到服务器端有延时,因此插入数据的时间戳应该在[当前时间-3天+20秒,当前时间+10分钟-20秒]区间内,保证到达服务器时不会因为传输时延造成数据不能插入数据库。

1502938466458

value

指标数据的值。

60

unit

数据的单位。

B

type

数据的类型,只能是"int"或"float"

int 或者 float

图1

查询配额

查询用户可以创建的资源配额总数及当前使用量,当前仅有告警规则一种资源类型。

1
2
3
quotas = conn.cloud_eye.quotas()
for quota in quotas:
logging.info(quota)
分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区