应用监控
应用信息管理接口
应用创建接口
请求结构体
Method:POST
Url:/csm/api/v1/userId/{userId}/application
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户ID | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
name | String | 应用名 | 是 |
alias | String | 应用别名 | 否 |
type | String | 类型 | 是 |
description | String | 描述 | 否 |
请求示例
POST /csm/api/v1/userId/user1/application
Host: bcm.bj.baidubce.com:80
{
"type": "BCC",
"name": "test12",
"alias": "testAlias",
"description": "fafda",
"userId":"123456"
}
请求响应
{
"id": 1,
"name": "test",
"alias": "testAlias",
"type": "BCC",
"userId": "user1",
"description": "test"
}
应用列表接口
请求结构体
Method:GET
URI: /csm/api/v1/userId/{userId}/application
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户Id | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
searchName | String | 应用名或者别名,用于搜索 | 否 |
pageNo | Int | 页码,默认1 | 是 |
pageSize | Int | 每页大小,默认10 | 是 |
请求示例
GET /csm/api/v1/userId/user1/application?searchName=te&pageNo=0&pageSize=10
Host: bcm.bj.baidubce.com:80
响应示例
{
"content":[
{
"id":1,
"name":"test",
"alias":"testAlias",
"type":"BCC",
"userId":"user1",
"description":"test"
}
],
"totalElements":1,
"totalPages":1,
"size":10
}
应用编辑接口
请求结构体
Method:PUT
URI: /csm/api/v1/userId/{userId}/application
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
id | Int | 应用id | 是 |
name | String | 应用名 | 是 |
alias | String | 应用别名 | 否 |
type | String | 应用类型 | 是 |
userId | String | 用户id | 是 |
description | String | 应用说明 | 否 |
接口描述
只允许修改alias和description,其他字段不允许修改
请求示例
PUT /csm/api/v1/userId/user1/application
Host: bcm.bj.baidubce.com:80
{
"id": 1,
"name": "test",
"alias": "testAlias3",
"type": "BCC",
"userId": "user1",
"description": "test"
}
返回示例
{
"id": 1,
"name": "test",
"alias": "testAlias3",
"type": "BCC",
"userId": "user1",
"description": "test"
}
应用删除接口
请求结构体
Method:DELETE
URI: /csm/api/v1/userId/{userId}/application
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
name | String | 应用名 | 是 |
请求示例
DELETE /csm/api/v1/userId/user1/application
Host: bcm.bj.baidubce.com:80
{
"name": "test"
}
返回示例
HTTP 200
应用实例管理接口
创建实例时实例列表接口
请求结构体
Method:POST
URI: /csm/api/v1/userId/{userId}/application/instance/all
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
region | String | 地域 | 是 |
appName | String | 应用名 | 是 |
searchName | String | 搜索key,目前支持主机名,主机ID,内网IP搜索,取值分别为:"name","instanceId","internalIp" | 是 |
searchValue | String | 搜索内容 | 否 |
pageSize | Int | 每页大小 | 是 |
pageNo | Int | 页码 | 是 |
请求示例
POST /csm/api/v1/userId/user1/instances/all
Host: bcm.bj.baidubce.com:80
{
"pageSize": 50,
"pageNo": 1,
"searchName": "name",
"searchValue": "instance-0eseehvy",
"region": "bj",
"appName": "test"
}
返回示例
{
"content":[
{
"id":"387838",
"instanceId":"i-DvbyV9Lw",
"instanceUuid":"63deee8a-5ddb-4944-80fa-faa144825a65",
"name":"instance-0eseehvy",
"internalIp":"192.168.16.227",
"floatingIp":"100.88.66.222",
"publicIp":null,
"hasBinded":false
},
{
"id":"1258",
"instanceId":"i-aztzAEUk",
"instanceUuid":"50fb04a1-7adf-4769-b957-bf40b40d6b02",
"name":"instance-3k4ol2fr",
"internalIp":"192.168.16.39",
"floatingIp":"100.88.66.130",
"publicIp":null,
"hasBinded":false
},
{
"id":"385510",
"instanceId":"i-s6r0Y8xM",
"instanceUuid":"125b9e28-ecc4-4ec7-b584-6d65c743c153",
"name":"instance-u3ahll4c-1",
"internalIp":"192.168.16.225",
"floatingIp":"100.88.67.8",
"publicIp":null,
"hasBinded":false
},
{
"id":"385511",
"instanceId":"i-iTPduQhx",
"instanceUuid":"e1f0d8bb-845d-44ab-bc7c-08a8efccb8a0",
"name":"instance-u3ahll4c-2",
"internalIp":"192.168.16.226",
"floatingIp":"100.88.67.80",
"publicIp":null,
"hasBinded":false
}
],
"query":null,
"fields":[
],
"orderBy":[
],
"pageNumber":1,
"pageSize":50,
"pageElements":4,
"last":true,
"first":true,
"totalPages":1,
"totalElements":4
}
创建实例接口
请求结构体
Method:POST
URI: /csm/api/v1/userId/{userId}/application/instance/bind
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
hostList | List |
实例集合,其中InstanceInfo | 是 |
InstanceInfo
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
instanceId | String | 实例长id | 是 |
region | String | 地域 | 是 |
请求示例
POST /csm/api/v1/userId/123456/application/test14/instance/bind
Host: bcm.bj.baidubce.com:80
{
"appName": "test",
"userId": "453bf9588c9e488f9ba2c9841290****",
"hostList": [
{
"instanceId": "2096290b-5984-4c67-8ccc-864ca5f5****",
"region": "bj"
},
{
"instanceId": "7d4e09af-d01b-4492-88e9-c27d9096****",
"region": "bj"
}
]
}
请求示例
true
已创建的实例列表接口
请求结构体
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/instance/list
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
region | String | 按region搜索,过滤出该region的实例 | 否 |
请求示例
GET /csm/api/v1/userId/user1/application/test/instance/list?region=bj
Host: bcm.bj.baidubce.com:80
返回示例
[
{
"id": 1,
"name": "0.test",
"offset": 0,
"instanceId": "instance1",
"region": "bj",
"userId": "user1",
"appName": "test"
},
{
"id": 2,
"name": "1.test",
"offset": 1,
"instanceId": "instance2",
"region": "bj",
"userId": "user1",
"appName": "test"
}
]
实例删除接口
请求结构体
Method:DELETE
URI: /csm/api/v1/userId/{userId}/application/instance
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
appName | String | 应用名 | 是 |
id | String | 实例在数据库中的id | 是 |
请求示例
DELETE /csm/api/v1/userId/user1/application/instance
Host: bcm.bj.baidubce.com:80
{
"id": 1,
"appName": "test"
}
返回示例
HTTP 200
监控任务管理接口
创建监控任务接口
请求结构体
Method:POST
URI: /csm/api/v1/userId/{userId}/application/task/create
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
aliasName | String | 任务别名 | 是 |
appName | String | 应用名 | 是 |
type | int | 任务类型: 0,进程;1,端口;2,日志;3,脚本 | 是 |
cycle | int | 采集周期,默认1分钟 | 否 |
target | String | 采集目标,进程路径或端口或日志路径或脚本路径 | 是 |
description | String | 应用说明 | 否 |
对于日志任务,即type=2,RequestBody需追加以下日志相关字段
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
logExample | String | 日志样例 | 是 |
matchRule | String | 日志提取规则 | 是 |
rate | int | 采集速率,单位为分钟 | 是 |
extractResult | List<LogExtractResult>,其中LogExtractResult参数含义见下表格 | 提取结果 | 是 |
metrics | List<Metric>,其中Metric 参数含义见下表格 | 配置指标 | 是 |
LogExtractResult 参数
名称 | 类型 | 说明 |
---|---|---|
extractFieldName | String | 提取的字段名 |
extractFieldValue | String | 提取的字段的值 |
dimensionMapTable | String | 维度映射表名 |
Metric 参数
名称 | 类型 | 说明 |
---|---|---|
metricName | String | 监控项名称 |
metricAlias | String | 监控项别名 |
metricUnit | String | 监控项单位 |
valueFieldType | int | 取值字段类型:取值字段:0,日志行数;1. 单字段;2.多字段 |
valueFieldName | String | 取值字段 |
aggrTags | List<AggrTag>其中AggTag 参数含义见下表格 | 数据维度 |
saveInstanceData | int | 是否存储实例数据:0,否;1,是 |
AggTag 参数
字段名 | 类型 | 含义 |
---|---|---|
range | String | 汇聚实例范围,目前只支持App |
tags | String | 汇聚维度key,多个用逗号隔开 |
请求示例1
POST /csm/api/v1/userId/123456/application/test14/task/create
Host: bcm.bj.baidubce.com:80
{
"aliasName": "agent_test_task",
"type": 0,
"cycle":60,
"target":"/bcm-agent",
"description":"agent task"
}
请求响应1
{
"id": 1,
"name": "0ebea6b1efb74867b7bbaa17caa95e7a", // 监控任务唯一标识
"aliasName": "test_task",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "/bcm-agent",
"type": 0,
"description": "test task"
}
请求示例2
POST /csm/api/v1/userId/123456/application/test14/task/create
Host: bcm.bj.baidubce.com:80
{
"aliasName": "log_test_task20",
"type": 2,
"cycle": 60,
"target": "/tmp/test.log",
"description": "log task",
"logExample": "10.157.16.207 - - [09/Apr/2020:20:45:33 +0800] \"POST /v1/dashboard/metric/gaugechart HTTP/1.1\" 200 117 47ms",
"matchRule": "800] \"(?P<method>(GET|POST|PUT|DELETE)) .*\/v1\/dashboard\/metric\/(?P<widget>(cycle|trend|report|billboard|gaugechart)) HTTP\/1.1\".*(?P<resTime>[0-9]+)ms",
"rate": 5,
"extractResult": [
{
"extractFieldName": "widget",
"extractFieldValue": "gaugechart",
"dimensionMapTable": "path"
}
],
"metrics": [
{
"metricName": "con_tsdb_time",
"metricAlias": "响应时间",
"valueFieldName": "resTime",
"aggrTags": [
{
"range": "All",
"tags": "method,widget"
},
{
"range": "All",
"tags": "method"
}
]
}
]
}
请求响应2
{
"id": 1,
"name": "79c35af26c4346ab844bcbcdde2875c3",
"aliasName": "log_test_task20",
"type": 2,
"cycle": 60,
"target": "/tmp/test.log",
"description": "log task",
"logExample": "10.157.16.207 - - [09/Apr/2020:20:45:33 +0800] \"POST /v1/dashboard/metric/gaugechart HTTP/1.1\" 200 117 47ms",
"matchRule": "800] \"(?P<method>(GET|POST|PUT|DELETE)) .*\/v1\/dashboard\/metric\/(?P<widget>(cycle|trend|report|billboard|gaugechart)) HTTP\/1.1\".*(?P<resTime>[0-9]+)ms",
"rate": 5,
"extractResult": [
{
"extractFieldName": "widget20",
"extractFieldValue": "gaugechart20",
"dimensionMapTable": "path"
}
],
"metrics": [
{
"metricName": "con_tsdb_time20",
"metricAlias": "响应时间",
"valueFieldName": "resTime",
"aggrTags": [
{
"range": "All",
"tags": "method,widget"
},
{
"range": "All",
"tags": "method"
}
]
}
]
}
监控任务详情接口
请求结构体
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/task/{taskName}
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
taskName | String | 任务名 | 是 |
请求示例1
GET /csm/api/v1/userId/123456/application/test14/task/2096eb64edaf484cb84eff5ccb33bfd5
Host: bcm.bj.baidubce.com:80
请求响应1
{
"id": 2,
"name": "2096eb64edaf484cb84eff5ccb33bfd5",
"aliasName": "2489qhwif384189",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "/python",
"type": 0,
"description": "python task"
}
请求示例2
GET /csm/api/v1/userId/123456/application/test14/task/79c35af26c4346ab844bcbcdde2875c3
Host: bcm.bj.baidubce.com:80
请求响应2
{
"id": 11,
"name": "79c35af26c4346ab844bcbcdde2875c3",
"aliasName": "log_test_task2",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "/home/work/bcm/csm.log",
"type": 2,
"description": "log task2",
"logExample": "2020-11-12T16:27:08.149+08:00 DEBUG 86884 [csm-saver-1357862653] --- c.b.b.b.s.m.i.TsdbDataPushServiceImpl : [d2b9f42d-4647-4e81-8d7f-e39e3c154552][] dynamic push data result, TsdbRemoteReturnData:",
"matchRule": "(time)(ms)",
"rate": 5,
"extractResult": [
{
"id": 7,
"taskId": 11,
"extractFieldName": "time",
"extractFieldValue": "50",
"dimensionMapTable": null
}
],
"metrics": [
{
"id": 2,
"taskId": 11,
"metricName": "responseTime",
"metricAlias": "响应时间",
"metricUnit": "ms",
"valueFieldType": 1,
"valueFieldName": "responseTime",
"valueMatchRule": null,
"aggrInstanceRange": "ALL",
"aggrTags": "",
"saveInstanceData": 0
}
]
}
监控任务列表接口
请求结构体
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/task/list
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
type | int | 任务类型:0,进程;1,端口;2,日志;3,脚本 用于过滤; | 否 |
请求示例
GET /csm/api/v1/userId/123456/application/test14/task/list?type=1
Host: bcm.bj.baidubce.com:80
请求响应
[
{
"id": 4,
"name": "171f6e3052fb414098581f7886d66233",
"aliasName": "port_test_task",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "8855",
"type": 1,
"description": "port task"
}
]
监控任务编辑接口
请求结构
Method:PUT
URI: /csm/api/v1/userId/{userId}/application/task/update
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
名称 | 类型 | 说明 | 是否必须 |
aliasName | String | 任务别名 | 是 |
type | int | 任务类型: 0,进程;1,端口;2,日志 | 是 |
cycle | int | 采集周期,默认1分钟 | 否 |
target | String | 采集目标,进程路径或端口或日志路径 | 是 |
description | String | 应用说明 | 否 |
如果type=2,body需追加以下字段
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
logExample | String | 日志样例 | 是 |
matchRule | String | 日志提取规则 | 是 |
rate | int | 采集速率,单位为分钟 | 是 |
extractResult | List |
提取结果 | 是 |
metrics | List |
配置指标 | 是 |
LogExtractResult 参数
名称 | 类型 | 说明 |
---|---|---|
extractFieldName | String | 提取的字段名 |
extractFieldValue | String | 提取的字段的值 |
dimensionMapTable | String | 维度映射表名 |
Metric 参数
名称 | 类型 | 说明 |
---|---|---|
metricName | String | 监控项名称 |
metricAlias | String | 监控项别名 |
metricUnit | String | 监控项单位 |
valueFieldType | int | 取值字段类型:取值字段:0,日志行数;1. 单字段;2.多字段 |
valueFieldName | String | 取值字段 |
aggrTags | List |
数据维度 |
saveInstanceData | int | 是否存储实例数据:0,否;1,是 |
请求示例
PUT /csm/api/v1/userId/123456/application/test14/task/79c35af26c4346ab844bcbcdde2875c3
Host: bcm.bj.baidubce.com:80
{
"id": 11,
"name": "79c35af26c4346ab844bcbcdde2875c3",
"aliasName": "log_test_task2",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "/home/work/bcm/csm.log",
"type": 2,
"description": "log task update2",
"logExample": "11-12T16:27:08.149+08:00 DEBUG 86884 [csm-saver-1357862653] --- c.b.b.b.s.m.i.TsdbDataPushServiceImpl",
"matchRule": "*",
"rate": 5,
"extractResult": [
{
"extractFieldName": "responseTime2",
"extractFieldValue": "responseTime2",
"dimensionMapTable": "123"
}
],
"metrics": [
{
"metricName": "responseTime2",
"metricAlias": "响应时间-update2",
"metricUnit": "ms",
"valueFieldType": 1,
"valueFieldName": "responseTime2",
"valueMatchRule": null,
"aggrInstanceRange": "ALL",
"aggrTags": "",
"saveInstanceData": 0
}
]
}
请求响应
{
"id": 11,
"name": "79c35af26c4346ab844bcbcdde2875c3",
"aliasName": "log_test_task2",
"appName": "test14",
"userId": "123456",
"cycle": 60,
"target": "/home/work/bcm/csm.log",
"type": 2,
"description": "log task update2",
"logExample": "11-12T16:27:08.149+08:00 DEBUG 86884 [csm-saver-1357862653] --- c.b.b.b.s.m.i.TsdbDataPushServiceImpl",
"matchRule": "*",
"rate": 5,
"extractResult": [
{
"extractFieldName": "responseTime2",
"extractFieldValue": "responseTime2",
"dimensionMapTable": "123"
}
],
"metrics": [
{
"metricName": "responseTime2",
"metricAlias": "响应时间-update2",
"metricUnit": "ms",
"valueFieldType": 1,
"valueFieldName": "responseTime2",
"valueMatchRule": null,
"aggrInstanceRange": "ALL",
"aggrTags": "",
"saveInstanceData": 0
}
]
}
监控任务删除接口
请求结构
Method:DELETE
URI: /csm/api/v1/userId/{userId}/application/task/delete
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
name | String | 任务名,uuid,不是aliasName | 是 |
appName | String | 应用名 | 是 |
请求示例
DELETE /csm/api/v1/userId/123456/application/task/delete
Host: bcm.bj.baidubce.com:80
{
"name":"79c35af26c4346ab844bcbcdde2875c3",
"appName":"test14"
}
请求响应
HTTP 200
维度映射表管理接口
维度映射表创建
Method:POST
URI: /csm/api/v1/userId/{userId}/application/dimensionMap/create
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
tableName | String | 维度映射表名 | 是 |
mapContentJson | String | 维度映射内容 | 是 |
请求示例
POST /csm/api/v1/userId/123456/application/dimensionMap/create
Host: bcm.bj.baidubce.com:80
{
"userId": "123456",
"appName": "test14",
"mapContentJson": "chinanet=>cn\nchinacom=>cc",
"tableName": "isp"
}
请求响应
{
"userId": "123456",
"appName": "test14",
"mapContentJson": "chinanet=>cn\nchinacom=>cc",
"tableName": "isp"
}
维度映射表查询
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/dimensionMap/list
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
searchName | String | 映射表名搜索 | 否 |
请求示例
GET /csm/api/v1/userId/123456/application/test14/dimensionMap/list?searchName=is
Host: bcm.bj.baidubce.com:80
请求响应
[
{
"userId": "123456",
"appName": "test14",
"mapContentJson": "chinanet=>cn\nchinacom=>cc",
"tableName": "isp"
}
]
维度映射表删除
请求结构
Method:DELETE
URI: /csm/api/v1/userId/{userId}/application/dimensionMap/delete
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
tableName | String | 维度映射表名 | 是 |
请求示例
DELETE /csm/api/v1/userId/123456/application/test14/dimensionMap/isp
请求响应
HTTP 200
维度映射表更新
请求结构
Method:PUT
URI: /csm/api/v1/userId/{userId}/application/dimensionMap/update
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
tableName | String | 维度映射表名 | 是 |
mapContentJson | String | 维度映射内容 | 是 |
请求示例
PUT /csm/api/v1/userId/123456/application/dimensionMap/update
Host: bcm.bj.baidubce.com:80
{
"userId": "123456",
"appName": "test14",
"mapContentJson": "chinanet=>cn\nchinacom=>cc",
"tableName": "isp"
}
请求响应
HTTP 200
监控数据查询接口
维度值查询接口
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/task/{taskName}/metricMeta
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
taskName | String | 任务名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
instances | String | 多个实例名,逗号隔开 | 否 |
metricName | String | 指标名 | 是 |
dimensionKeys | String | 维度key,可传多个,逗号隔开 | 是 |
请求示例
GET /csm/api/v1/userId/a0d04d7c202140cb80155ff7b6******/application/test14/task/79c35af26c4346ab844bcbcdde******/metricMeta?instances=0.test14,1.test14&metricName=log.responseTime&dimensionKeys=method
Host: bcm.bj.baidubce.com:80
请求响应
{
"method":[
"GET",
"POST",
"PUT"
]
}
多监控对象-单指标查询接口
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/task/{taskName}/metricData
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
taskName | String | 任务名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
instances | String | 多个实例名,逗号隔开.aggrData为true时,可不传;aggrData为false时必传 | 否 |
metricName | String | 指标名 | 是 |
cycle | int | 周期,默认60s | 否 |
startTime | String | utc时间,起始时间 | 是 |
endTime | String | utc时间,结束时间 | 是 |
dimensions | String | 维度,多个维度之间用逗号,连接,同一个维度key的多个取值value之间用三个下划线连接,举例1:httpMethod:POSTGET,path:apipath1apipath2举例2:httpMethod:POST___GET,path:apipath1举例3:httpMethod:POST,path:apipath1 | 否 |
statistics | String | 统计方式,取值:average 平均值 maximum 最大值 minimum 最小值 sum 和值 sampleCount 样本数 |
是 |
aggrData | String | 是否汇聚值,true为获取汇聚数据,默认false | 否 |
请求示例
GET csm/api/v1/userId/a0d04d7c202140cb80155ff7b6******/application/zmq-log-1115/task/6d3f07e6684d47b69ca9600f7f******/metricData?metricName=exec.6d3f07e6684d47b69ca9600f7fcbbb12.metric1&startTime=2023-12-05T09:54:15Z&endTime=2023-12-05T10:04:15Z&instances=0.zmq-log-1115,1.zmq-log-1115&statistics=dss&cycle=120
Host: bcm.bj.baidubce.com:80
请求响应
[
{
"namespace": "0.zmq-log-1115",
"dimensions": [],
"dataPoints": [
{
"timestamp": "2023-12-05T09:54:15Z",
"average": 66.0
},
{
"timestamp": "2023-12-05T09:58:15Z",
"average": 66.0
},
{
"timestamp": "2023-12-05T10:02:15Z",
"average": 66.0
}
]
},
{
"namespace": "1.zmq-log-1115",
"dimensions": [],
"dataPoints": [
{
"timestamp": "2023-12-05T09:54:15Z"
},
{
"timestamp": "2023-12-05T09:58:15Z"
},
{
"timestamp": "2023-12-05T10:02:15Z"
}
]
}
]
报警相关接口
报警策略创建接口
请求结构
Method:POST
URI: /csm/api/v1/userId/{userId}/application/alarm/config/create
RequestBody参数
名称 | 类型 | 描述 |
---|---|---|
alarmDescription | String | 自动生成,报警规则说明 |
alarmName | String | userId下唯一报警名 |
userId | String | 用户id |
appName | String | 应用名 |
monitorObjectType | MonitorObjectType | 监控对象类型。 选择监控对象类型为 实例 时,取值APP;选择监控对象类型为 应用 时,取值SERVICE |
monitorObject | ACMonitorObject | 监控对象 |
type | AlarmType(enum) | 报警类型:选择监控对象类型为 实例 时,取值INSTANCE;选择监控对象类型为 应用 时,取值SERVICE |
level | AlarmLevel(enum) | 报警等级,分为了五个等级NOTICE, WARNING, CRITICAL, MAJOR, CUSTOM |
actionEnabled | Boolean | 报警的通知状态 |
policyEnabled | Boolean | 报警策略启用状态。true:启用,false:禁用 |
rules | List(List |
报警规则列表 |
incidentActions | Set(String) | 报警状态下所要采取的动作 |
resumeActions | Set(String) | 正常状态下所要采取的动作 |
insufficientActions | Set(String) | 采集数据不足状态下的动作 |
insufficientCycle | int | 无数据报警判断周期 |
srcName | String | 任务标识,即任务taskName |
srcType | String | 任务类型,枚举:PROC(进程), PORT(端口),LOG(日志),SCR (脚本) |
repeatAlarmCycle | int | 报警重复提醒:重复报警提醒触发间隔 |
maxRepeatCount | int | 报警重复提醒:最大重复提醒次数 |
ACMonitorObject
名称 | 类型 | 描述 |
---|---|---|
monitorObjectType | MonitorObjectType(enum) | 监控对象类型: APP、SERIVCE。实例型报警策略选择APP,应用型报警策略选择SERVICE |
monitorObjectView | Set(ACMonitorObjectViewModel) | 监控对象 |
ACMonitorObjectViewModel
名称 | 类型 | 描述 |
---|---|---|
monitorObjectName | String | 监控对象。选择监控对象类型为 实例 时,传值taskName;选择监控对象类型为 应用 时,传值维度key、value, 此时 rules[0][0].metricDimensions 无需再赋值 |
monitorObjectNameView | String | 监控对象显示名,在报警历史等展示 |
AlarmRule
名称 | 类型 | 描述 |
---|---|---|
metric | String | 指标标识名 |
metricAlias | String | 指标别名 |
cycle | Integer | 多长时间计算一次是否满足各个报警规则,即单个评估周期时长,单位s |
statistics | String | 统计方式,取值为最大值(maximum)、最小值(minimum)、和值(sum)和平均值(average) |
function | String | 取值THRESHOLD,表示阈值报警 |
threshold | String | 报警规则的阈值 |
comparisonOperator | String | 和阈值比较的算符,取值为>=,>,=,<,<= |
count | Integer | 触发报警所需连续发生次数 |
metricDimensions | List(ACMetricDimensions) | 指标的维度 |
ACMetricDimensions
名称 | 类型 | 描述 |
---|---|---|
name | String | 指标维度key |
value | String | 指标维度Value |
请求示例
POST /csm/api/v1/userId/453bf9588c9e488f9ba2c98412******/application/alarm/config/create
Host: bcm.bj.baidubce.com:80
{
"alarmDescription":"proc.cpu_usage average 值 > 90",
"alarmName":"testAPPalarm",
"userId":"453bf9588c9e488f9ba2c98412******",
"appName":"test14",
"monitorObjectType":"APP",
"monitorObject":{
"id":1
"monitorObjectType":"APP",
"monitorObjectView":[{
"monitorObjectName":"0b5692738f53483da15a7d24483e747f",
"monitorObjectNameView":""
}]
},
"type":"INSTANCE",
"level":"MAJOR",
"actionEnabled":true,
"rules":[
[
{
"id":1,
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
{
"name":"cpu",
"value":"0"
}
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
],
[
{
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
]
],
"region":"bj",
"incidentActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"insufficientActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"resumeActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"srcName":"0b5692738f53483da15a7d24483e747f",
"srcType":"PROC",
"insufficientCycle":300,
"callbackUrl":"",
"callbackToken":"",
"repeatAlarmCycle":0,
"maxRepeatCount":0
}
请求响应
{
"alarmDescription":"proc.cpu_usage average 值 > 90",
"alarmName":"testAPPalarm",
"userId":"453bf9588c9e488f9ba2c98412******",
"appName":"test14",
"monitorObjectType":"APP",
"monitorObject":{
"id":1
"monitorObjectType":"APP",
"monitorObjectView":[{
"monitorObjectName":"0b5692738f53483da15a7d24483e747f",
"monitorObjectNameView":""
}]
},
"type":"INSTANCE",
"level":"MAJOR",
"actionEnabled":true,
"rules":[
[
{
"id":1,
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
{
"name":"cpu",
"value":"0"
}
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
],
[
{
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
]
],
"region":"bj",
"incidentActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"insufficientActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"resumeActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"srcName":"0b5692738f53483da15a7d24483e747f",
"srcType":"PROC",
"insufficientCycle":300,
"callbackUrl":"",
"callbackToken":"",
"repeatAlarmCycle":0,
"maxRepeatCount":0
}
报警策略更新接口
请求结构
Method:PUT
URI: /csm/api/v1/userId/{userId}/application/alarm/config/update
RequestBody参数
同创建报警策略的RequestBody
请求示例
PUT /csm/api/v1/userId/453bf9588c9e488f9ba2c984129090dc/application/alarm/config/update
Host: bcm.bj.baidubce.com:80
{
"alarmDescription":"proc.cpu_usage average 值 > 90",
"alarmName":"testAPPalarm",
"userId":"453bf9588c9e488f9ba2c984129090dc",
"appName":"test14",
"monitorObjectType":"APP",
"monitorObject":{
"id":1
"monitorObjectType":"APP",
"monitorObjectView":[{
"monitorObjectName":"0b5692738f53483da15a7d24483e747f",
"monitorObjectNameView":""
}]
},
"type":"INSTANCE",
"level":"MAJOR",
"actionEnabled":true,
"rules":[
[
{
"id":1,
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
{
"name":"method",
"value":"POST"
},
{
"name":"path",
"value":"/api/search"
}
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
],
[
{
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
]
],
"region":"bj",
"incidentActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"insufficientActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"resumeActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"srcName":"0b5692738f53483da15a7d24483e747f",
"srcType":"PROC",
"insufficientCycle":300,
"callbackUrl":"",
"callbackToken":"",
"repeatAlarmCycle":0,
"maxRepeatCount":0
}
请求响应
{
"alarmDescription":"proc.cpu_usage average 值 > 90",
"alarmName":"testAPPalarm",
"userId":"453bf9588c9e488f9ba2c984129090dc",
"appName":"test14",
"monitorObjectType":"APP",
"monitorObject":{
"id":1
"monitorObjectType":"APP",
"monitorObjectView":[{
"monitorObjectName":"0b5692738f53483da15a7d24483e747f",
"monitorObjectNameView":""
}]
},
"type":"INSTANCE",
"level":"MAJOR",
"actionEnabled":true,
"rules":[
[
{
"id":1,
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
{
"name":"method",
"value":"POST"
},
{
"name":"path",
"value":"/api/search"
}
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
],
[
{
"metric":"proc.cpu_usage",
"metricAlias": "cpu利用率",
"metricDimensions":[
],
"cycle":60,
"statistics":"AVG",
"threshold":"10",
"comparisonOperator":"GT",
"count":3,
"function":"THRESHOLD",
"sequence":1,
}
]
],
"region":"bj",
"incidentActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"insufficientActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"resumeActions":[
"27a51ad0-db67-45bb-8b50-ce0c5ca5a5f9"
],
"srcName":"0b5692738f53483da15a7d24483e747f",
"srcType":"PROC",
"insufficientCycle":300,
"callbackUrl":"",
"callbackToken":"",
"repeatAlarmCycle":0,
"maxRepeatCount":0
}
报警策略列表接口
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/alarm/config/list
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
appName |
String | 应用名,不传表示的所有应用监控 | 否 |
alarmName |
String | 策略名,搜索过滤使用 | 否 |
actionEnabled |
bool | 是否关闭通知,过滤使用 | 否 |
srcType |
String | 监控方式:进程(PROC) / 端口(PORT) / 日志(LOG)/ 脚本(SCR) 不传表示所有监控方式的 |
否 |
taskName | String | 任务标识名(UUID字符串),过滤使用 | 否 |
pageNo |
String | 分页页码 | 是 |
pageSize |
String | 分页大小,默认10 | 否 |
请求示例
GET /csm/api/v1/userId/453bf9588c9e488f9ba2c98412******/application/alarm/config/list?pageNo=1&srcType=PORT&actionEnabled=true&pageSize=2
Host: bcm.bj.baidubce.com:80
请求响应
{
"orderBy": "",
"order": "",
"pageNo": 1,
"pageSize": 2,
"totalCount": 7,
"result": [
{
"alarmDescription": "",
"alarmName": "config-yyy",
"userId": "453bf9588c9e488f9ba2c98412******",
"appName": "yyy-test",
"region": "bj",
"monitorObjectType": "APP",
"monitorObject": {
"id": null,
"monitorObjectView": [
{
"monitorObjectName": "yyy-test.453bf9588c9e488f9ba2c98412******",
"monitorObjectNameView": "",
"metricDimensionView": ""
}
],
"monitorObjectType": "APP",
"typeName": "kInstance"
},
"srcName": "f29d726bc73b4c5bbc813e40a7d3b38c",
"srcType": "PORT",
"type": "INSTANCE",
"level": "MAJOR",
"actionEnabled": true,
"policyEnabled": true,
"rules": [
[
{
"metric": "port.err_code",
"metricAlias": "错误码",
"cycle": 60,
"statistics": "average",
"threshold": 3.0,
"comparisonOperator": ">",
"count": 1,
"function": "THRESHOLD",
"sequence": 0,
"metricDimensions": [],
"formulaV2Alias": "错误码1分钟平均值>3.00",
"metricTags": null
}
]
],
"incidentActions": [
"YYY-test"
],
"resumeActions": [],
"insufficientActions": [],
"insufficientCycle": 0,
"repeatAlarmCycle": 0,
"maxRepeatCount": 0,
"tag": ""
},
{
"alarmDescription": "",
"alarmName": "yyy-and-test",
"userId": "453bf9588c9e488f9ba2c98412******",
"appName": "yyy-test",
"region": "bj",
"monitorObjectType": "APP",
"monitorObject": {
"id": null,
"monitorObjectView": [
{
"monitorObjectName": "yyy-test.453bf9588c9e488f9ba2c98412******",
"monitorObjectNameView": "",
"metricDimensionView": ""
}
],
"monitorObjectType": "APP",
"typeName": "kInstance"
},
"srcName": "f29d726bc73b4c5bbc813e40a7d3b38c",
"srcType": "PORT",
"type": "INSTANCE",
"level": "NOTICE",
"actionEnabled": true,
"policyEnabled": true,
"rules": [
[
{
"metric": "port.err_code",
"metricAlias": "错误码",
"cycle": 60,
"statistics": "average",
"threshold": 0.0,
"comparisonOperator": ">",
"count": 1,
"function": "THRESHOLD",
"sequence": 0,
"metricDimensions": [],
"formulaV2Alias": "错误码1分钟平均值>0.00",
"metricTags": null
},
{
"metric": "port.err_code",
"metricAlias": "错误码",
"cycle": 60,
"statistics": "average",
"threshold": 2.0,
"comparisonOperator": "<",
"count": 1,
"function": "THRESHOLD",
"sequence": 0,
"metricDimensions": [],
"formulaV2Alias": "错误码1分钟平均值<2.00",
"metricTags": null
}
],
[
{
"metric": "port.res_time",
"metricAlias": "响应时间",
"cycle": 60,
"statistics": "average",
"threshold": 5.0,
"comparisonOperator": ">",
"count": 1,
"function": "THRESHOLD",
"sequence": 1,
"metricDimensions": [],
"formulaV2Alias": "响应时间1分钟平均值>5.00ms",
"metricTags": null
}
]
],
"incidentActions": [
"YYY-test"
],
"resumeActions": [],
"insufficientActions": [],
"insufficientCycle": 0,
"repeatAlarmCycle": 0,
"maxRepeatCount": 0,
"tag": ""
}
]
}
报警策略删除接口
请求结构
Method:DELETE
URI: /csm/api/v1/userId/{userId}/application/alarm/config
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
appName |
String | 应用名 | 是 |
alarmName |
String | 策略标识名 | 是 |
请求示例
DELETE /csm/api/v1/userId/453bf9588c9e488f9ba2c984129090dc/application/alarm/config
Host: bcm.bj.baidubce.com:80
{
"appName":"test14",
"alarmName":"proc666"
}
请求响应
HTTP 200
报警策略详情接口
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/alarm/{alarmName}/config
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
alarmName | String | 报警策略名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
appName |
String | 应用名 | 是 |
请求示例
GET /csm/api/v1/userId/453bf9588c9e488f9ba2c98412******/application/alarm/inst-test/config?appName=test_ymd_app_0918
Host: bcm.bj.baidubce.com:80
请求响应
{
// 报警描述
"alarmDescription": "",
// 报警策略名
"alarmName": "inst-test",
// 用户id
"userId": "453bf9588c9e488f9ba2c98412******",
// 应用名
"appName": "test_ymd_app_0918",
"region": "bj",
"monitorObjectType": "APP",
"monitorObject": {
"id": null,
"monitorObjectView": [
{
"monitorObjectName": "test_ymd_app_0918.453bf9588c9e488f9ba2c98412******",
"monitorObjectNameView": "",
"metricDimensionView": ""
}
],
"monitorObjectType": "APP",
"typeName": "kInstance"
},
"srcName": "46e78b2831394f738429f88265c5b25f",
// 监控方式, 枚举值 PROC:进程 LOG:日志 PORT:端口 SCR:脚本
"srcType": "LOG",
// 监控对象类型, 枚举值 INSTANCE:实例 SERVICE:应用
"type": "INSTANCE",
// 报警等级
"level": "MAJOR",
// 通知模版是否开启
"actionEnabled": true,
// 报警策略是否开启
"policyEnabled": true,
// 报警规则
"rules": [
[
{
"metric": "log.test_name",
"metricAlias": "test_name",
"cycle": 60,
"statistics": "average",
"threshold": 0.0,
"comparisonOperator": ">",
"count": 1,
"function": "THRESHOLD",
"sequence": 0,
"metricDimensions": [],
"formulaV2Alias": "test_name1分钟平均值>0.00",
"metricTags": null
}
]
],
// 异常报警动作
"incidentActions": [
"816a2a13-a817-4e43-bb7a-9a7922c092a5"
],
// 报警关闭报警动作
"resumeActions": [],
// 数据不足报警动作
"insufficientActions": [],
// 数据不足报警触发周期
"insufficientCycle": 0,
// 重复报警间隔
"repeatAlarmCycle": 0,
// 重复报警最大次数
"maxRepeatCount": 0,
"tag": ""
}
}
报警指标列表接口
请求结构
Method:GET
URI: /csm/api/v1/userId/{userId}/application/{appName}/{taskName}/alarm/metrics
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
appName | String | 应用名 | 是 |
taskName | String | 任务名 | 是 |
Query参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
searchName | String | 指标名 | 否 |
请求示例
GET /csm/api/v1/userId/453bf9588c9e488f9ba2c98412******/application/test_ymd_app_0918/46e78b2831394f738429f88265******/alarm/metrics?searchName=test_namerics
Host: bcm.bj.baidubce.com:80
请求响应
[
{
"id": 706,
"taskId": 3865, //监控任务id
"metricName": "log.test_name", //监控项名称
"metricAlias": "test_name", //监控项别名
"metricUnit": "", //监控项单位
"valueFieldType": 1, //取值字段:0,日志行数;1. 单字段;2.多字段
"valueFieldName": "", //日志中取值的字段名
"valueMatchRule": null, //筛选条件
// 汇聚的数据维度
"aggrTags": [
{
"range": "App",
"tags": ""
}
],
"saveInstanceData": 1. //是否存储单实例数据
}
]
日志提取接口
请求结构
Method:POST
URI: /csm/api/v1/userId/{userId}/application/logextract
URL参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
userId | String | 用户id | 是 |
RequestBody参数
名称 | 类型 | 说明 | 是否必须 |
---|---|---|---|
extractRule | String | 提取规则 | 是 |
logExample | String | 日志样例,注意多行日志需用\n换行 | 是 |
请求示例
POST /csm/api/v1/userId/453bf9588c9e488f9ba2c98412******/application/logextract
Host: bcm.bj.baidubce.com:80
{
"extractRule": "800] \"(?<method>(GET|POST|PUT|DELETE)) .*/v1/dashboard/metric/(?<widget>(cycle|trend|report|billboard|gaugechart)) HTTP/1.1\".* (?<resTime>[0-9]+)ms",
"logExample": "10.157.16.207 - - [09/Apr/2020:20:45:33 +0800] \"POST /v1/dashboard/metric/gaugechart HTTP/1.1\" 200 117 109ms\n10.157.16.207 - - [09/Apr/2020:20:45:33 +0800] \"GET /v1/dashboard/metric/report HTTP/1.1\" 200 117 19ms"
}
请求响应
[
{
"extractFieldName": "resTime",
"extractFieldValue": "19、109",
"metricEnable": 1
},
{
"extractFieldName": "widget",
"extractFieldValue": "gaugechart、report",
"metricEnable": 0
},
{
"extractFieldName": "method",
"extractFieldValue": "POST、GET",
"metricEnable": 0
}
]