You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-07-15 01:04:25 +02:00
add simple demo for connecting to collector
This commit is contained in:
54
example/otel-collector/main.go
Normal file
54
example/otel-collector/main.go
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.opentelemetry.io/otel/api/global"
|
||||||
|
"go.opentelemetry.io/otel/exporters/otlp"
|
||||||
|
sdktrace "go.opentelemetry.io/otel/sdk/trace"
|
||||||
|
"google.golang.org/grpc"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
exp, err := otlp.NewExporter(otlp.WithInsecure(),
|
||||||
|
otlp.WithGRPCDialOption(grpc.WithBlock()))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Failed to create the collector exporter: %v", err)
|
||||||
|
}
|
||||||
|
if err = exp.GetLastConnectError(); err != nil {
|
||||||
|
log.Fatalf("Failed to create the collector exporter: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
defer func() {
|
||||||
|
|
||||||
|
_ = exp.Stop()
|
||||||
|
}()
|
||||||
|
|
||||||
|
tp, _ := sdktrace.NewProvider(
|
||||||
|
sdktrace.WithConfig(sdktrace.Config{DefaultSampler: sdktrace.AlwaysSample()}),
|
||||||
|
sdktrace.WithBatcher(exp, // add following two options to ensure flush
|
||||||
|
sdktrace.WithScheduleDelayMillis(5),
|
||||||
|
sdktrace.WithMaxExportBatchSize(1),
|
||||||
|
))
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("error creating trace provider: %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
global.SetTraceProvider(tp)
|
||||||
|
tracer := global.Tracer("test-tracer")
|
||||||
|
|
||||||
|
// Then use the OpenTelemetry tracing library, like we normally would.
|
||||||
|
ctx, span := tracer.Start(context.Background(), "CollectorExporter-Example")
|
||||||
|
defer span.End()
|
||||||
|
|
||||||
|
for i := 0; i < 10; i++ {
|
||||||
|
_, iSpan := tracer.Start(ctx, fmt.Sprintf("Sample-%d", i))
|
||||||
|
<-time.After(6 * time.Second)
|
||||||
|
iSpan.End()
|
||||||
|
}
|
||||||
|
|
||||||
|
// exp.ExportSpan(ctx, span)
|
||||||
|
}
|
125
example/otel-collector/otel-coll.yaml
Normal file
125
example/otel-collector/otel-coll.yaml
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: otel-collector-conf
|
||||||
|
labels:
|
||||||
|
app: opentelemetry
|
||||||
|
component: otel-collector-conf
|
||||||
|
data:
|
||||||
|
otel-collector-config: |
|
||||||
|
receivers:
|
||||||
|
otlp: {}
|
||||||
|
processors:
|
||||||
|
queued_retry:
|
||||||
|
num_workers: 16
|
||||||
|
queue_size: 10000
|
||||||
|
retry_on_failure: true
|
||||||
|
batch:
|
||||||
|
send_batch_size: 1024
|
||||||
|
timeout: 5s
|
||||||
|
extensions:
|
||||||
|
health_check: {}
|
||||||
|
exporters:
|
||||||
|
jaeger:
|
||||||
|
endpoint: "simplest-collector.default.svc.cluster.local:14250" # Replace with a real endpoint.
|
||||||
|
service:
|
||||||
|
extensions: [health_check]
|
||||||
|
pipelines:
|
||||||
|
traces/2:
|
||||||
|
receivers: [otlp]
|
||||||
|
processors: []
|
||||||
|
exporters: [jaeger]
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: otel-collector
|
||||||
|
labels:
|
||||||
|
app: opencensus
|
||||||
|
component: otel-collector
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: otlp # Default endpoint for Opencensus receiver.
|
||||||
|
port: 55680
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 55680
|
||||||
|
- name: metrics # Default endpoint for querying metrics.
|
||||||
|
port: 8888
|
||||||
|
selector:
|
||||||
|
component: otel-collector
|
||||||
|
type:
|
||||||
|
NodePort
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: otel-collector
|
||||||
|
labels:
|
||||||
|
app: opentelemetry
|
||||||
|
component: otel-collector
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: opentelemetry
|
||||||
|
component: otel-collector
|
||||||
|
minReadySeconds: 5
|
||||||
|
progressDeadlineSeconds: 120
|
||||||
|
replicas: 1 #TODO - adjust this to your own requirements
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
prometheus.io/path: "/metrics"
|
||||||
|
prometheus.io/port: "8888"
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app: opentelemetry
|
||||||
|
component: otel-collector
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- command:
|
||||||
|
- "/otelcol"
|
||||||
|
- "--config=/conf/otel-collector-config.yaml"
|
||||||
|
# Memory Ballast size should be max 1/3 to 1/2 of memory.
|
||||||
|
- "--mem-ballast-size-mib=683"
|
||||||
|
env:
|
||||||
|
- name: GOGC
|
||||||
|
value: "80"
|
||||||
|
image: otel/opentelemetry-collector-dev:latest
|
||||||
|
name: otel-collector
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 1
|
||||||
|
memory: 2Gi
|
||||||
|
requests:
|
||||||
|
cpu: 200m
|
||||||
|
memory: 400Mi
|
||||||
|
ports:
|
||||||
|
- containerPort: 55680 # Default endpoint for otlp receiver.
|
||||||
|
- containerPort: 8888 # Default endpoint for querying metrics.
|
||||||
|
volumeMounts:
|
||||||
|
- name: otel-collector-config-vol
|
||||||
|
mountPath: /conf
|
||||||
|
# - name: otel-collector-secrets
|
||||||
|
# mountPath: /secrets
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 13133 # Health Check extension default port.
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 13133 # Health Check extension default port.
|
||||||
|
volumes:
|
||||||
|
- configMap:
|
||||||
|
name: otel-collector-conf
|
||||||
|
items:
|
||||||
|
- key: otel-collector-config
|
||||||
|
path: otel-collector-config.yaml
|
||||||
|
name: otel-collector-config-vol
|
||||||
|
# - secret:
|
||||||
|
# name: otel-collector-secrets
|
||||||
|
# items:
|
||||||
|
# - key: cert.pem
|
||||||
|
# path: cert.pem
|
||||||
|
# - key: key.pem
|
||||||
|
# path: key.pem
|
Reference in New Issue
Block a user