1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2024-12-04 09:43:23 +02:00

add simple demo for connecting to collector

This commit is contained in:
Stefan Prisca 2020-05-08 14:25:20 +02:00
parent 5414d1a142
commit c6c841fc7c
2 changed files with 179 additions and 0 deletions

View 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)
}

View 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