文档首页 > > API参考> API> 监控> 添加或修改服务发现规则

添加或修改服务发现规则

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

功能介绍

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

URI

PUT /v1/{project_id}/inv/servicediscoveryrules

请求消息

请求参数

请求参数如表1所示。

表1 请求参数

参数

是否必选

参数类型

取值范围

描述

appRules

Array

-

详见表2

表2 appRules参数

参数

是否必选

参数类型

取值范围

描述

projectid

String

-

租户从IAM申请到的projectid,一般为32位字符串。

id

String

-

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

name

String

字符长度小于64位,以小写字母(a-z)开头,只能包含0-9/a-z/-,不能以-结尾。

规则名称。

createTime

String

-

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

enable

Boolean

true、false

规则是否启用。

hostid

Array

-

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

eventName

String

aom_inventory_rules_event

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

spec

Object

-

规则详情。详见表3

表3 spec参数

参数

是否必选

参数类型

取值范围

描述

detectLog

String

true、false

是否开启日志采集。

logFileFix

Array

log、trace、out

日志文件的后缀。

discoveryRule

Array

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

规则发现部分,数组中有多个对象时表示需要同时满足所有条件的进程才会被匹配到。详见表4

attrList

Array

cmdLine、env

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

isDetect

String

true、false

是否为规则预探测场景(预探测场景不会保存规则,仅用于规则下发之前对规则正确性的检测)。

isDefaultRule

String

true、false

是否为默认规则。

priority

Integer

1~9999的整数,默认取值为9999

规则优先级。

nameRule

Array

-

服务发现规则命名部分。详见表5

appType

String

-

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

logPathRule

Array

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

日志路径配置规则。详见表8

表4 discoveryRule参数

参数

是否必选

参数类型

取值范围

描述

checkType

String

cmdLine、env、scope

匹配类型。

checkMode

String

contain、equals

匹配条件。

checkContent

Array

-

匹配值。

表5 nameRule参数

参数

是否必选

参数类型

取值范围

描述

appNameRule

Array

  • 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。

服务命名部分,数组中有多个对象时表示将每个对象抽取到的字符串拼接作为服务的名称。详见表6

applicationNameRule

Array

  • 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。

应用命名部分。详见表7

表6 appNameRule参数

参数

是否必选

参数类型

取值范围

描述

nameType

String

cmdLineHash、cmdLine、env、str

取值类型。

args

Array

-

输入值。

value

Array

-

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

表7 applicationNameRule参数

参数

是否必选

参数类型

取值范围

描述

nameType

String

cmdLineHash、cmdLine、env、str

取值类型。

args

Array

-

输入值。

value

Array

-

应用名(仅nameType为cmdLineHash时填写)。

表8 logPathRule参数

参数

是否必选

参数类型

取值范围

描述

nameType

String

cmdLineHash

取值类型。

args

Array

-

命令行。

value

Array

-

日志路径。

Header说明

请求消息头(Header)如表9所示。

表9 Header说明

名称

是否必选

说明

X-Auth-Token

从IAM服务获取的用户Token。

Content-Type

指定类型为application/json。

请求示例

{
    "appRules": [
        {
            "id": "",
            "name": "bytest",
            "createTime": "",
            "projectid": "5a6036f48e954fcd84d198cb28db311a",
            "enable": true,
            "hostid": [],
            "eventName": "aom_inventory_rules_event",
            "spec": {
                "detectLog": "true",
                "logFileFix": ["log","trace"],
                "discoveryRule": [
                    {
                        "checkType": "cmdLine",
                        "checkMode": "contain",
                        "checkContent": ["default"]
                    },{
                        "checkType": "scope",
                        "checkMode": "equals",
                        "checkContent": [
                            "44d6c4bb-f673-4bf4-8d33-313832f37b28"
                        ]
                    }
                ],
                "attrList": ["cmdLine"],
                "isDetect": "false",
                "priority": "1",
                "nameRule": {
                    "appNameRule": [
                        {
                            "nameType":"cmdLineHash",
                            "agrs":["00000000001"],
                            "value":["serviceName1"]
                        },
                        {
                            "nameType": "cmdLine",
                            "args": [
                                "/var/paas/kubernetes/","/kubeconfig"
                            ]
                        },
                        {
                            "nameType": "env",
                            "args": ["APP_NAME"]
                        },
                        {
                            "nameType": "str",
                            "args": ["kube"]
                        }
                    ],
                    "applicationNameRule": [
                        {
                            "nameType":"cmdLineHash",
                            "agrs":["00000000001"],
                            "value":["applicationName1"]
                        },

                        {
                            "nameType": "str",
                            "args": ["kubeproxy"]
                        }
                    ]
                },
                "appType": "",
                "isDefaultRule":"false",
                "logPathRule": [
                    {
                        "nameType":"cmdLineHash",
                        "agrs":["00000000001"],
                        "value":["/xx/xxx/xx.log","/xx/xxx/xx"]
                    }
                ]
            }
        }
    ]
}

响应消息

响应参数

响应参数如表10所示。

表10 响应参数

参数名称

类型

描述

errorCode

String

响应码。

errorMessage

String

响应信息描述。

响应示例

{
     "errorCode":"SVCSTG.INV.2000000",
     "errorMessage":""
}

状态码

  • 正常

    状态码如表11所示。

    表11 状态码

    状态码

    编码

    描述

    200

    OK

    请求响应成功。

  • 异常

    状态码如表12所示。更多状态码请见状态码

    表12 状态码

    状态码

    编码

    描述

    400

    BadRequest

    非法请求。

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

    401

    Unauthorized

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

    403

    Forbidden

    请求被拒绝访问。

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

    500

    InternalServerError

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

    503

    ServiceUnavailable

    被请求的服务无效。

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

错误码

表13 错误码

错误码

错误信息

处理措施

SVCSTG.INV.4030000

Forbidden

请更换有权限的账号。

SVCSTG.INV.4000115

Invalid request parameter.

请检查参数。

SVCSTG.INV.5000002

The Elasticsearch execution is abnormal.

请联系管理员解决。

SVCSTG.INV.5000003

The call ICMGR is abnormal.

请联系管理员解决。

SVCSTG.INV.5000001

The Elasticsearch session is null.

请联系管理员解决。

SVCSTG.INV.5000006

The apprule name already exists.

请修改规则名称。

SVCSTG.INV.5000007

The maximum number of rules has been reached.

请删除不需要的规则后重新添加规则。

分享:

    相关文档

    相关产品

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

提交成功!

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

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

*必选

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

字符长度不能超过200

提交反馈 取消

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

跳转到云社区