更新时间:2025-08-07 GMT+08:00

添加或修改服务发现规则

功能介绍

该接口用于添加或修改一条或多条服务发现规则。同一projectid下可添加的规则上限为100条。

调用方法

请参见如何调用API。

URI

PUT /v1/{project_id}/inv/servicediscoveryrules

表1 路径参数

参数

是否必选

参数类型

描述

project_id

是

String

项目ID,可以从控制台获取,也可以从调用API处获取。获取方式请参见:获取项目ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

是

String

从IAM服务获取的用户Token。获取方式请参见:获取Token。

Content-Type

是

String

消息体的类型(格式)。指定类型为“application/json”。

枚举值:

  • application/json

表3 请求Body参数

参数

是否必选

参数类型

描述

appRules

否

Array of AppRules objects

服务参数。

表4 AppRules

参数

是否必选

参数类型

描述

createTime

否

String

规则创建时间(创建时不传,修改时传查询返回的createTime)。

缺省值:1599098476654

enable

是

Boolean

true、false 规则是否启用。

eventName

是

String

aom_inventory_rules_event规则事件名称,对于服务发现固定为"aom_inventory_rules_event"。

hostid

否

Array of strings

主机ID(暂不使用,传空即可)。

id

是

String

创建时填空,修改时填规则ID。

name

是

String

规则名称。

字符长度为4到63位,以小写字母a-z开头,只能包含0-9/a-z/-,不能以-结尾。

projectid

是

String

项目ID,可以从控制台获取,也可以从调用API处获取。获取方式请参见:获取项目ID。

spec

是

AppRulesSpec object

规则详情。

desc

否

String

自定义描述信息

表5 AppRulesSpec

参数

是否必选

参数类型

描述

appType

是

String

服务类型,用于标记服务的分类,仅用于规则分类和界面展示。可以填写任意字段,如按技术栈分类可填写Java,Python。按作用分类可填写collector(采集),database(数据库)等。

attrList

否

Array of strings

属性列表(暂不使用,可不传)。

cmdLine、env

detectLog

是

String

是否开启日志采集。

true、false

discoveryRule

是

Array of DiscoveryRule objects

规则发现部分,数组中有多个对象时表示需要同时满足所有条件的进程才会被匹配到。checkType为cmdLine时checkMode填contain,checkContent格式为["xxx"]表示进程命令行参数中需要包含xxx。checkType为env时checkMode填contain,checkContent格式为 ["k1","v1"]表示进程环境变量中需要包含名为k1值为v1的环境变量。checkType为scope时checkMode填equals,checkContent格式为节点ID数组["hostId1","hostId2"],表示规则仅会在这些节点上生效(如果不指定节点范围,规则将下发到该项目所有的节点)。

isDefaultRule

是

String

是否为默认规则。

true、false

isDetect

是

String

是否为规则预探测场景(预探测场景不会保存规则,仅用于规则下发之前验证该规则能否有效发现节点上的进程)。true、false

logFileFix

是

Array of strings

日志文件的后缀。

log、trace、out

logPathRule

否

Array of LogPathRule objects

日志路径配置规则。当cmdLineHash为固定字符串时,指定日志路径或者日志文件。否则只采集进程当前打开的以.log和.trace结尾的文件。nameType取值cmdLineHash时,args格式为["00001"],value格式为["/xxx/xx.log"],表示当启动命令是00001时,日志路径为/xxx/xx.log。

nameRule

是

NameRule object

发现上来的服务、应用的命名规则。

priority

是

Integer

规则优先级。1~9999的整数字符串,默认取值为9999

dataSource

否

String

数据源

editable

否

String

是否支持编辑 true、false

aom_metric_relabel_configs

否

Object

指标配置

表6 DiscoveryRule

参数

是否必选

参数类型

描述

checkContent

是

Array of strings

匹配值。

checkMode

是

String

匹配条件。contain、equals

checkType

是

String

匹配类型。cmdLine、env、scope

表7 LogPathRule

参数

是否必选

参数类型

描述

args

是

Array of strings

命令行。

nameType

是

String

取值类型。

cmdLineHash

value

是

Array of strings

日志路径。

表8 NameRule

参数

是否必选

参数类型

描述

appNameRule

是

Array of AppNameRule objects

服务命名部分,数组中有多个对象时表示将每个对象抽取到的字符串拼接作为服务的名称。nameType取值cmdLine时args格式为["start","end"],表示抽取命令行中start、end之间的字符。nameType取值cmdLine时args格式为["aa"],表示抽取环境变量名为aa对应的环境变量值。nameType取值str时,args格式为["fix"],表示服务名称最后拼接固定文字fix。nameType取值cmdLineHash时,args格式为["0001"],value格式为["ser"],表示当启动命令是0001时,服务名称为ser。

applicationNameRule

是

Array of ApplicationNameRule objects

应用命名部分。nameType取值cmdLine时args格式为["start","end"],表示抽取命令行中start、end之间的字符。nameType取值cmdLine时args格式为 ["aa"],表示抽取环境变量名为aa对应的环境变量值。nameType取值str时,args格式为["fix"],表示服务名称最后拼接固定文字fix。nameType取值cmdLineHash时,args格式为["0001"],value格式为["ser"],表示当启动命令是0001时,应用名称为ser。

表9 AppNameRule

参数

是否必选

参数类型

描述

nameType

是

String

取值类型。从cmdLineHash、cmdLine、env、str里面选取。

args

是

Array of strings

输入值。

value

否

Array of strings

服务名(仅nameType为cmdLineHash时填写)。

表10 ApplicationNameRule

参数

是否必选

参数类型

描述

nameType

是

String

取值类型。

从cmdLineHash、cmdLine、env、str里面选取。

args

是

Array of strings

输入值。

value

否

Array of strings

服务名(仅nameType为cmdLineHash时填写)。

响应参数

状态码:200

表11 响应Body参数

参数

参数类型

描述

errorCode

String

响应码。

errorMessage

String

响应信息描述。

responseStatus

Integer

响应状态码(不再使用)。

id

Array of strings

服务发现规则id列表,多AZ配置同步时使用。

results

Array of Map<String,String> objects

服务发现规则详细信息列表。

请求示例

添加名称为“aom_inventory_rules_event”且用户project_id为“684fc87a79d7xxxx22e62a7da95b”的应用发现规则。

https://{endpoint}/v1/{project_id}/inv/servicediscoveryrules

{
  "appRules" : [ {
    "createTime" : "1694705766730",
    "enable" : true,
    "name" : "ica**nt",
    "eventName" : "aom_inventory_rules_event",
    "hostid" : [ ],
    "id" : "b53a5152-****-****-****-302367e04c0b",
    "projectid" : "684fc87a79d7xxxx22e62a7da95b",
    "spec" : {
      "detectLog" : "true",
      "editable" : null,
      "logPathRule" : [ ],
      "priority" : 9999,
      "attrList" : [ "cmdLine" ],
      "nameRule" : {
        "appNameRule" : [ {
          "args" : [ "/opt/********* -DNFW=ica**nt" ],
          "nameType" : "cmdLineHash",
          "value" : [ "aicagentserver" ]
        } ],
        "applicationNameRule" : [ {
          "args" : [ "/opt/*********** -DNFW=ica**nt" ],
          "nameType" : "cmdLineHash",
          "value" : [ "aica**nt" ]
        } ]
      },
      "appType" : "",
      "aom_metric_relabel_configs" : null,
      "logFileFix" : [ "log", "trace", "out" ],
      "isDetect" : "false",
      "isDefaultRule" : null,
      "dataSource" : null,
      "discoveryRule" : [ {
        "checkType" : "cmdLine",
        "checkContent" : [ "-DNFW=ica**nt" ],
        "checkMode" : "contain"
      } ]
    },
    "desc" : "自定义描述/User-defined description"
  } ]
}

响应示例

状态码:200

OK 请求响应成功。

{
  "errorCode" : "SVCSTG.INV.2000000",
  "errorMessage" : null,
  "id" : [ ],
  "results" : [ {
    "name" : "aom_inventory_rules_event",
    "id" : "b53a5152-****-****-****-302367e04c0b"
  } ]
}

状态码:400

BadRequest 非法请求。建议直接修改该请求,不要重试该请求。

{
  "errorCode" : "SVCSTG.INV.4000115",
  "errorMessage" : "apprule name has existed",
  "id" : [ ],
  "results" : [ ]
}

状态码

状态码

描述

200

OK 请求响应成功。

400

BadRequest 非法请求。建议直接修改该请求,不要重试该请求。

401

Unauthorized 在客户端提供认证信息后,返回该状态码,表明服务端指出客户端所提供的认证信息不正确或非法。

403

Forbidden 请求被拒绝访问。返回该状态码,表明请求能够到达服务端,且服务端能够理解用户请求,但是拒绝做更多的事情,因为该请求被设置为拒绝访问,建议直接修改该请求,不要重试该请求。

500

InternalServerError 表明服务端能被请求访问到,但是不能理解用户的请求。

503

ServiceUnavailable

被请求的服务无效。建议直接修改该请求,不要重试该请求。

错误码

请参见错误码。