Истио к Лайтстепу и Джаегару
Мы проверяем Managed Anthos Service Mesh (istio) в GCP, это не прямая установка для Lightstep, поэтому мы пытаемся передать трассировку от envoy в процесс сборщика otel и экспортировать его в lightstep, конфигурация развертывания otel приведена ниже.
---
apiVersion: v1
kind: ConfigMap
metadata:
name: otel-collector-conf
labels:
app: opentelemetry
component: otel-collector-conf
data:
otel-collector-config: |
receivers:
zipkin:
endpoint:
processors:
batch:
memory_limiter:
# 80% of maximum memory up to 2G
limit_mib: 400
# 25% of limit up to 2G
spike_limit_mib: 100
check_interval: 5s
extensions:
zpages: {}
memory_ballast:
# Memory Ballast size should be max 1/3 to 1/2 of memory.
size_mib: 165
exporters:
logging:
loglevel: debug
otlp:
endpoint: 10.x.x.19:8184
insecure: true
headers:
"lightstep-access-token": "xxx"
service:
extensions: [zpages, memory_ballast]
pipelines:
traces:
receivers: [zipkin]
processors: [memory_limiter, batch]
exporters: [otlp]
---
apiVersion: v1
kind: Service
metadata:
name: otel-collector
labels:
app: opentelemetry
component: otel-collector
spec:
ports:
- name: otlp-grpc # Default endpoint for OpenTelemetry gRPC receiver.
port: 4317
protocol: TCP
targetPort: 4317
- name: otlp-http # Default endpoint for OpenTelemetry HTTP receiver.
port: 4318
protocol: TCP
targetPort: 4318
- name: metrics # Default endpoint for querying metrics.
port: 8888
- name: zipkin # Default endpoint for OpenTelemetry HTTP receiver.
port: 9411
protocol: TCP
targetPort: 9411
selector:
component: otel-collector
---
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:
labels:
app: opentelemetry
component: otel-collector
spec:
containers:
- command:
- "/otelcol"
- "--config=/conf/otel-collector-config.yaml"
image: otel/opentelemetry-collector:latest
name: otel-collector
resources:
limits:
cpu: 1
memory: 2Gi
requests:
cpu: 200m
memory: 400Mi
ports:
- containerPort: 55679 # Default endpoint for ZPages.
- containerPort: 4317 # Default endpoint for OpenTelemetry receiver.
- containerPort: 14250 # Default endpoint for Jaeger gRPC receiver.
- containerPort: 14268 # Default endpoint for Jaeger HTTP receiver.
- containerPort: 9411 # Default endpoint for Zipkin receiver.
- containerPort: 8888 # Default endpoint for querying metrics.
volumeMounts:
- name: otel-collector-config-vol
mountPath: /conf
volumes:
- configMap:
name: otel-collector-conf
items:
- key: otel-collector-config
path: otel-collector-config.yaml
name: otel-collector-config-vol
Выставив сервис сборщика отелей на 9411 и настроив Anthos Mesh для отправки трассировок в службу и экспорта их в Ligthstep, модуль otel все работает, но я не вижу никаких трассировок на лайтстепе. На самом деле я не уверен, поступает ли ввод от посланника в otel, так как журналы для otel пусты.
apiVersion: v1
data:
mesh: |-
extensionProviders:
- name: jaeger
zipkin:
service: zipkin.istio-system.svc.cluster.local
port: 9411
- name: otel
zipkin:
service: otel-collector.otel.svc.cluster.local
port: 9411
Также развернул jaegar в одном развертывании и отправил ему трассировки, которые отлично работают, и я могу просматривать трассировки в пользовательском интерфейсе jaegar. Не уверен насчет отеля. Любезно помочь.