OpenTelemetry
创建时间:2024-06-01 最近修改时间:2024-08-23
通过解析 OpenTelemetry 协议,将 OpenTelemetry 协议的数据结构的字段映射到 l7_flow_log 对应字段中,映射关系如下表:
Tag 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | OpenTelemetry 数据结构 | 描述 |
---|---|---|---|
start_time | 开始时间 | span.start_time_unix_nano | -- |
end_time | 结束时间 | span.end_time_unix_nano | -- |
protocol | 网络协议 | span.attribute.net.transport | 映射到对应的枚举值 |
attributes | Misc.butes | resource./span.attributes | -- |
ip | IP 地址 | span.attribute.app.host.ip/attribute.net.peer.ip | 详细说明见后面段落 |
l7_protocol | 应用协议 | span.attribute.http.scheme/db.system/rpc.system/messaging.system/messaging.protocol | 映射到对应的枚举值, 存在任意 http 开头的 attributes 就认为是 HTTP 协议 |
l7_protocol_str | 应用协议 | span.attribute.http.scheme/db.system/rpc.system/messaging.system/messaging.protocol | span.attribute.http.scheme 如果存在则读取,不存在但 l7_protocol 为 HTTP 则默认填写为 HTTP |
version | 协议版本 | span.attribute.http.flavor | -- |
type | 日志类型 | 会话 | -- |
request_type | 请求类型 | span.attribute.http.method/db.operation/rpc.method | -- |
request_domain | 请求域名 | span.attribute.http.host/db.connection_string | -- |
request_resource | 请求资源 | attribute.http.target/db.statement/messaging.url/rpc.service | span.attribute.http.target 如果存在则读取,不存在则从 http.url 截断取, 仅提取域名之后的调用信息 |
request_id | 请求 ID | ||
response_status | 响应状态 | 响应码=span.attribute.http.status_code 参考 HTTP 协议定义; 响应码=span.status.code,未知: STATUS_CODE_UNSET; 正常: STATUS_CODE_OK; 服务端异常: STATUS_CODE_ERROR | -- |
response_code | 响应码 | span.attribute.http.status_code/span.status.code | 优先使用 span.attribute.http.status_code |
response_exception | 响应异常 | 响应码=span.attribute.http.status_code 参考 HTTP 协议定义; 响应码=span.status.code,则对应 span.status.message | -- |
service_name | 服务名称 | resource./span.attribute.service.name | -- |
service_instance_id | 服务实例 | resource./span.attribute.service.instance.id | -- |
endpoint | 端点 | span.name | -- |
trace_id | TraceID | span.trace_id/attribute.sw8.trace_id | 优先使用 attribute.sw8.trace_id |
span_id | SpanID | span.span_id/attribute.sw8.segment_id-attribute.sw8.span_id | 优先使用 attribute.sw8.segment_id-attribute.sw8.span_id |
parent_span_id | ParentSpanID | span.parent_span_id/attribute.sw8.segment_id-attribute.sw8.parent_span_id | 优先使用 attribute.sw8.segment_id-attribute.sw8.parent_span_id |
span_kind | Span 类型 | span.span_kind | -- |
events | 事件 | span.events | 保存为 JSON 格式的字符串 |
observation_point | 观测点 | span.spankind.SPAN_KIND_CLIENT/SPAN_KIND_PRODUCER:客户端应用(c-app);span.spankind.SPAN_KIND_SERVER/SPAN_KIND_CONSUMER:服务端应用(s-app);span.spankind.SPAN_KIND_UNSPECIFIED/SPAN_KIND_INTERNAL:应用(app) | -- |
- observation_point = c-app
- span.attribute.app.host.ip 对应 ip_0; 其余都对应 ip_1
- 通过一个 k8s attributes processor 插件 (opens new window)获取当前应用 (otel-agent) 对应上一级(即 Span 的来源)的 IP 地址,例如:Span 为 POD 产生,则获取 POD 的 IP;Span 为部署在虚拟机上的进程产生,则获取虚拟机的 IP
- span.attribute.net.peer.ip 对应 ip_1; 其余都对应 ip_0
- span.attribute.app.host.ip 对应 ip_0; 其余都对应 ip_1
Metrics 字段映射表格,以下表格只包含存在映射关系的字段
名称 | 中文 | OpenTelemetry 数据结构 | 描述 |
---|---|---|---|
request | 请求 | Span 个数 | -- |
response | 响应 | Span 个数 | -- |
session_length | 会话长度 | 请求长度 + 响应长度 | |
request_length | 请求长度 | span.attribute.http.request_content_length | -- |
request_length | 响应长度 | span.attribute.http.response_content_length | -- |
sql_affected_rows | SQL 影响行数 | span.attribute.db.cassandra.page_size | -- |
log_count | 日志总量 | Span 个数 | Request Log 行数 |
error | 异常 | -- | 客户端异常 + 服务端异常 |
client_error | 客户端异常 | span.attribute.http.status_code/span.status.code | 参考 Tag 字段response_code 的说明 |
server_error | 服务端异常 | span.attribute.http.status_code/span.status.code | 参考 Tag 字段response_code 的说明 |
error_ratio | 异常比例 | -- | 异常 / 响应 |
client_error_ratio | 客户端异常比例 | -- | 客户端异常 / 响应 |
server_error_ratio | 服务端异常比例 | -- | 服务端异常 / 响应 |
message.uncompressed_size | -- | span.attribute.message.uncompressed_size | -- |
messaging.message_payload_size_bytes | -- | span.attribute.messaging.message_payload_size_bytes | -- |
messaging.message_payload_compressed_size_bytes | -- | span.attribute.messaging.message_payload_compressed_size_bytes | -- |