遥测数据
可观测数据
Log
1.1日志配置
日志的配置在 Collect 下的 Log下配置,目前日志默认提供是 zap 的封装,支持异步日志写入,在大量并发请求时,有助于提高效率,减少IO次数。一以下是日志的设置,支持日志级别设置,文件名称,日志前缀(用于区分服务),缓存大小,定时刷入时间设置,这里缓存大小和时间
log:
# DebugLevel = -1, InfoLevel = 0, WarnLevel = 1
# ErrorLevel = 2, DPanicLevel = 3, PanicLevel = 4, FatalLevel = 5
level: -1
# log file name
file_name: admin
# log print prefix
prefix: "[PHANES]"
# will buffer up to 4096 kilobytes of logs,
# waiting at most 10 seconds between flushes.
buffer_size: 4096 # kb, default 256kb
interval: 10 # second, default 30s
1.2使用示例
不携带 context 的日志
import (
log "auth/collector/logger"
)
log.Info("server shutdown!")
携带 context 的日志
import (
log "auth/collector/logger"
)
log.ErrorCtx(ctx, "create source error", zap.String("err", err.Error()))
context 可以传递上下文信息,根据 otel 的规范,日志中需要添加 trace_id, span_id, 当你的 context 中拥有 otel 规范的 trace_id 时, 你的日志将自动关联上这个 trace_id 和 span_id,无需手动在日志中添加。
Traces
2.1 Trace 配置
trace 目前只支持 jaeger,后续可以支持 otel 或 zipkin,配置也很简单,只需配置一个 jaeger 地址即可
trace:
addr: "http://localhost:14268/api/traces"
2.2使用示例
目前 http 请求已经将 trace, metrics 和 log 在中间件中实现,如需监控每个具体链路中的某个方法,需要自己在自己的方法内手动添加 具体代码如下:
// Find
func (a *resource) Find(ctx context.Context, in *model.ResourceInfoRequest) (*model.ResourceInfo, error) {
var (
err error
data *entity.Resource
out = &model.ResourceInfo{}
)
// trace example
ctx, span := otel.GetTracerProvider().Tracer("Phanes").Start(ctx, "Bll.Resource.Find")
defer func() {
if err != nil {
span.End()
}
}()
if data, err = a.iResource.Find(ctx, in); err != nil {
return nil, err
}
out = mapping.ResourceEntityToDto(data)
return out, nil
}
Metrics
3.1 Metric配置
metric 数据搜集提供两种方式,主动上报和被动采集,但常规用法使用被动采集,也就是 prometheus 主动到你的服务采集,那么我们就需要提供一个接口供他采集数据 所以我们启动一个 http 服务来供 prometheus 采集数据。这里我们只需要配置一个端口
metric:
# metrics will listen a http port
# example: localhost:2223/metrics
listen: ":2223"
3.2使用示例
使用示例请查看项目下 collector/metrics/http.go
3.3.1 HTTP 请求常用指标
HTTP服务器监控的常见指标(metrics)包括:
- 请求计数(Request Count):记录HTTP服务器收到的请求数量。
- 响应时间(Response Time):跟踪HTTP服务器处理请求所花费的时间。
- 错误率(Error Rate):记录HTTP服务器返回错误状态码的请求数量占总请求数的比例。
- 并发连接数(Concurrency):监测同时连接到HTTP服务器的客户端数量。
- 请求吞吐量(Request Throughput):记录HTTP服务器每秒处理的请求数量。
- 带宽利用率(Bandwidth Utilization):跟踪HTTP服务器传输数据的带宽使用情况。
- CPU和内存利用率(CPU and Memory Utilization):监控HTTP服务器的CPU和内存使用情况。
- 磁盘空间利用率(Disk Space Utilization):记录HTTP服务器存储空间的使用情况。
- 响应状态码分布(Response Status Code Distribution):统计HTTP服务器返回的不同状态码的数量,如200、404、500等。
- 流量(traffic):记录HTTP服务的网络流量,反映服务的带宽利用情况和网络质量。可以分别监控每个URI的流量,以了解每个URI的网络需求情况。
- 日志记录(Logging):记录HTTP服务器的访问日志,包括请求来源、路径、响应状态等信息。
以上指标只实现部分,如果有需要,可以自己实现