马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
OpenTelemetry是由OpenTracing和OpenCensus两个开源项目归并而成,由云原生存算基金会(CNCF)托管。该项目旨在提供一套标准化的、跨语言的观测性工具,资助开辟职员和运维职员更好地明白和管理分布式体系的性能和举动。通过同一的Metrics(指标)、Logs(日记)和Traces(追踪)数据模子,OpenTelemetry使得数据网络、处置惩罚和分析变得更加高效和便捷。
OpenTelemetry的焦点构成部分
1.日记(Logs)
日记是体系运行时势件的记载,包罗了丰富的上下文信息,对于明白和调试应用步调的举动至关告急。OpenTelemetry的Log API界说了一种标准方式来记载和导出这些事故,确保了日记数据的划一性和可读性。
OpenTelemetry日记的标准格式通常包罗以下几个部分:资源、日记记载、时间戳和日记内容。以下是一个示例,展示了怎样利用OpenTelemetry网络和导出日记数据。
示例数据样例- {
- "resource": {
- "attributes": {
- "service.name": "example-service",
- "service.instance.id": "instance-1",
- "host.name": "host1"
- }
- },
- "instrumentationLibraryLogs": [
- {
- "instrumentationLibrary": {
- "name": "example-instrumentation",
- "version": "1.0.0"
- },
- "logs": [
- {
- "timeUnixNano": "1633046460000000000",
- "severityText": "INFO",
- "name": "example-log",
- "body": "This is an example log message",
- "attributes": {
- "http.method": "GET",
- "http.status_code": "200"
- }
- },
- {
- "timeUnixNano": "1633046465000000000",
- "severityText": "ERROR",
- "name": "example-error-log",
- "body": "This is an example error log message",
- "attributes": {
- "http.method": "POST",
- "http.status_code": "500"
- }
- }
- ]
- }
- ]
- }
复制代码 字段表明
resource: 形貌了天生这些日记的资源信息,如服务名称、实例ID和主机名。
instrumentationLibraryLogs: 包罗了仪表库的信息和干系的日记数据。
instrumentationLibrary: 形貌了仪表库的名称和版本。
logs: 包罗了详细的日记数据。
timeUnixNano: 日记记载的时间戳(纳秒)。
severityText: 日记的严峻性级别(如INFO、ERROR等)。
name: 日记的名称。
body: 日记的内容。
attributes: 日记的属性,如HTTP方法和状态码。
2.指标(Metrics)
指标是对体系性能、资源利用情况等量化数据的度量。OpenTelemetry Metrics API使开辟者可以或许计量特定事故的发生频率或资源的斲丧量,并以标准格式袒露给监控 体系,支持及时性能监控 和趋势分析。
OpenTelemetry指标的标准格式通常包罗以下几个部分:资源、仪表、时间序列和数据点。以下是一个示例,展示了怎样利用OpenTelemetry网络和导出指标数据。
示例数据样例- {
- "resource": {
- "attributes": {
- "service.name": "example-service",
- "service.instance.id": "instance-1",
- "host.name": "host1"
- }
- },
- "instrumentationLibraryMetrics": [
- {
- "instrumentationLibrary": {
- "name": "example-instrumentation",
- "version": "1.0.0"
- },
- "metrics": [
- {
- "name": "http_requests_total",
- "description": "Total number of HTTP requests",
- "unit": "1",
- "data": {
- "sum": {
- "dataPoints": [
- {
- "attributes": {
- "http.method": "GET",
- "http.status_code": "200"
- },
- "startTimeUnixNano": "1633046400000000000",
- "timeUnixNano": "1633046460000000000",
- "value": 100
- },
- {
- "attributes": {
- "http.method": "POST",
- "http.status_code": "500"
- },
- "startTimeUnixNano": "1633046400000000000",
- "timeUnixNano": "1633046460000000000",
- "value": 5
- }
- ]
- }
- }
- }
- ]
- }
- ]
- }
复制代码 字段表明
resource: 形貌了天生这些指标的资源信息,如服务名称、实例ID和主机名。
instrumentationLibraryMetrics: 包罗了仪表库的信息和干系的指标数据。
instrumentationLibrary: 形貌了仪表库的名称和版本。
metrics: 包罗了详细的指标数据。
name: 指标的名称。
description: 指标的形貌。
unit: 指标的单位。
data: 指标的数据范例,这里利用的是sum范例。
dataPoints: 包罗了详细的数据点。
attributes: 数据点的属性,如HTTP方法和状态码。
startTimeUnixNano: 数据点的开始时间(纳秒)。
timeUnixNano: 数据点的竣事时间(纳秒)。
value: 数据点的值。
3.调用链(Traces)
调用链追踪是明白分布式体系中哀求流经各服务的路径和耗时的关键。OpenTelemetry Traces API提供了一套机制,用于捕获和记载服务间的调用关系,形成了服务调用的完备视图,极大地提升了故障排查的服从。
OpenTelemetry Trace的标准格式通常包罗以下几个部分:资源、Span、时间戳和属性。以下是一个示例,展示了怎样利用OpenTelemetry网络和导出Trace数据。
示例数据样例- {
- "resource": {
- "attributes": {
- "service.name": "example-service",
- "service.instance.id": "instance-1",
- "host.name": "host1"
- }
- },
- "instrumentationLibrarySpans": [
- {
- "instrumentationLibrary": {
- "name": "example-instrumentation",
- "version": "1.0.0"
- },
- "spans": [
- {
- "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
- "spanId": "00f067aa0ba902b7",
- "parentSpanId": "b9c7c989f97918e1",
- "name": "example-span",
- "kind": "SPAN_KIND_INTERNAL",
- "startTimeUnixNano": "1633046400000000000",
- "endTimeUnixNano": "1633046460000000000",
- "attributes": {
- "http.method": "GET",
- "http.status_code": "200"
- },
- "status": {
- "code": "STATUS_CODE_OK"
- }
- },
- {
- "traceId": "4bf92f3577b34da6a3ce929d0e0e4736",
- "spanId": "f2cda95b0b1c4a3a",
- "parentSpanId": "00f067aa0ba902b7",
- "name": "example-child-span",
- "kind": "SPAN_KIND_CLIENT",
- "startTimeUnixNano": "1633046410000000000",
- "endTimeUnixNano": "1633046450000000000",
- "attributes": {
- "db.system": "mysql",
- "db.statement": "SELECT * FROM users"
- },
- "status": {
- "code": "STATUS_CODE_OK"
- }
- }
- ]
- }
- ]
- }
复制代码 字段表明
resource: 形貌了天生这些Trace的资源信息,如服务名称、实例ID和主机名。
instrumentationLibrarySpans: 包罗了仪表库的信息和干系的Span数据。
instrumentationLibrary: 形貌了仪表库的名称和版本。
spans: 包罗了详细的Span数据。
traceId: Trace的唯一标识符。
spanId: Span的唯一标识符。
parentSpanId: 父Span的标识符(假如有)。
name: Span的名称。
kind: Span的范例(如INTERNAL、CLIENT等)。
startTimeUnixNano: Span的开始时间(纳秒)。
endTimeUnixNano: Span的竣事时间(纳秒)。
attributes: Span的属性,如HTTP方法和状态码。
status: Span的状态码。
OpenTelemetry的上风
1.标准化:
OpenTelemetry通过提供同一的数据模子和接口,冲破了差异厂商宁静台之间的壁垒,使得遥测数据可以在差异体系间无缝活动。这大大低落了数据迁徙和集成的难度,进步了体系的可观测 性和可维护性。
2.跨语言支持:
OpenTelemetry支持多种编程语言,如Java、Python、Go等。这使得开辟职员可以在差异语言编写的应用步调中利用OpenTelemetry举行分布式追踪和性能监控 ,实现跨语言追踪和同一观测。
3.易于集成和扩展:
OpenTelemetry提供了丰富的SDK和Collector实现,使得它可以轻松集成到现有的应用步调和服务中。同时,OpenTelemetry还支持自界说数据网络器和处置惩罚器,满意特定需求的数据网络和处置惩罚。
4.强大的社区支持:
作为CNCF的孵化项目,OpenTelemetry得到了广泛的社区支持和一连的更新。这使得OpenTelemetry可以或许不绝迭代和优化,为开辟职员和运维职员提供更好的观测性体验。
5.与现有标准的兼容性:
兼容现有的监控和追踪标准,如 OpenTracing 和 OpenCensus,确保了向新标准的平滑过渡。
OpenTelemetry的应用场景
通过集成OpenTelemetry SDK,应用可以主动网络详细的性能数据和调用链路信息,这些数据随后被导出至Prometheus、Jaeger或Elasticsearch等后端存储与分析体系。
在微服务架构中,OpenTelemetry可以用于追踪一个哀求颠末的全部服务,资助开辟者快速定位标题地点。
在云原生应用中,OpenTelemetry可以监控容器化应用的性能和资源利用情况,及时发现潜伏标题。
在物联网 装备中,OpenTelemetry可以网络远程装备的运行状态信息,为装备的维护和优化提供数据支持。
结论
OpenTelemetry作为新一代的开源观测性标准,为开辟职员和运维职员提供了一种同一、高效、跨语言的观测性办理方案。通过标准化的数据模子和接口、跨语言支持、易于集成和扩展以及强大的社区支持等上风,OpenTelemetry正在渐渐成为分布式追踪、日记网络和性能指标监控的主流方案。随着OpenTelemetry的不绝发展和完满,信赖它将在将来的软件开辟和运维范畴发挥更加告急的作用。
|