可观测性
引入依赖
go get github.com/polarismesh/polaris-go@latest
通过配置文件 polaris.yaml 开启监控上报
- 你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细
通过 prometheus pull 模式上报监控数据
#描述:全局配置项
global:
#统计上报设置
statReporter:
#描述:是否将统计信息上报至monitor
#类型:bool
enable: true
#描述:启用的统计上报插件类型
#类型:list
#范围:已经注册的统计上报插件的名字
chain:
- prometheus
plugin:
prometheus:
type: pull
#描述: 设置 prometheus http-server 的监听IP
#类型:string
#默认使用SDK的绑定IP
metricHost:
#描述: 设置 prometheus http-server 的监听端口
#类型:int
#默认值: 28080
#如果设置为负数,则不会开启默认的http-server
#如果设置为0,则随机选择一个可用端口进行启动 http-server
metricPort: 28080
通过 pushgateway push 模式上报监控数据
#描述:全局配置项
global:
#统计上报设置
statReporter:
#描述:是否将统计信息上报至monitor
#类型:bool
enable: true
#描述:启用的统计上报插件类型
#类型:list
#范围:已经注册的统计上报插件的名字
chain:
- prometheus
plugin:
prometheus:
type: push
#描述: 设置 pushgateway 的地址, 仅 type == push 时生效
#类型:string
#默认 ${global.serverConnector.addresses[0]}:9091
address: 127.0.0.1:9091
#描述:设置metric数据推送到pushgateway的执行周期, 仅 type == push 时生效
#类型:string
#格式:^\d+(ms|s|m|h)$
#范围:[1m:...]
#默认值:10m
interval: 10s
通过代码开启监控上报
通过 prometheus pull 模式上报监控数据
cfg := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"})
cfg.GetGlobal().GetStatReporter().SetEnable(true)
cfg.GetGlobal().GetStatReporter().SetChain([]string{"prometheus"})
cfg.GetGlobal().GetStatReporter().SetPluginConfig("prometheus", &prometheus.Config{
Type: "pull",
PortStr: "28080",
IP: "",
})
通过 pushgateway push 模式上报监控数据
cfg := config.NewDefaultConfiguration([]string{"127.0.0.1:8091"})
cfg.GetGlobal().GetStatReporter().SetEnable(true)
cfg.GetGlobal().GetStatReporter().SetChain([]string{"prometheus"})
cfg.GetGlobal().GetStatReporter().SetPluginConfig("prometheus", &prometheus.Config{
Type: "push",
Interval: 10 * time.Second,
Address: "",
})
SDK实例构建
使用在 package github.com/polarismesh/polaris-go 下的 NewConsumerAPI 方法进行构造一个 ConsumerAPI SDK 实例
import (
...
"github.com/polarismesh/polaris-go"
)
func main() {
consumer, err := polaris.NewConsumerAPI()
}
上报调用情况
type ServiceCallResult struct {
// 上报的服务实例
CalledInstance Instance
// 调用接口方法
Method string
// 必选,本地服务调用的状态,正常or异常
RetStatus RetStatus
// 必选,本地服务调用的返回码
RetCode *int32
// 必选,被调服务实例获取接口的最大时延
Delay *time.Duration
// 可选,主调服务实例的服务信息
SourceService *ServiceInfo
}
上报请求调用结果
你在根据请求调用情况对 ServiceCallResult 结构体完成初始化后,只需要调用 ConsumerAPI.UpdateServiceCallResult 方法即可完成请求调用结果上报。SDK 内部会根据上报的调用结果信息,将其转换为相应的流量调用指标数据,上报至 prometheus。
consumer.UpdateServiceCallResult(ServiceCallResult)