项目接入
微服务治理平台旨在帮助您更好地观测服务的健康状态,其观测范围涵盖分布式全链路追踪、错误分析、告警管理及自定义大盘等不同维度,并且简化运维流程,使服务运维变得更加轻松高效。
平台从项目角度管理关联应用数据,因此您需要优先关注如何创建或接入微服务治理项目,以使用平台提供的监控分析能力。该操作的必要性在于,应用产生的 Metric、Tracing 和 Log 等数据必须通过某种显式授权,才能被平台正确采集和存储,其主要流程如下:
- 创建项目,属于同一项目的数据将被统一管理。
- 生成授权 Token,以识别上报数据的归属关系。
- 应用端集成采集探针 SDK,以上报监控数据。
进入 管理中心 > 项目列表 > 新建项目,有多种项目类型可选,例如研发项目、监控项目、代码托管项目等,其中研发项目和监控项目是微服务治理平台支持集成的项目类型,但两者的接入方式略有不同,下文将为您详细介绍两者的差异。
如何选择项目
研发项目
研发项目提供项目管理、代码托管、CI/CD 等功能。对于该类型项目,平台通过提供 Monitor Addon 的方式接入微服务治理平台,该 Addon 将自动完成授权 Token 和采集 SDK 的注入。
若您满足如下条件,可考虑通过研发项目接入应用:
- 除去微服务治理平台的使用需求外,您还希望使用研发项目提供的项目管理、代码托管、CI/CD 等功能。
- 您的应用程序语言为 Java 或 Nodejs(当前 Monitor Addon 仅支持这两种语言程序的 SDK 注入)。
监控项目
监控项目专注于提供服务监控、链路监控、自定义大盘和告警等监控功能。相对于研发项目,监控项目提供更通用、灵活和可配置的接入方式,同时可作为 OpenTelemetry、OpenTracing 等协议的 Server 端,与众多支持该协议的采集 SDK 集成。
若您满足如下条件,可考虑通过监控项目接入应用:
- 您仅需使用微服务治理平台提供的监控能力。
- 您的项目未被 Erda 托管,无法通过前文介绍的研发项目接入。
- 您的应用程序语言不受 Monitor Addon 支持。
- 您已有其他与 OpenTelemetry 或 OpenTracing 协议兼容的采集 SDK。
研发项目接入
执行以下操作前,请确认您已完成研发项目、dice.yml 以及部署流水线创建,具体请参见 通过流水线部署。
添加 Monitor Addon
tip 提示 该步骤为可选项。通过流水线部署的应用将自动添加 Monitor Addon。
编辑 dice.yml,添加 Monitor Addon。
您可通过可视化的图形编辑模式添加:
也可选择以文本模式编辑 dice.yml:
addons:
monitor:
plan: monitor:basic
options:
version: '3.6'
执行流水线部署应用
进入 应用 > 流水线,新建流水线并点击执行。
流水线部署过程中,将执行 Monitor Addon 指定的特定逻辑:
向微服务治理平台注册项目。
向微服务治理平台申请授权 Token。
在打包的镜像中添加采集 SDK。
将授权 Token 注入至部署应用的环境变量。
等待流水线执行成功后,进入微服务治理平台首页,即可查看方才部署的项目,点击进入管理。
监控项目接入
创建监控项目
请按照以下步骤创建项目:
- 进入 管理中心 > 项目列表。
点击 新建项目。
选择 监控项目,并根据界面提示输入项目名称、项目标识等信息。
- 完成项目创建后,进入微服务治理平台首页,即可查看方才创建的项目,点击进入项目空间。
创建接入 Token
- 进入 微服务治理平台 > 环境设置 > 接入配置。
- 点击右上角 创建 Token,页面将展示创建的 Token 信息。
应用端集成采集 SDK
对于外部项目的接入,考虑到多语言和开放性问题,当前平台与开源社区的协议集成,支持所有兼容 OpenTelemetry 和 OpenTracing 的采集端 SDK 上报数据。
在接入配置页面,平台默认提供 Jaeger Client 接入的多语言具体指导。此处以 Java 语言为例进行说明。
获取接入点和鉴权信息
- 接入点:服务端开放的数据接收 API 地址。
- 环境 ID:不同的项目和环境(开发、测试、预发、生产)有不同的环境 ID,用于区分数据归属。
- Token:用于鉴权。
引用 SDK 并配置鉴权信息
您可以在 HTTP/HTTPS 协议的 Header 或 Jaeger 协议的 Tag 字段中配置鉴权信息,具体字段说明如下。
- erda.env.id:微服务项目环境 ID。
- erda.env.token:微服务环境鉴权 Token,在此页面创建和获取。
下文以 Jaeger SpringCloud Starter 上报数据为例:
引入 opentracing-spring-jaeger-cloud-starter 依赖。
<dependency>
<groupId>io.opentracing.contrib</groupId>
<artifactId>opentracing-spring-jaeger-cloud-starter</artifactId>
<version>3.3.1</version>
</dependency>
在 application.yml 中配置 Jaeger。
opentracing:
jaeger:
service-name: <your_service_name>
http-sender:
url: https://collector.daily.terminus.io/api/jaeger/traces
log-spans: true
tags:
erda.env.id: <your_env_id>
erda.env.token: <your_token>