如何接入日志、链路和指标监控,以及如何导入自定义仪表

如何接入

从监控的角度看业务系统该如何介入 AMO 平台,主要有三个角色:业务开发、AMO平台管理员以及AMO 平台用户,涉及的具体内容如下:

  • 业务开发,集成koca-metricskoca-tracing SDK,并提供一个健康检查接口
    • koca-metrics 通过一个 HTTP 接口暴露系统监控指标,默认集成的包括有:JVM、KOCA 服务调用等指标,业务层指标同样可以根据需求扩展以同样的端点暴露出指标
    • koca-tracing 记录调用链路,写入链路日志
    • 健康检查接口 KOCA 应用可以使用 /actuator/health ,或者根据业务需要自定义接口
  • 平台管理员,需要根据服务分类进行相关的配置,如日志采集、指标监控、健康检查、日志格式转换、监控仪表、告警规则等配置
  • 平台用户,通过日志查询、链路查询、指标仪表以及告警信息等发现、排查和解决问题

​ 开发侧 SDK 集成和功能使用不需要太多介绍,都可以参考对应文档,接下来主要介绍平台配置管理,在此前需要理解 AMO 对基础资源的定义,参考 基础设置 文档,有了这样的资源定义后 AMO 监控及运维相关的配置结构如下图。首先,在服务分类层有基础配置,基础配置根据组件不同定义了组件相关的配置信息;其次,在基础配置中必定有需要在服务、实例层进行自定义扩展的参数,针对这类配置先在服务分类进行定义,参数定义时可以配置为是否必选以及默认值,然后在服务、实例层根据需求进行配置;最后,配置生效的优先级实例 > 服务 > 服务分类默认值

配置结构

​ 这是 AMO 平台配置结构的设计,回到各个监控组件的接入,就遵循这样的结构,每个组件有自己的一套基础配置以及扩展参数定义,接下来具体介绍每个组件的基础配置以及可扩展参数。

指标监控

​ 首先被监控系统需要暴露指标,KOCA 应用参考 开发框架-服务监控-koca-metrics 文档,业务等需要自定义的指标参考 指标规范 文档。

指标监控配置:

  • 基础配置:
    • 导航:指标监控 → 配置管理
    • 配置项:
      • 指标监控:监控端口、监控路径以及是否代理主机
      • 健康检查:检查方式、检查端口、检查路径
  • 扩展参数:
    • metricPort 监控端口
    • metricPath 监控路径
    • probePort 健康检查端口
    • probePath健康检查路径
  • 注意基础配置中指标监控和健康检查都是支持对条配置的,此时如果用扩展参数进行服务/实例层的自定义会全部替换,使用中需要注意
    • 一般指标监控和健康检查都只通过一个端点即可

​ 以上配置的是指标的采集,指标的展示首先针对 KOCA 应用 AMO 平台提供了与 koca-metrics 有配套的仪表,可以开箱即用,如果需要自定义或者有业务指标需要定制仪表,需要使用 Grafana 进行设计,完成后将 JSON 数据导入到 AMO 平台,相关文档参考 指标仪表配置

日志监控

日志接入首先要在目标服务器上部署 koca-agent 及 filebeat 服务,有两种部署方式

日志监控配置:

  • 基础配置:
    • 导航:日志监控 → 配置管理
    • 配置项:
      • 日志路径:由于日志文件位置在不同服务/实例会有差异,所以此处配置的路径可以是绝对路径或者相对路径
        • 使用相对路径可以在服务/实例的扩展参数中配置日志根目录
    • 注意:日志监控配置包括链路日志的采集配置,如果是链路日志,在配置项中勾选链路日志
  • 扩展参数:
    • logDir 日志采集路径,为日志根目录,与基础配置中的日志路径共同定义了日志文件的完整路径

以 KCBP 日志为例,日志采集的配置如下:

{
  "paths": [
    "\\bin\\log\\user\\*\\*.log"
  ],
  "multiline": {
    "pattern": "^\\["
  },
  "encoding": "GBK",
  "fields": {
    "log.type": "service"
  }
}

其中 paths 配置的目录为相对目录,如果在扩展参数中配置的 logDir=c:\kcbp,那么日志采集的完整路径为 c:\kcbp\bin\log\user\*\*.log

日志转换

日志转换由 Logstash 完成,详情参考 Logstash-Filter 配置 文档

链路监控

首选被监控系统需要集成链路监控-koca-tracing SDK,将链路日志输出到日志文件,链路日志的上报统一走日志采集流程,如果需要对链路日志进行转换同样参考 Logstash-Filter 配置 文档