otel-agent的配置,以及通过curl命令手动发送traces,logs数据
1.配置
apiVersion: v1
data:
otel-agent-config: |
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
http:
endpoint: "0.0.0.0:4318"
opencensus:
endpoint: 0.0.0.0:55678
zipkin:
endpoint: 0.0.0.0:9411
exporters:
# Kafka输出器 - 核心:将OTel指标推送到Kafka
kafka:
# 替换为你的Kafka Broker地址(多个用逗号分隔)
brokers: ["kafka-svc.middleware:9092"]
# 替换为你的Kafka Topic名称
topic: "otel_topic"
# 数据编码格式:OTel标准二进制格式(性能最优,推荐)
protocol_version: 2.1.0
encoding: otlp_json
# 生产者配置(优化推送稳定性)
producer:
max_message_bytes: 10485760 # 单条消息最大10MB
compression: gzip # 开启snappy压缩,节省带宽
prometheusremotewrite:
# 关键配置,指定了数据要发送到的目标地址,prometheus需要开启远程写功能 --web.enable-remote-write-receiver
endpoint: http://10.10.10.10:9000/api/v1/write
# 可选配置:将资源属性转换为指标标签
resource_to_telemetry_conversion:
enabled: true
timeout: 10s # 请求超时时间
headers: # 自定义 HTTP 请求头
Prometheus-Remote-Write-Version: "0.1.0"
auth:
authenticator: basicauth/prometheus #basicauth认证
otlp: # Jaeger直接支持OTLP。OTLP/gRPC的默认端口是4317
endpoint: http://jaeger-collector.xdd-otel:4317
tls:
insecure: true
otlphttp: #发送给ebpf
traces_endpoint: "http://ebpf-agent.xdd-otel/api/v1/otel/trace"
tls:
insecure: true
retry_on_failure:
enabled: true
logging: #otel-agent日志中打印详细信息
verbosity: detailed
sampling_initial: 5
sampling_thereafter: 200
extensions:
# Basic Auth 配置
basicauth/prometheus:
client_auth:
username: "prometheus"
password: "prometheus"
processors:
batch:
send_batch_size: 10000 # 每批发送的 span 数
timeout: 10s
k8sattributes:
resource:
attributes:
- key: app.host.ip
from_attribute: k8s.pod.ip
action: insert
service:
extensions: [basicauth/prometheus]
pipelines:
metrics:
receivers: [otlp]
exporters: [prometheusremotewrite]
traces:
receivers: [otlp, zipkin, opencensus]
processors: [k8sattributes, resource, batch]
exporters: [kafka, otlphttp, otlp]
logs:
receivers: [otlp]
exporters: [logging]
kind: ConfigMap
metadata:
labels:
app: opentelemetry
component: otel-agent-conf
name: otel-agent-conf
namespace: xdd-otel
2.手动发送traces数据
#!/bin/bash # 生成当前时间戳(纳秒) current_time=$(date +%s000000000) start_time=$((current_time - 150000000)) # 150ms前 end_time=$current_time # 创建临时JSON文件 cat > /tmp/trace_payload.json << EOF { "resourceSpans": [ { "resource": { "attributes": [ { "key": "service.name", "value": { "stringValue": "xdd-service" } } ] }, "scopeSpans": [ { "scope": { "name": "manual-instrumentation" }, "spans": [ { "traceId": "$(openssl rand -hex 16)", "spanId": "$(openssl rand -hex 8)", "name": "GET /api/v1/users/{id}", "kind": 2, "startTimeUnixNano": "$start_time", "endTimeUnixNano": "$end_time", "attributes": [ { "key": "http.method", "value": { "stringValue": "GET" } }, { "key": "http.route", "value": { "stringValue": "/api/v1/users/:id" } }, { "key": "http.status_code", "value": { "intValue": 200 } } ], "status": { "code": 0 } } ] } ] } ] } EOF # 发送到OpenTelemetry Collector curl -X POST http://otel-agent-svc.xdd-otel:4318/v1/traces \ -H "Content-Type: application/json" \ -d @/tmp/trace_payload.json echo "Trace sent with duration: 150ms"
3.手动发送logs数据
# 创建临时日志文件 cat > /tmp/logs.json << EOF { "resourceLogs": [{ "resource": { "attributes": [{ "key": "service.name", "value": { "stringValue": "batch-service" } }] }, "scopeLogs": [{ "logRecords": [ { "timeUnixNano": "$(date +%s%N)", "severityText": "INFO", "body": { "stringValue": "First log message" } }, { "timeUnixNano": "$(date +%s%N)", "severityText": "ERROR", "body": { "stringValue": "Second log message with error" } } ] }] }] } EOF # 发送批量日志 curl -X POST http://otel-agent-svc.xdd-otel:4318/v1/logs \ -H "Content-Type: application/json" \ --data-binary @/tmp/logs.json

浙公网安备 33010602011771号