当你拥有一个家庭实验室时,你需要有一种方法来获得对其运行情况的全面了解。这时,可观察性便成为了至关重要的一环。OpenTelemetry 是一种为大规模云原生应用程序提供方便和可扩展的观测数据收集和日志记录平台。在本文中,将介绍如何使用 OpenTelemetry 来获得您的家庭实验室的可观测性。
首先,您需要安装 OpenTelemetry。使用 Python 软件包管理器 pip 可以很容易地安装和配置。安装下列软件包:
pip install opentelemetry-sdk opentelemetry-instrumentation-psycopg2 opentelemetry-instrumentation-requests opentelemetry-exporter-prometheus opentelemetry-exporter-jaeger
接下来,您需要编写一个配置文件来指定 OpenTelemetry 将收集哪些指标,并将其发送到哪里。以下是一个样例配置文件:
otel:
service:
name: home-lab
meter:
# Create a MetricExporter pipeline for exporting metrics to Prometheus
exporters:
prometheus:
endpoint: “http://localhost:9090/metrics”
# Create a MeterProvider with the configurations
metric:
# Metrics can be categorized into different groups using a LabelSet
label_keys:
– “component”
# Add Prometheus as a exporter for the MeterProvider by specifying it
exporters:
prometheus:
# A MetricExporter can be found in the `exporters` map to be reference
builders:
prometheus:
traces:
# Create a TraceExporter pipeline for exporting traces to Jaeger
exporters:
jaeger:
collector_endpoint: “http://jaeger:14268/api/traces?format=jaeger.thrift”
# Add Prometheus as a exporter for the MeterProvider by specifying it
processors:
# Use a SimpleSpanProcessor to just send our Spans to the xporter and the exporter is the Jaeger Exporter we just created
simple_exporter:
exporter: jaeger
注意,此处包含了两个exporter,一个用于 Prometheus,一个用于 Jaeger。
然后,您需要在您的应用程序代码中添加 OpenTelemetry 跟踪器。例如,下面的代码段是一个 Flask Web 应用程序,可使用 OpenTelemetry 进行跟踪:
from flask import Flask
from opentelemetry import trace
from opentelemetry.instrumentation.flask import FlaskInstrumentor
from opentelemetry.instrumentation.requests import RequestsInstrumentor
app = Flask(__name__)
tracer = trace.get_tracer(__name__)
# Wrap Flask and Requests with tracing
FlaskInstrumentor().instrument_app(app)
RequestsInstrumentor().instrument()
# Test route to create some sample baggage and spans
@app.route(‘/test’)
def index():
with tracer.start_as_current_span(“simple-span”):
span = trace.get_current_span()
span.set_attribute(“component”, “example-service”)
span.add_event(“test-event”)
return “OpenTelemetry traces and spans :)”
最后,您需要启动 OpenTelemetry,开始收集指标和跟踪数据。在您的命令行终端中输入以下命令:
export OTEL_RESOURCE_ATTRIBUTES=”service.name=home-lab”
export OTEL_EXPORTER_OTLP_ENDPOINT=”http://localhost:55680″
opentelemetry-instrument python app.py
这样, OpenTelemetry 就会开始对您的家庭实验室进行监视和跟踪。您可以使用 Prometheus 和 Grafana 对收集到的指标进行可视化。
这种方法不仅适用于家庭实验室,同样也适用于任何需要实时监测和跟踪的分布式系统。OpenTelemetry 可以自动收集并聚合指标,并将它们发送到您选择的导出器。您可以使用 OpenTelemetry 进行更多探索。
了解更多有趣的事情:https://blog.ds3783.com/