# Copyright The OpenTelemetry Authors # SPDX-License-Identifier: Apache-2.0 # This file is generated by 'make generate-kubernetes-manifests' --- # Source: opentelemetry-demo/charts/grafana/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" name: opentelemetry-demo-grafana namespace: otel-demo --- # Source: opentelemetry-demo/charts/jaeger/templates/allinone-sa.yaml apiVersion: v1 kind: ServiceAccount metadata: name: opentelemetry-demo-jaeger labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "1.42.0" app.kubernetes.io/component: all-in-one --- # Source: opentelemetry-demo/charts/opentelemetry-collector/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: opentelemetry-demo-otelcol labels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "0.76.1" --- # Source: opentelemetry-demo/charts/prometheus/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server namespace: otel-demo annotations: {} --- # Source: opentelemetry-demo/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: opentelemetry-demo labels: opentelemetry.io/name: opentelemetry-demo app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/name: opentelemetry-demo app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo --- # Source: opentelemetry-demo/charts/grafana/templates/secret.yaml apiVersion: v1 kind: Secret metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" type: Opaque data: admin-user: "YWRtaW4=" admin-password: "YWRtaW4=" ldap-toml: "" --- # Source: opentelemetry-demo/charts/grafana/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" data: grafana.ini: | [analytics] check_for_updates = true [auth] disable_login_form = true [auth.anonymous] enabled = true org_name = Main Org. org_role = Admin [grafana_net] url = https://grafana.net [log] mode = console [paths] data = /var/lib/grafana/ logs = /var/log/grafana plugins = /var/lib/grafana/plugins provisioning = /etc/grafana/provisioning [server] domain = '' root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana serve_from_sub_path = true datasources.yaml: | apiVersion: 1 datasources: - editable: true isDefault: true jsonData: exemplarTraceIdDestinations: - datasourceUid: webstore-traces name: trace_id - name: trace_id url: http://localhost:8080/jaeger/ui/trace/$${__value.raw} urlDisplayLabel: View in Jaeger UI name: Prometheus type: prometheus uid: webstore-metrics url: http://opentelemetry-demo-prometheus-server:9090 - editable: true isDefault: false name: Jaeger type: jaeger uid: webstore-traces url: http://opentelemetry-demo-jaeger-query:16686/jaeger/ui dashboardproviders.yaml: | apiVersion: 1 providers: - disableDeletion: false editable: true folder: "" name: default options: path: /var/lib/grafana/dashboards/default orgId: 1 type: file --- # Source: opentelemetry-demo/charts/opentelemetry-collector/templates/configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: opentelemetry-demo-otelcol labels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "0.76.1" data: relay: | connectors: spanmetrics: null exporters: logging: {} otlp: endpoint: 'opentelemetry-demo-jaeger-collector:4317' tls: insecure: true prometheus: enable_open_metrics: true endpoint: 0.0.0.0:9464 resource_to_telemetry_conversion: enabled: true extensions: health_check: {} memory_ballast: size_in_percentage: 40 processors: batch: {} filter/ottl: error_mode: ignore metrics: metric: - name == "queueSize" memory_limiter: check_interval: 5s limit_percentage: 80 spike_limit_percentage: 25 transform: metric_statements: - context: metric statements: - set(description, "Measures the duration of inbound HTTP requests") where name == "http.server.duration" receivers: jaeger: protocols: grpc: endpoint: ${env:MY_POD_IP}:14250 thrift_compact: endpoint: ${env:MY_POD_IP}:6831 thrift_http: endpoint: ${env:MY_POD_IP}:14268 otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: cors: allowed_origins: - http://* - https://* endpoint: 0.0.0.0:4318 prometheus: config: scrape_configs: - job_name: opentelemetry-collector scrape_interval: 10s static_configs: - targets: - ${env:MY_POD_IP}:8888 zipkin: endpoint: ${env:MY_POD_IP}:9411 service: extensions: - health_check - memory_ballast pipelines: logs: exporters: - logging processors: - memory_limiter - batch receivers: - otlp metrics: exporters: - prometheus - logging processors: - memory_limiter - filter/ottl - transform - batch receivers: - otlp - spanmetrics traces: exporters: - otlp - logging - spanmetrics processors: - memory_limiter - batch receivers: - otlp - jaeger - zipkin telemetry: metrics: address: ${env:MY_POD_IP}:8888 --- # Source: opentelemetry-demo/charts/prometheus/templates/cm.yaml apiVersion: v1 kind: ConfigMap metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server namespace: otel-demo data: allow-snippet-annotations: "false" alerting_rules.yml: | {} alerts: | {} prometheus.yml: | global: evaluation_interval: 30s scrape_interval: 5s scrape_timeout: 3s rule_files: - /etc/config/recording_rules.yml - /etc/config/alerting_rules.yml - /etc/config/rules - /etc/config/alerts scrape_configs: - honor_labels: true job_name: opentelemetry-community-demo kubernetes_sd_configs: - namespaces: own_namespace: true role: pod relabel_configs: - action: keep regex: true source_labels: - __meta_kubernetes_pod_annotation_opentelemetry_community_demo recording_rules.yml: | {} rules: | {} --- # Source: opentelemetry-demo/templates/grafana-dashboards.yaml apiVersion: v1 kind: ConfigMap metadata: name: opentelemetry-demo-grafana-dashboards labels: opentelemetry.io/name: opentelemetry-demo app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/name: opentelemetry-demo app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo data: demo-dashboard.json: | { "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "links": [], "liveNow": false, "panels": [ { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 14, "panels": [], "title": "Metrics", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "percent" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 1 }, "id": 6, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(runtime_cpython_cpu_time{type=~\"system\"}[$__interval])*100", "legendFormat": "__auto", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(runtime_cpython_cpu_time{type=~\"user\"}[$__interval])*100", "hide": false, "legendFormat": "__auto", "range": true, "refId": "B" } ], "title": "Recommendation Service (CPU%)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "decmbytes" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 1 }, "id": 8, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(runtime_cpython_memory{type=~\"rss|vms\"}[$__interval])/1024/1024", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Recommendation Service (Memory)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "bars", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 }, "id": 4, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(app_recommendations_counter{recommendation_type=\"catalog\"}[$__interval])", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Recommendations Count", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 }, "id": 10, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(calls_total{status_code=\"STATUS_CODE_ERROR\"}[$__interval])", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Error Rate", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "dtdurationms" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 0, "y": 17 }, "id": 2, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": true, "expr": "histogram_quantile(0.50, sum(rate(latency_bucket{service_name=\"${service}\"}[$__rate_interval])) by (le))", "legendFormat": "__auto", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.95, sum(rate(latency_bucket{service_name=\"${service}\"}[$__rate_interval])) by (le))", "hide": false, "legendFormat": "__auto", "range": true, "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.99, sum(rate(latency_bucket{service_name=\"${service}\"}[$__rate_interval])) by (le))", "hide": false, "legendFormat": "__auto", "range": true, "refId": "C" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.999, sum(rate(latency_bucket{service_name=\"${service}\"}[$__rate_interval])) by (le))", "hide": false, "legendFormat": "__auto", "range": true, "refId": "D" } ], "title": "Service Latency (from SpanMetrics)", "type": "timeseries" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 0, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "linear", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "reqps" }, "overrides": [] }, "gridPos": { "h": 8, "w": 12, "x": 12, "y": 17 }, "id": 12, "options": { "legend": { "calcs": [], "displayMode": "list", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "rate(latency_count{service_name=\"${service}\"}[$__rate_interval])", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Endpoint Rate by Service", "type": "timeseries" } ], "schemaVersion": 37, "style": "dark", "tags": [], "templating": { "list": [ { "allValue": "", "current": { "selected": false, "text": "featureflagservice", "value": "featureflagservice" }, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "definition": "latency_bucket", "hide": 0, "includeAll": false, "multi": false, "name": "service", "options": [], "query": { "query": "latency_bucket", "refId": "StandardVariableQuery" }, "refresh": 1, "regex": "/.*service_name=\\\"([^\\\"]+)\\\".*/", "skipUrlSync": false, "sort": 1, "type": "query" } ] }, "time": { "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Demo Dashboard", "uid": "W2gX2zHVk", "version": 1, "weekStart": "" } opentelemetry-collector-data-flow.json: | { "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "description": "otelcol metrics dashboard", "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "id": 6, "links": [], "liveNow": false, "panels": [ { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 8, "panels": [], "title": "Process", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Otel Collector Instance", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 4, "w": 3, "x": 0, "y": 1 }, "id": 6, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "center", "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "count(count(otelcol_process_cpu_seconds{service_instance_id=~\".*\"}) by (service_instance_id))", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Instance", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "otelcol_process_cpu_seconds", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "s" }, "overrides": [] }, "gridPos": { "h": 4, "w": 3, "x": 3, "y": 1 }, "id": 24, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "avg(rate(otelcol_process_cpu_seconds{}[$__rate_interval])*100) by (instance)", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Cpu", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Memory Rss\navg(otelcol_process_memory_rss{}) by (instance)", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "bytes" }, "overrides": [] }, "gridPos": { "h": 4, "w": 3, "x": 6, "y": 1 }, "id": 38, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "avg(otelcol_process_memory_rss{}) by (instance)", "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Memory", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "", "gridPos": { "h": 4, "w": 15, "x": 9, "y": 1 }, "id": 32, "options": { "code": { "language": "plaintext", "showLineNumbers": false, "showMiniMap": false }, "content": "## Opentelemetry Collector Data Ingress/Egress\n\n`service_version:` ${service_version}\n\n`opentelemetry collector:` contrib\n\n", "mode": "markdown" }, "pluginVersion": "9.1.0", "type": "text" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 5 }, "id": 10, "panels": [], "title": "Trace Pipeline", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "(avg(sum by(job) (rate(otelcol_exporter_sent_spans{}[$__range]))) / avg(sum by(job) (rate(otelcol_receiver_accepted_spans{}[$__range])))) ", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "light-blue", "value": null }, { "color": "semi-dark-red", "value": 0 }, { "color": "super-light-orange", "value": 0.4 }, { "color": "dark-blue", "value": 0.9 }, { "color": "super-light-orange", "value": 1.2 }, { "color": "dark-red", "value": 2.1 } ] }, "unit": "percentunit" }, "overrides": [] }, "gridPos": { "h": 19, "w": 3, "x": 0, "y": 6 }, "id": 55, "options": { "orientation": "vertical", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": false }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "avg(sum by(job) (rate(otelcol_exporter_sent_spans{}[$__range])))", "format": "time_series", "hide": true, "instant": false, "legendFormat": "__auto", "range": true, "refId": "export" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "avg(sum by(job) (rate(otelcol_receiver_accepted_spans{}[$__range])))", "format": "time_series", "hide": true, "legendFormat": "__auto", "range": true, "refId": "acc" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "(avg(sum by(job) (rate(otelcol_exporter_sent_spans{}[$__range]))) / avg(sum by(job) (rate(otelcol_receiver_accepted_spans{}[$__range])))) ", "hide": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Export Ratio", "transformations": [], "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "gridPos": { "h": 11, "w": 21, "x": 3, "y": 6 }, "id": 4, "options": { "nodes": { "mainStatUnit": "flops" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "label_join(label_join(\n(rate(otelcol_receiver_accepted_spans{}[$__interval]))\n, \"id\", \"\", \"transport\", \"receiver\")\n, \"title\", \"\", \"transport\", \"receiver\")\n\nor\n\nlabel_replace(label_replace(\nsum by(service_name) (rate(otelcol_receiver_accepted_spans{}[$__interval]))\n, \"id\", \"processor\", \"dummynode\", \"\")\n, \"title\", \"processor\", \"dummynode\", \"\")\n\nor\nlabel_replace(label_replace(\n(rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n, \"id\", \"$0\", \"processor\", \".*\")\n, \"title\", \"$0\", \"processor\", \".*\")\n\nor\nlabel_replace(label_replace(\nsum by(exporter) (rate(otelcol_exporter_sent_spans{}[$__interval]))\n, \"id\", \"exporter\", \"dummynode\", \"\")\n, \"title\", \"exporter\", \"dummynode\", \"\")\n \nor\nlabel_replace(label_replace(\nsum by(exporter) (rate(otelcol_exporter_sent_spans{}[$__interval]))\n, \"id\", \"$0\", \"exporter\", \".*\")\n, \"title\", \"$0\", \"exporter\", \".*\")", "format": "table", "instant": true, "legendFormat": "__auto", "range": false, "refId": "nodes" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "label_join(\nlabel_replace(label_join(\n(rate(otelcol_receiver_accepted_spans{}[$__interval]))\n\n ,\"source\",\"\",\"transport\",\"receiver\")\n,\"target\",\"processor\",\"\",\"\")\n,\"id\",\"-\",\"source\",\"target\")\n\n or\n\n label_join(\nlabel_replace(label_replace(\n (rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n ,\"source\",\"processor\",\"\",\"\")\n,\"target\",\"$0\",\"processor\",\".*\")\n,\"id\",\"-\",\"source\",\"target\")\n\nor\n label_join(\nlabel_replace(label_replace(\n (rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n ,\"source\",\"$0\",\"processor\",\".*\")\n,\"target\",\"exporter\",\"\",\"\")\n,\"id\",\"-\",\"source\",\"target\")\n\nor\n label_join(\nlabel_replace(label_replace(\n (rate(otelcol_exporter_sent_spans{}[$__interval]))\n ,\"source\",\"exporter\",\"\",\"\")\n,\"target\",\"$0\",\"exporter\",\".*\")\n,\"id\",\"-\",\"source\",\"target\")\n\n", "format": "table", "hide": false, "instant": true, "legendFormat": "__auto", "range": false, "refId": "edges" } ], "transformations": [], "type": "nodeGraph" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Spans Accepted by Receiver and Transport", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "noValue": "no data", "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 3, "y": 17 }, "id": 12, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_accepted_spans{}[$__rate_interval])) by (receiver,transport)", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Accepted", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Spans Accepted ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 3, "x": 8, "y": 17 }, "id": 13, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_accepted_spans{}[$__rate_interval])) ", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Batch Processed", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "#EAB839", "value": 1 } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 11, "y": 17 }, "id": 15, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": {}, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_processor_batch_batch_send_size_sum{}[$__rate_interval])) by (processor)", "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Batch", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 3, "x": 16, "y": 17 }, "id": 14, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_sent_spans{}[$__interval])) ", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Sent by Exporter", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 19, "y": 17 }, "id": 30, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_sent_spans{}[$__rate_interval])) by (exporter)", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Sent", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "noValue": "no data", "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 3, "w": 5, "x": 3, "y": 22 }, "id": 17, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_refused_spans{}[$__rate_interval])) by (receiver,transport)", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Refused", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Spans Accepted ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 3, "w": 3, "x": 8, "y": 22 }, "id": 18, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_refused_spans{}[$__rate_interval])) ", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "otelcol_exporter_send_failed_spans", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 3, "w": 3, "x": 16, "y": 22 }, "id": 19, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_send_failed_spans{}[$__rate_interval])) ", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Sent by Exporter\notelcol_exporter_send_failed_spans", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 3, "w": 5, "x": 19, "y": 22 }, "id": 20, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_send_failed_spans{}[$__rate_interval])) by (exporter)", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Failed", "type": "stat" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 25 }, "id": 22, "panels": [], "title": "Metrics Pipeline", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "avg(sum by(job) (rate(otelcol_exporter_sent_metric_points{}[$__range]))) versus avg(sum by(job) (rate(otelcol_receiver_accepted_metric_points{}[$__range])))", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "light-blue", "value": null }, { "color": "semi-dark-red", "value": 0 }, { "color": "super-light-orange", "value": 0.4 }, { "color": "dark-blue", "value": 0.9 }, { "color": "super-light-orange", "value": 1.2 }, { "color": "dark-red", "value": 2.1 } ] }, "unit": "percentunit" }, "overrides": [] }, "gridPos": { "h": 19, "w": 3, "x": 0, "y": 26 }, "id": 54, "options": { "orientation": "vertical", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/.*/", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": false }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "avg(sum by(job) (rate(otelcol_exporter_sent_metric_points{}[$__range])))", "format": "time_series", "hide": true, "instant": false, "legendFormat": "__auto", "range": true, "refId": "export" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "avg(sum by(job) (rate(otelcol_receiver_accepted_metric_points{}[$__range])))", "format": "time_series", "hide": true, "legendFormat": "__auto", "range": true, "refId": "acc" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "( avg(sum by(job) (rate(otelcol_exporter_sent_metric_points{}[$__range]))) /avg(sum by(job) (rate(otelcol_receiver_accepted_metric_points{}[$__range]))))", "hide": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Export Ratio", "transformations": [ { "id": "calculateField", "options": { "alias": "percent", "binary": { "left": "avg(sum by(job) (rate(otelcol_exporter_sent_metric_points{}[3600s])))", "operator": "/", "reducer": "sum", "right": "avg(sum by(job) (rate(otelcol_receiver_accepted_metric_points{}[3600s])))" }, "mode": "binary", "reduce": { "reducer": "sum" } } }, { "id": "organize", "options": { "excludeByName": { "(sum(rate(otelcol_exporter_sent_metric_points{exporter=\"prometheus\"}[1m0s])) )": true, "Time": true, "avg(sum by(job) (rate(otelcol_exporter_sent_metric_points{}[3600s])))": true, "avg(sum by(job) (rate(otelcol_receiver_accepted_metric_points{}[3600s])))": true, "{instance=\"otelcol:9464\", job=\"otel\"}": true }, "indexByName": {}, "renameByName": { "Time": "", "percent": "Percent", "{exporter=\"logging\", instance=\"otelcol:8888\", job=\"otel-collector\", service_instance_id=\"fbfa720a-ebf9-45c8-a79a-9d3b6021a663\", service_name=\"otelcol-contrib\", service_version=\"0.70.0\"}": "" } } } ], "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Metrics Signalling Pipelines", "gridPos": { "h": 11, "w": 21, "x": 3, "y": 26 }, "id": 25, "options": { "nodes": { "mainStatUnit": "flops" } }, "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "\nlabel_join(label_join(\n(rate(otelcol_receiver_accepted_metric_points{}[$__interval]))\n, \"id\", \"\", \"transport\", \"receiver\")\n, \"title\", \"\", \"transport\", \"receiver\")\n\nor\n\nlabel_replace(label_replace(\nsum by(service_name) (rate(otelcol_receiver_accepted_spans{}[$__interval]))\n, \"id\", \"processor\", \"dummynode\", \"\")\n, \"title\", \"processor\", \"dummynode\", \"\")\n\n\n\nor\nlabel_replace(label_replace(\n(rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n, \"id\", \"$0\", \"processor\", \".*\")\n, \"title\", \"$0\", \"processor\", \".*\")\n\n\n\n\n\nor\nlabel_replace(label_replace(\nsum (rate(otelcol_exporter_sent_metric_points{}[$__interval]))\n, \"id\", \"exporter\", \"dummynode\", \"\")\n, \"title\", \"exporter\", \"dummynode\", \"\")\n\nor\nlabel_replace(label_replace(\nsum by(exporter) (rate(otelcol_exporter_sent_metric_points{}[$__interval]))\n, \"id\", \"$0\", \"exporter\", \".*\")\n, \"title\", \"$0\", \"exporter\", \".*\")", "format": "table", "instant": true, "legendFormat": "__auto", "range": false, "refId": "nodes" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "label_join(\nlabel_replace(label_join(\n(rate(otelcol_receiver_accepted_metric_points{}[$__interval]))\n\n,\"source\",\"\",\"transport\",\"receiver\")\n,\"target\",\"processor\",\"\",\"\")\n,\"id\",\"-\",\"source\",\"target\")\n\n\nor\n\nlabel_join(\nlabel_replace(label_replace(\n(rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n,\"source\",\"processor\",\"\",\"\")\n,\"target\",\"$0\",\"processor\",\".*\")\n,\"id\",\"-\",\"source\",\"target\")\n\n\n\n\n\nor\n\n\nlabel_join(\nlabel_replace(label_replace(\n(rate(otelcol_processor_batch_batch_send_size_count{}[$__interval]))\n,\"source\",\"$0\",\"processor\",\".*\")\n,\"target\",\"exporter\",\"\",\"\")\n,\"id\",\"-\",\"source\",\"target\")\n\nor\nlabel_join(\nlabel_replace(label_replace(\n(rate(otelcol_exporter_sent_metric_points{}[$__interval]))\n,\"source\",\"exporter\",\"\",\"\")\n,\"target\",\"$0\",\"exporter\",\".*\")\n,\"id\",\"-\",\"source\",\"target\")", "format": "table", "hide": false, "instant": true, "legendFormat": "__auto", "range": false, "refId": "edges" } ], "transformations": [], "type": "nodeGraph" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "otelcol_receiver_accepted_metric_points", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "noValue": "no data", "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 3, "y": 37 }, "id": 26, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_accepted_metric_points{}[$__rate_interval])) by (receiver,transport)", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Accepted", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "otelcol_receiver_accepted_metric_points\nTotal Accepted ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 3, "x": 8, "y": 37 }, "id": 27, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_accepted_metric_points{}[$__rate_interval])) ", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "#EAB839", "value": 1 } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 11, "y": 37 }, "id": 28, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "text": {}, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_processor_batch_batch_send_size_sum{}[$__rate_interval])) by (processor)", "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Batch", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Export ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 5, "w": 3, "x": 16, "y": 37 }, "id": 29, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_sent_metric_points{}[$__rate_interval])) ", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Sent by Exporter", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 5, "w": 5, "x": 19, "y": 37 }, "id": 16, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_sent_metric_points{}[$__rate_interval])) by (exporter) ", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Sent", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "noValue": "no data", "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 3, "w": 5, "x": 3, "y": 42 }, "id": 47, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_refused_metric_points{}[$__rate_interval])) by (receiver,transport)", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Refused", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Refused \nsum(rate(otelcol_receiver_refused_metric_points{}[$__rate_interval])) ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 3, "w": 3, "x": 8, "y": 42 }, "id": 48, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "sum(rate(otelcol_receiver_refused_metric_points{}[$__rate_interval])) ", "legendFormat": "{{receiver}}-{{transport}}", "range": true, "refId": "A" } ], "title": "Total ", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Total Failed Export ", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] } }, "overrides": [] }, "gridPos": { "h": 3, "w": 3, "x": 16, "y": 42 }, "id": 49, "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_send_failed_metric_points{}[$__rate_interval])) ", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Total", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Sent by Exporter\notelcol_exporter_send_failed_spans", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "text", "value": null } ] }, "unit": "none" }, "overrides": [] }, "gridPos": { "h": 3, "w": 5, "x": 19, "y": 42 }, "id": 50, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "auto" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum(rate(otelcol_exporter_send_failed_metric_points{}[$__rate_interval])) by (exporter)", "format": "time_series", "instant": false, "legendFormat": "{{processor}}", "range": true, "refId": "A" } ], "title": "Failed", "type": "stat" }, { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 45 }, "id": 35, "panels": [], "title": "Prometheus Scrape", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "otelcol prometheus exporter 9464 export rate versus prometheus scrape metrics", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "mappings": [], "min": 0, "thresholds": { "mode": "absolute", "steps": [ { "color": "light-blue", "value": null }, { "color": "semi-dark-red", "value": 0 }, { "color": "super-light-orange", "value": 0.4 }, { "color": "dark-blue", "value": 0.9 }, { "color": "super-light-orange", "value": 1.2 }, { "color": "dark-red", "value": 2.1 } ] }, "unit": "percentunit" }, "overrides": [] }, "gridPos": { "h": 9, "w": 3, "x": 0, "y": 46 }, "id": 53, "options": { "orientation": "vertical", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "/.*/", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": false }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "(sum_over_time(scrape_samples_scraped{job=\"otel\"}[$__range])/ count_over_time(scrape_samples_scraped{job=\"otel\"}[$__range])/(5*30)) ", "format": "time_series", "instant": false, "legendFormat": "__auto", "range": true, "refId": "accepted" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "expr": "(sum(rate(otelcol_exporter_sent_metric_points{exporter=\"prometheus\"}[$__rate_interval])) )", "format": "time_series", "hide": false, "legendFormat": "__auto", "range": true, "refId": "A" } ], "title": "Exported/Scraped", "transformations": [ { "id": "calculateField", "options": { "alias": "percent", "binary": { "left": "{instance=\"otelcol:9464\", job=\"otel\"}", "operator": "/", "reducer": "sum", "right": "(sum(rate(otelcol_exporter_sent_metric_points{exporter=\"prometheus\"}[1m0s])) )" }, "mode": "binary", "reduce": { "reducer": "sum" } } }, { "id": "organize", "options": { "excludeByName": { "(sum(rate(otelcol_exporter_sent_metric_points{exporter=\"prometheus\"}[1m0s])) )": true, "Time": true, "{instance=\"otelcol:9464\", job=\"otel\"}": true }, "indexByName": {}, "renameByName": { "percent": "Percent" } } } ], "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "sum_over_time(scrape_samples_scraped[$__range])/ count_over_time(scrape_samples_scraped[$__range])", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 9, "w": 5, "x": 3, "y": 46 }, "id": 37, "options": { "colorMode": "value", "graphMode": "area", "justifyMode": "auto", "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "textMode": "value_and_name" }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum_over_time(scrape_samples_scraped[$__range])/ count_over_time(scrape_samples_scraped[$__range])/(5*30)", "format": "time_series", "instant": false, "legendFormat": "{{job}}/{{instance}}", "range": true, "refId": "A" } ], "title": "Samples Scraped", "type": "stat" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "scrape_samples_scraped{job!=\"\"}\nTotal Samples Scraped", "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] } }, "overrides": [] }, "gridPos": { "h": 9, "w": 3, "x": 8, "y": 46 }, "id": 42, "options": { "orientation": "horizontal", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "sum_over_time(scrape_samples_scraped[$__range])/ count_over_time(scrape_samples_scraped[$__range])/(5*30)", "format": "time_series", "hide": false, "instant": false, "legendFormat": "__auto", "range": true, "refId": "B" } ], "title": "Total", "transformations": [ { "id": "calculateField", "options": { "mode": "reduceRow", "reduce": { "include": [ "{instance=\"otelcol:9464\", job=\"otel\"}", "{instance=\"otelcol:8888\", job=\"otel-collector\"}" ], "reducer": "sum" }, "replaceFields": true } } ], "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "gridPos": { "h": 9, "w": 8, "x": 11, "y": 46 }, "id": 41, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "label_replace(label_replace(label_replace(\nsum (scrape_samples_scraped{job!=\"\"}) by (instance)\n, \"id\", \"$0\", \"instance\", \".*\")\n, \"title\", \"$0\", \"instance\", \".*\")\n,\"mainstat\",\"\",\"\",\"\")\n\nor \n\nlabel_replace(label_replace(label_replace(\nsum (scrape_samples_scraped{job!=\"\"})\n, \"id\", \"prometheus\", \"\", \"\")\n, \"title\", \"prometheus\", \"\", \"\")\n,\"mainstat\",\"\",\"\",\"\")\n", "format": "table", "hide": false, "instant": true, "legendFormat": "__auto", "range": false, "refId": "nodes" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "label_join(\nlabel_replace(label_replace(\nsum (scrape_samples_scraped{job!=\"\"}) by (instance)\n,\"source\",\"$0\",\"instance\",\".*\")\n,\"target\",\"prometheus\",\"\",\"\")\n,\"id\",\"-\",\"source\",\"target\")", "format": "table", "hide": false, "instant": true, "legendFormat": "__auto", "range": false, "refId": "edges" } ], "transformations": [ { "id": "organize", "options": { "excludeByName": { "Time": true }, "indexByName": {}, "renameByName": {} } } ], "type": "nodeGraph" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "Sent by Exporter", "gridPos": { "h": 9, "w": 5, "x": 19, "y": 46 }, "id": 52, "options": { "code": { "language": "plaintext", "showLineNumbers": false, "showMiniMap": false }, "content": "\n \n## Prometheus Config\n\n`evaluation_interval:` 30s\n\n`scrape_interval:` 5s", "mode": "markdown" }, "pluginVersion": "9.1.0", "type": "text" } ], "refresh": false, "schemaVersion": 37, "style": "dark", "tags": [], "templating": { "list": [ { "allValue": ".*", "current": { "selected": false, "text": "0.70.0", "value": "0.70.0" }, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "definition": "query_result(sum(otelcol_process_uptime{}) by (service_version))\n", "hide": 2, "includeAll": false, "label": "service_version", "multi": true, "name": "service_version", "options": [], "query": { "query": "query_result(sum(otelcol_process_uptime{}) by (service_version))\n", "refId": "StandardVariableQuery" }, "refresh": 1, "regex": "/.*service_version=\"(.*)\".*/", "skipUrlSync": false, "sort": 0, "type": "query" } ] }, "time": { "from": "now-15m", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Opentelemetry Collector Data Flow", "uid": "rl5_tea4k", "version": 2, "weekStart": "" } opentelemetry-collector.json: | { "__inputs": [ { "name": "webstore", "label": "Prometheus", "description": "", "type": "datasource", "pluginId": "prometheus", "pluginName": "Prometheus" } ], "__requires": [ { "type": "grafana", "id": "grafana", "name": "Grafana", "version": "7.0.3" }, { "type": "panel", "id": "graph", "name": "Graph", "version": "" }, { "type": "datasource", "id": "prometheus", "name": "Prometheus", "version": "1.0.0" }, { "type": "panel", "id": "stat", "name": "Stat", "version": "" } ], "annotations": { "list": [ { "builtIn": 1, "datasource": "-- Grafana --", "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "type": "dashboard" } ] }, "description": "Provides information about the status of the OpenTelemetry Collector", "editable": true, "gnetId": 12553, "graphTooltip": 0, "id": 22, "iteration": 1593502896956, "links": [], "panels": [ { "collapsed": false, "datasource": "Prometheus", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 23, "panels": [], "title": "Receivers", "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "description": "Rate of spans successfully accepted vs refused per second", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 1 }, "hiddenSeries": false, "id": 28, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_receiver_accepted_spans{receiver=~\"$receiver\"}[1m])) by (receiver)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{receiver}} spans accepted / sec", "refId": "A" }, { "expr": "sum(rate(otelcol_receiver_refused_spans{receiver=~\"$receiver\"}[1m])) by (receiver)", "interval": "", "legendFormat": "{{ receiver }} spans refused /sec", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Spans Accepted vs Refused /Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "description": "Rate of metrics successfully accepted vs refused per second", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 1 }, "hiddenSeries": false, "id": 19, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_receiver_accepted_metric_points{receiver=~\"$receiver\"}[1m])) by (receiver)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{receiver}} accepted /sec", "refId": "A" }, { "expr": "sum(rate(otelcol_receiver_refused_metric_points{receiver=~\"$receiver\"}[1m])) by (receiver)", "interval": "", "legendFormat": "{{ receiver }} refused / sec", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Metrics Accepted vs Refused Received/Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": false, "datasource": "Prometheus", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 10 }, "id": 25, "panels": [], "title": "Exporters", "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "description": "Rate of spans successfully exported vs Failed per second", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 0, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 11 }, "hiddenSeries": false, "id": 30, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_exporter_sent_spans{exporter=~\"$exporter\"}[1m])) by (exporter)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{exporter}} sent / sec", "refId": "A" }, { "expr": "sum(rate(otelcol_exporter_send_failed_spans{exporter=~\"$exporter\"}[1m])) by (exporter)", "interval": "", "legendFormat": "{{ exporter }} failed /sec", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Spans Exported vs Failed / Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "description": "Rate of timeseries successfully exported per second", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 11 }, "hiddenSeries": false, "id": 31, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_exporter_sent_metric_points{exporter=~\"$exporter\"}[1m])) by (exporter)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{exporter}} sent /sec", "refId": "A" }, { "expr": "sum(rate(otelcol_exporter_send_failed_metric_points{exporter=~\"$exporter\"}[1m])) by (exporter)", "interval": "", "legendFormat": "{{ exporter }} failed / sec", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Metrics Exported vs failed /Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "collapsed": false, "datasource": "Prometheus", "gridPos": { "h": 1, "w": 24, "x": 0, "y": 20 }, "id": 21, "panels": [], "repeat": null, "title": "Processors", "type": "row" }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 0, "y": 21 }, "hiddenSeries": false, "id": 10, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "max(otelcol_processor_queued_retry_queue_length)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "Queue Length", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Queued Retry Max Queue Length", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 8, "y": 21 }, "hiddenSeries": false, "id": 11, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(otelcol_processor_queued_retry_queue_latency_sum/ otelcol_processor_queued_retry_queue_latency_count)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "ms", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Queued Retry Processor In-queue Latency (ms)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 8, "x": 16, "y": 21 }, "hiddenSeries": false, "id": 32, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(otelcol_processor_queued_retry_send_latency_sum/ otelcol_processor_queued_retry_send_latency_count)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "ms", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Queued Retry Processor Send Latency (ms)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 30 }, "hiddenSeries": false, "id": 5, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_processor_spans_received{processor=~\"$processor\"}[1m])) by (processor)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{processor}} | received", "refId": "A" }, { "expr": "sum(rate(otelcol_processor_spans_dropped{processor=~\"$processor\"}[1m])) by (processor)", "interval": "", "legendFormat": "{{processor}} | dropped", "refId": "B" }, { "expr": "sum(rate(otelcol_processor_accepted_spans{processor=~\"$processor\"}[1m])) by (processor)", "interval": "", "legendFormat": "{{processor}} | accepted", "refId": "C" }, { "expr": "sum(rate(otelcol_processor_refused_spans{processor=~\"$processor\"}[1m])) by (processor)", "interval": "", "legendFormat": "{{processor}} | refused", "refId": "E" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Processor Spans Received, Dropped, Accepted, Refused/Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "decimals": null, "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 30 }, "hiddenSeries": false, "id": 14, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_processor_queued_retry_success_send{processor=~\"$processor\"}[1m])) by (processor)", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{processor}}", "refId": "A" }, { "expr": "sum(rate(otelcol_processor_queued_retry_fail_send{processor=~\"$processor\"}[1m])) by (processor)", "interval": "", "legendFormat": "{{processor}}", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "QueuedRetry Successful vs Failed Sent/Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 39 }, "hiddenSeries": false, "id": 2, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_processor_spans_received{processor=~\"$processor\"}[1m]) / rate(otelcol_processor_batches_received{processor=~\"$processor\"}[1m])) by (processor)", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{processor}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Spans per Batch (avg from rates)", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 39 }, "hiddenSeries": false, "id": 12, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(rate(otelcol_processor_batches_received{processor=~\"$processor\"}[1m])) by (processor)", "format": "time_series", "interval": "", "intervalFactor": 1, "legendFormat": "{{processor}} | received", "refId": "A" }, { "expr": "sum(rate(otelcol_processor_trace_batches_dropped{processor=~\"$processor\"}[1m])) by (processor)", "interval": "", "legendFormat": "{{processor}} | trace dropped", "refId": "B" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Batches Received vs Dropped /Second", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 0, "y": 48 }, "hiddenSeries": false, "id": 6, "interval": "", "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(otelcol_processor_queued_retry_success_send{processor=~\"$processor\"}) by (processor)", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{processor}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Successful Batches Sent Cumulative", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": "0", "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } }, { "aliasColors": {}, "bars": false, "dashLength": 10, "dashes": false, "datasource": "Prometheus", "fieldConfig": { "defaults": { "custom": {} }, "overrides": [] }, "fill": 1, "fillGradient": 0, "gridPos": { "h": 9, "w": 12, "x": 12, "y": 48 }, "hiddenSeries": false, "id": 3, "legend": { "avg": false, "current": false, "max": false, "min": false, "show": true, "total": false, "values": false }, "lines": true, "linewidth": 1, "links": [], "nullPointMode": "null", "options": { "dataLinks": [] }, "percentage": false, "pointradius": 5, "points": false, "renderer": "flot", "seriesOverrides": [], "spaceLength": 10, "stack": false, "steppedLine": false, "targets": [ { "expr": "sum(otelcol_processor_spans_received{exporter=~\"$exporter\"}) by (exporter)", "format": "time_series", "hide": false, "interval": "", "intervalFactor": 1, "legendFormat": "{{exporter}}", "refId": "A" } ], "thresholds": [], "timeFrom": null, "timeRegions": [], "timeShift": null, "title": "Enqueued Spans Cumulative", "tooltip": { "shared": true, "sort": 0, "value_type": "individual" }, "type": "graph", "xaxis": { "buckets": null, "mode": "time", "name": null, "show": true, "values": [] }, "yaxes": [ { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true }, { "format": "short", "label": null, "logBase": 1, "max": null, "min": null, "show": true } ], "yaxis": { "align": false, "alignLevel": null } } ], "refresh": false, "schemaVersion": 25, "style": "dark", "tags": [ "opentelemetry" ], "templating": { "list": [ { "allValue": ".*", "current": { "selected": false, "text": "All", "value": "$__all" }, "datasource": "Prometheus", "definition": "label_values(otelsvc_receiver)", "hide": 0, "includeAll": true, "label": "receiver", "multi": true, "name": "receiver", "options": [], "query": "label_values(otelsvc_receiver)", "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false }, { "allValue": ".*", "current": { "selected": false, "text": "All", "value": "$__all" }, "datasource": "Prometheus", "definition": "label_values(otelsvc_exporter)", "hide": 0, "includeAll": true, "label": "exporter", "multi": true, "name": "exporter", "options": [], "query": "label_values(otelsvc_exporter)", "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 0, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false }, { "allValue": null, "current": { "selected": false, "text": "All", "value": "$__all" }, "datasource": "Prometheus", "definition": "label_values(processor)", "hide": 0, "includeAll": true, "label": "processor", "multi": true, "name": "processor", "options": [], "query": "label_values(processor)", "refresh": 2, "regex": "", "skipUrlSync": false, "sort": 1, "tagValuesQuery": "", "tags": [], "tagsQuery": "", "type": "query", "useTags": false } ] }, "time": { "from": "now-15m", "to": "now" }, "timepicker": { "refresh_intervals": [ "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "time_options": [ "5m", "15m", "1h", "6h", "12h", "24h", "2d", "7d", "30d" ] }, "timezone": "", "title": "OpenTelemetry Collector", "uid": "BKf2sowmj", "version": 7 } spanmetrics-dashboard.json: | { "annotations": { "list": [ { "builtIn": 1, "datasource": { "type": "grafana", "uid": "-- Grafana --" }, "enable": true, "hide": true, "iconColor": "rgba(0, 211, 255, 1)", "name": "Annotations & Alerts", "target": { "limit": 100, "matchAny": false, "tags": [], "type": "dashboard" }, "type": "dashboard" } ] }, "description": "Spanmetrics way of demo application view.", "author": { "name": "devrimdemiroz" }, "editable": true, "fiscalYearStartMonth": 0, "graphTooltip": 0, "links": [], "liveNow": false, "panels": [ { "collapsed": false, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 }, "id": 24, "panels": [], "title": "Service Level - Throughput and Latencies", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null }, { "color": "green", "value": 2 }, { "color": "#EAB839", "value": 64 }, { "color": "orange", "value": 128 }, { "color": "red", "value": 256 } ] }, "unit": "ms" }, "overrides": [] }, "gridPos": { "h": 20, "w": 12, "x": 0, "y": 1 }, "id": 2, "interval": "5m", "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,histogram_quantile(0.50, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name)))", "format": "time_series", "hide": true, "instant": false, "interval": "", "legendFormat": "{{service_name}}-quantile_0.50", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,histogram_quantile(0.95, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])) by (le,service_name)))", "hide": false, "instant": true, "interval": "", "legendFormat": "{{le}} - {{service_name}}", "range": false, "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.99, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name))", "hide": true, "interval": "", "legendFormat": "quantile99", "range": true, "refId": "C" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.999, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name))", "hide": true, "interval": "", "legendFormat": "quantile999", "range": true, "refId": "D" } ], "title": "Top 3x3 - Service Latency - quantile95", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "super-light-blue", "value": 1 }, { "color": "#EAB839", "value": 2 }, { "color": "red", "value": 10 } ] }, "unit": "reqps" }, "overrides": [] }, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 1 }, "id": 4, "interval": "5m", "options": { "displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" ], "fields": "", "values": false }, "showUnfilled": true, "text": {} }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,sum by (service_name) (rate(calls_total{service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])))", "format": "time_series", "instant": true, "interval": "", "legendFormat": "{{service_name}}", "range": false, "refId": "A" } ], "title": "Top 7 Services Mean Rate over Range", "transformations": [], "type": "bargauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-reds" }, "decimals": 4, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "#EAB839", "value": 1 }, { "color": "red", "value": 15 } ] }, "unit": "reqps" }, "overrides": [] }, "gridPos": { "h": 7, "w": 12, "x": 12, "y": 14 }, "id": 15, "interval": "5m", "options": { "displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "vertical", "reduceOptions": { "calcs": [ "mean" ], "fields": "", "values": false }, "showUnfilled": true, "text": {} }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,sum(rate(calls_total{status_code=\"STATUS_CODE_ERROR\",service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])) by (service_name))", "instant": true, "interval": "", "legendFormat": "{{service_name}}", "range": false, "refId": "A" } ], "title": "Top 7 Services Mean ERROR Rate over Range", "transformations": [], "type": "bargauge" }, { "collapsed": false, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 21 }, "id": 14, "panels": [], "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "refId": "A" } ], "title": "span_names Level - Throughput", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "description": "", "fieldConfig": { "defaults": { "color": { "mode": "thresholds" }, "custom": { "align": "auto", "displayMode": "auto", "inspect": false }, "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "reqps" }, "overrides": [ { "matcher": { "id": "byName", "options": "bRate" }, "properties": [ { "id": "custom.displayMode", "value": "lcd-gauge" }, { "id": "color", "value": { "mode": "continuous-BlYlRd" } } ] }, { "matcher": { "id": "byName", "options": "eRate" }, "properties": [ { "id": "custom.displayMode", "value": "lcd-gauge" }, { "id": "color", "value": { "mode": "continuous-RdYlGr" } } ] }, { "matcher": { "id": "byName", "options": "Error Rate" }, "properties": [ { "id": "custom.width", "value": 663 } ] }, { "matcher": { "id": "byName", "options": "Rate" }, "properties": [ { "id": "custom.width", "value": 667 } ] }, { "matcher": { "id": "byName", "options": "Service" }, "properties": [ { "id": "custom.width", "value": null } ] } ] }, "gridPos": { "h": 11, "w": 24, "x": 0, "y": 22 }, "id": 22, "interval": "5m", "options": { "footer": { "fields": "", "reducer": [ "sum" ], "show": false }, "showHeader": true, "sortBy": [] }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "exemplar": false, "expr": "topk(7, sum(rate(calls_total{service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])) by (span_name,service_name)) ", "format": "table", "instant": true, "interval": "", "legendFormat": "", "refId": "Rate" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "exemplar": false, "expr": "topk(7, sum(rate(calls_total{status_code=\"STATUS_CODE_ERROR\",service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])) by (span_name,service_name))", "format": "table", "hide": false, "instant": true, "interval": "", "legendFormat": "", "refId": "Error Rate" } ], "title": "Top 7 span_names and Errors (APM Table)", "transformations": [ { "id": "seriesToColumns", "options": { "byField": "span_name" } }, { "id": "organize", "options": { "excludeByName": { "Time 1": true, "Time 2": true }, "indexByName": {}, "renameByName": { "Value #Error Rate": "Error Rate", "Value #Rate": "Rate", "service_name 1": "Rate in Service", "service_name 2": "Error Rate in Service" } } }, { "id": "calculateField", "options": { "alias": "bRate", "mode": "reduceRow", "reduce": { "include": [ "Rate" ], "reducer": "sum" } } }, { "id": "calculateField", "options": { "alias": "eRate", "mode": "reduceRow", "reduce": { "include": [ "Error Rate" ], "reducer": "sum" } } }, { "id": "organize", "options": { "excludeByName": { "Error Rate": true, "Rate": true, "bRate": false }, "indexByName": { "Error Rate": 4, "Error Rate in Service": 6, "Rate": 1, "Rate in Service": 5, "bRate": 2, "eRate": 3, "span_name": 0 }, "renameByName": { "Rate in Service": "Service", "bRate": "Rate", "eRate": "Error Rate", "span_name": "span_name Name" } } }, { "id": "sortBy", "options": { "fields": {}, "sort": [ { "desc": true, "field": "Rate" } ] } } ], "type": "table" }, { "collapsed": false, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "gridPos": { "h": 1, "w": 24, "x": 0, "y": 33 }, "id": 20, "panels": [], "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "refId": "A" } ], "title": "span_name Level - Latencies", "type": "row" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "blue", "value": null }, { "color": "green", "value": 2 }, { "color": "#EAB839", "value": 64 }, { "color": "orange", "value": 128 }, { "color": "red", "value": 256 } ] }, "unit": "ms" }, "overrides": [] }, "gridPos": { "h": 13, "w": 12, "x": 0, "y": 34 }, "id": 25, "interval": "5m", "options": { "orientation": "auto", "reduceOptions": { "calcs": [ "lastNotNull" ], "fields": "", "values": false }, "showThresholdLabels": false, "showThresholdMarkers": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,histogram_quantile(0.50, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name)))", "format": "time_series", "hide": true, "instant": false, "interval": "", "legendFormat": "{{service_name}}-quantile_0.50", "range": true, "refId": "A" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7,histogram_quantile(0.95, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__range])) by (le,span_name)))", "hide": false, "instant": true, "interval": "", "legendFormat": "{{span_name}}", "range": false, "refId": "B" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.99, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name))", "hide": true, "interval": "", "legendFormat": "quantile99", "range": true, "refId": "C" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "histogram_quantile(0.999, sum(rate(duration_milliseconds_bucket{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])) by (le,service_name))", "hide": true, "interval": "", "legendFormat": "quantile999", "range": true, "refId": "D" } ], "title": "Top 3x3 - span_name Latency - quantile95", "type": "gauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "continuous-BlYlRd" }, "decimals": 2, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "ms" }, "overrides": [] }, "gridPos": { "h": 13, "w": 12, "x": 12, "y": 34 }, "id": 10, "interval": "5m", "options": { "displayMode": "lcd", "minVizHeight": 10, "minVizWidth": 0, "orientation": "horizontal", "reduceOptions": { "calcs": [ "mean" ], "fields": "", "values": false }, "showUnfilled": true }, "pluginVersion": "9.1.0", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": false, "expr": "topk(7, sum by (span_name,service_name)(increase(duration_milliseconds_sum{service_name=~\"${service}\", span_name=~\"$span_name\"}[5m]) / increase(duration_milliseconds_count{service_name=~\"${service}\",span_name=~\"$span_name\"}[5m\n])))", "instant": true, "interval": "", "legendFormat": "{{span_name}} [{{service_name}}]", "range": false, "refId": "A" } ], "title": "Top 7 Highest Endpoint Latencies Mean Over Range ", "transformations": [], "type": "bargauge" }, { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "fieldConfig": { "defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisCenteredZero": false, "axisColorMode": "text", "axisLabel": "", "axisPlacement": "auto", "barAlignment": 0, "drawStyle": "line", "fillOpacity": 15, "gradientMode": "none", "hideFrom": { "legend": false, "tooltip": false, "viz": false }, "lineInterpolation": "smooth", "lineWidth": 1, "pointSize": 5, "scaleDistribution": { "type": "linear" }, "showPoints": "auto", "spanNulls": false, "stacking": { "group": "A", "mode": "none" }, "thresholdsStyle": { "mode": "off" } }, "mappings": [], "thresholds": { "mode": "absolute", "steps": [ { "color": "green", "value": null }, { "color": "red", "value": 80 } ] }, "unit": "ms" }, "overrides": [] }, "gridPos": { "h": 12, "w": 24, "x": 0, "y": 47 }, "id": 16, "interval": "5m", "options": { "legend": { "calcs": [ "mean", "logmin", "max", "delta" ], "displayMode": "table", "placement": "bottom", "showLegend": true }, "tooltip": { "mode": "single", "sort": "none" } }, "pluginVersion": "8.4.7", "targets": [ { "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "editorMode": "code", "exemplar": true, "expr": "topk(7,sum by (span_name,service_name)(increase(duration_milliseconds_sum{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval]) / increase(duration_milliseconds_count{service_name=~\"$service\", span_name=~\"$span_name\"}[$__rate_interval])))", "instant": false, "interval": "", "legendFormat": "[{{service_name}}] {{span_name}}", "range": true, "refId": "A" } ], "title": "Top 7 Latencies Over Range ", "type": "timeseries" } ], "refresh": "5m", "schemaVersion": 37, "style": "dark", "tags": [], "templating": { "list": [ { "allValue": ".*", "current": { "selected": false, "text": "All", "value": "$__all" }, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "definition": "query_result(count by (service_name)(count_over_time(calls_total[$__range])))", "hide": 0, "includeAll": true, "multi": true, "name": "service", "options": [], "query": { "query": "query_result(count by (service_name)(count_over_time(calls_total[$__range])))", "refId": "StandardVariableQuery" }, "refresh": 2, "regex": "/.*service_name=\"(.*)\".*/", "skipUrlSync": false, "sort": 1, "type": "query" }, { "allValue": ".*", "current": { "selected": false, "text": "All", "value": "$__all" }, "datasource": { "type": "prometheus", "uid": "webstore-metrics" }, "definition": "query_result(sum ({__name__=~\".*calls_total\",service_name=~\"$service\"}) by (span_name))", "hide": 0, "includeAll": true, "multi": true, "name": "span_name", "options": [], "query": { "query": "query_result(sum ({__name__=~\".*calls_total\",service_name=~\"$service\"}) by (span_name))", "refId": "StandardVariableQuery" }, "refresh": 2, "regex": "/.*span_name=\"(.*)\".*/", "skipUrlSync": false, "sort": 0, "type": "query" } ] }, "time": { "from": "now-1h", "to": "now" }, "timepicker": {}, "timezone": "", "title": "Spanmetrics Demo Dashboard", "uid": "W2gX2zHVk48", "version": 1, "weekStart": "" } --- # Source: opentelemetry-demo/charts/grafana/templates/clusterrole.yaml kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" name: opentelemetry-demo-grafana-clusterrole rules: [] --- # Source: opentelemetry-demo/charts/prometheus/templates/clusterrole.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server rules: - apiGroups: - "" resources: - nodes - nodes/proxy - nodes/metrics - services - endpoints - pods - ingresses - configmaps verbs: - get - list - watch - apiGroups: - "extensions" - "networking.k8s.io" resources: - ingresses/status - ingresses verbs: - get - list - watch - nonResourceURLs: - "/metrics" verbs: - get --- # Source: opentelemetry-demo/charts/grafana/templates/clusterrolebinding.yaml kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: opentelemetry-demo-grafana-clusterrolebinding labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" subjects: - kind: ServiceAccount name: opentelemetry-demo-grafana namespace: otel-demo roleRef: kind: ClusterRole name: opentelemetry-demo-grafana-clusterrole apiGroup: rbac.authorization.k8s.io --- # Source: opentelemetry-demo/charts/prometheus/templates/clusterrolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server subjects: - kind: ServiceAccount name: opentelemetry-demo-prometheus-server namespace: otel-demo roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: opentelemetry-demo-prometheus-server --- # Source: opentelemetry-demo/charts/grafana/templates/role.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" rules: [] --- # Source: opentelemetry-demo/charts/grafana/templates/rolebinding.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: opentelemetry-demo-grafana subjects: - kind: ServiceAccount name: opentelemetry-demo-grafana namespace: otel-demo --- # Source: opentelemetry-demo/charts/grafana/templates/service.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" spec: type: ClusterIP ports: - name: service port: 80 protocol: TCP targetPort: 3000 selector: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo --- # Source: opentelemetry-demo/charts/jaeger/templates/allinone-agent-svc.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-jaeger-agent labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "1.42.0" app.kubernetes.io/component: service-agent spec: clusterIP: None ports: - name: zk-compact-trft port: 5775 protocol: UDP targetPort: 0 - name: config-rest port: 5778 targetPort: 0 - name: jg-compact-trft port: 6831 protocol: UDP targetPort: 0 - name: jg-binary-trft port: 6832 protocol: UDP targetPort: 0 selector: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: all-in-one --- # Source: opentelemetry-demo/charts/jaeger/templates/allinone-collector-svc.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-jaeger-collector labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "1.42.0" app.kubernetes.io/component: service-collector spec: clusterIP: None ports: - name: http-zipkin port: 9411 targetPort: 0 - name: grpc-http port: 14250 targetPort: 0 - name: c-tchan-trft port: 14267 targetPort: 0 - name: http-c-binary-trft port: 14268 targetPort: 0 - name: otlp-grpc port: 4317 targetPort: 0 - name: otlp-http port: 4318 targetPort: 0 selector: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: all-in-one --- # Source: opentelemetry-demo/charts/jaeger/templates/allinone-query-svc.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-jaeger-query labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "1.42.0" app.kubernetes.io/component: service-query spec: clusterIP: None ports: - name: http-query port: 16686 targetPort: 16686 - name: grpc-query port: 16685 targetPort: 16685 selector: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: all-in-one --- # Source: opentelemetry-demo/charts/opentelemetry-collector/templates/service.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-otelcol labels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "0.76.1" component: standalone-collector spec: type: ClusterIP ports: - name: jaeger-compact port: 6831 targetPort: 6831 protocol: UDP - name: jaeger-grpc port: 14250 targetPort: 14250 protocol: TCP - name: jaeger-thrift port: 14268 targetPort: 14268 protocol: TCP - name: metrics port: 8888 targetPort: 8888 protocol: TCP - name: otlp port: 4317 targetPort: 4317 protocol: TCP appProtocol: grpc - name: otlp-http port: 4318 targetPort: 4318 protocol: TCP - name: prometheus port: 9464 targetPort: 9464 protocol: TCP - name: zipkin port: 9411 targetPort: 9411 protocol: TCP selector: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo component: standalone-collector --- # Source: opentelemetry-demo/charts/prometheus/templates/service.yaml apiVersion: v1 kind: Service metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server namespace: otel-demo spec: ports: - name: http port: 9090 protocol: TCP targetPort: 9090 selector: component: "server" app: prometheus release: opentelemetry-demo sessionAffinity: None type: "ClusterIP" --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-adservice labels: opentelemetry.io/name: opentelemetry-demo-adservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: adservice app.kubernetes.io/name: opentelemetry-demo-adservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-adservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-cartservice labels: opentelemetry.io/name: opentelemetry-demo-cartservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: cartservice app.kubernetes.io/name: opentelemetry-demo-cartservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-cartservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-checkoutservice labels: opentelemetry.io/name: opentelemetry-demo-checkoutservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: checkoutservice app.kubernetes.io/name: opentelemetry-demo-checkoutservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-checkoutservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-currencyservice labels: opentelemetry.io/name: opentelemetry-demo-currencyservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: currencyservice app.kubernetes.io/name: opentelemetry-demo-currencyservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-currencyservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-emailservice labels: opentelemetry.io/name: opentelemetry-demo-emailservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: emailservice app.kubernetes.io/name: opentelemetry-demo-emailservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-emailservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-featureflagservice labels: opentelemetry.io/name: opentelemetry-demo-featureflagservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: featureflagservice app.kubernetes.io/name: opentelemetry-demo-featureflagservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 50053 name: grpc targetPort: 50053 - port: 8081 name: http targetPort: 8081 selector: opentelemetry.io/name: opentelemetry-demo-featureflagservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-ffspostgres labels: opentelemetry.io/name: opentelemetry-demo-ffspostgres app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: ffspostgres app.kubernetes.io/name: opentelemetry-demo-ffspostgres app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 5432 name: postgres targetPort: 5432 selector: opentelemetry.io/name: opentelemetry-demo-ffspostgres --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-frontend labels: opentelemetry.io/name: opentelemetry-demo-frontend app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontend app.kubernetes.io/name: opentelemetry-demo-frontend app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-frontend --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-frontendproxy labels: opentelemetry.io/name: opentelemetry-demo-frontendproxy app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontendproxy app.kubernetes.io/name: opentelemetry-demo-frontendproxy app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-frontendproxy --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-kafka labels: opentelemetry.io/name: opentelemetry-demo-kafka app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: kafka app.kubernetes.io/name: opentelemetry-demo-kafka app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 9092 name: plaintext targetPort: 9092 - port: 9093 name: controller targetPort: 9093 selector: opentelemetry.io/name: opentelemetry-demo-kafka --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-loadgenerator labels: opentelemetry.io/name: opentelemetry-demo-loadgenerator app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: loadgenerator app.kubernetes.io/name: opentelemetry-demo-loadgenerator app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8089 name: tcp-service targetPort: 8089 selector: opentelemetry.io/name: opentelemetry-demo-loadgenerator --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-paymentservice labels: opentelemetry.io/name: opentelemetry-demo-paymentservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: paymentservice app.kubernetes.io/name: opentelemetry-demo-paymentservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-paymentservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-productcatalogservice labels: opentelemetry.io/name: opentelemetry-demo-productcatalogservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: productcatalogservice app.kubernetes.io/name: opentelemetry-demo-productcatalogservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-productcatalogservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-quoteservice labels: opentelemetry.io/name: opentelemetry-demo-quoteservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: quoteservice app.kubernetes.io/name: opentelemetry-demo-quoteservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-quoteservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-recommendationservice labels: opentelemetry.io/name: opentelemetry-demo-recommendationservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: recommendationservice app.kubernetes.io/name: opentelemetry-demo-recommendationservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-recommendationservice --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-redis labels: opentelemetry.io/name: opentelemetry-demo-redis app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: redis app.kubernetes.io/name: opentelemetry-demo-redis app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 6379 name: redis targetPort: 6379 selector: opentelemetry.io/name: opentelemetry-demo-redis --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: v1 kind: Service metadata: name: opentelemetry-demo-shippingservice labels: opentelemetry.io/name: opentelemetry-demo-shippingservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: shippingservice app.kubernetes.io/name: opentelemetry-demo-shippingservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: type: ClusterIP ports: - port: 8080 name: tcp-service targetPort: 8080 selector: opentelemetry.io/name: opentelemetry-demo-shippingservice --- # Source: opentelemetry-demo/charts/grafana/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-grafana namespace: otel-demo labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo strategy: type: RollingUpdate template: metadata: labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo annotations: checksum/config: 46e9428a9c36c5c45a84485e747d9911e5d9cc320ac4bec997c39688cfda1b43 checksum/dashboards-json-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b checksum/sc-dashboard-provider-config: 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b checksum/secret: 168eac9549c1155906143bae680e232ce7a8acecd06af6a8ca9d6088db7473f2 spec: serviceAccountName: opentelemetry-demo-grafana automountServiceAccountToken: true securityContext: fsGroup: 472 runAsGroup: 472 runAsUser: 472 enableServiceLinks: true containers: - name: grafana image: "grafana/grafana:9.4.7" imagePullPolicy: IfNotPresent volumeMounts: - name: config mountPath: "/etc/grafana/grafana.ini" subPath: grafana.ini - name: storage mountPath: "/var/lib/grafana" - name: dashboards-default mountPath: "/var/lib/grafana/dashboards/default" - name: config mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" subPath: "datasources.yaml" - name: config mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" subPath: "dashboardproviders.yaml" ports: - name: grafana containerPort: 3000 protocol: TCP - name: gossip-tcp containerPort: 9094 protocol: TCP - name: gossip-udp containerPort: 9094 protocol: UDP env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP - name: GF_SECURITY_ADMIN_USER valueFrom: secretKeyRef: name: opentelemetry-demo-grafana key: admin-user - name: GF_SECURITY_ADMIN_PASSWORD valueFrom: secretKeyRef: name: opentelemetry-demo-grafana key: admin-password - name: GF_PATHS_DATA value: /var/lib/grafana/ - name: GF_PATHS_LOGS value: /var/log/grafana - name: GF_PATHS_PLUGINS value: /var/lib/grafana/plugins - name: GF_PATHS_PROVISIONING value: /etc/grafana/provisioning livenessProbe: failureThreshold: 10 httpGet: path: /api/health port: 3000 initialDelaySeconds: 60 timeoutSeconds: 30 readinessProbe: httpGet: path: /api/health port: 3000 resources: limits: memory: 100Mi volumes: - name: config configMap: name: opentelemetry-demo-grafana - name: dashboards-default configMap: name: opentelemetry-demo-grafana-dashboards - name: storage emptyDir: {} --- # Source: opentelemetry-demo/charts/jaeger/templates/allinone-deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-jaeger labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "1.42.0" app.kubernetes.io/component: all-in-one prometheus.io/port: "14269" prometheus.io/scrape: "true" spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: all-in-one template: metadata: labels: app.kubernetes.io/name: jaeger app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: all-in-one annotations: prometheus.io/port: "14269" prometheus.io/scrape: "true" spec: containers: - env: - name: METRICS_STORAGE_TYPE value: prometheus - name: SPAN_STORAGE_TYPE value: memory - name: COLLECTOR_ZIPKIN_HOST_PORT value: :9411 - name: JAEGER_DISABLED value: "false" - name: COLLECTOR_OTLP_ENABLED value: "true" image: jaegertracing/all-in-one:1.42.0 imagePullPolicy: IfNotPresent name: jaeger args: - "--memory.max-traces" - "10000" - "--query.base-path" - "/jaeger/ui" - "--prometheus.server-url" - "http://opentelemetry-demo-prometheus-server:9090" ports: - containerPort: 5775 protocol: UDP - containerPort: 6831 protocol: UDP - containerPort: 6832 protocol: UDP - containerPort: 5778 protocol: TCP - containerPort: 16686 protocol: TCP - containerPort: 16685 protocol: TCP - containerPort: 9411 protocol: TCP - containerPort: 4317 protocol: TCP - containerPort: 4318 protocol: TCP livenessProbe: failureThreshold: 5 httpGet: path: / port: 14269 scheme: HTTP initialDelaySeconds: 5 periodSeconds: 15 successThreshold: 1 timeoutSeconds: 1 readinessProbe: failureThreshold: 3 httpGet: path: / port: 14269 scheme: HTTP initialDelaySeconds: 1 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: limits: memory: 300Mi serviceAccountName: opentelemetry-demo-jaeger --- # Source: opentelemetry-demo/charts/opentelemetry-collector/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-otelcol labels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "0.76.1" spec: replicas: 1 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo component: standalone-collector strategy: type: RollingUpdate template: metadata: annotations: checksum/config: 43d3318bb84ce994167ce160b46e0e06eb17a17b8de61b578bf4a3e97f4dcdd1 opentelemetry_community_demo: "true" prometheus.io/port: "9464" prometheus.io/scrape: "true" labels: app.kubernetes.io/name: otelcol app.kubernetes.io/instance: opentelemetry-demo component: standalone-collector spec: serviceAccountName: opentelemetry-demo-otelcol securityContext: {} containers: - name: opentelemetry-collector command: - /otelcol-contrib - --config=/conf/relay.yaml securityContext: {} image: "otel/opentelemetry-collector-contrib:0.76.1" imagePullPolicy: IfNotPresent ports: - name: jaeger-compact containerPort: 6831 protocol: UDP - name: jaeger-grpc containerPort: 14250 protocol: TCP - name: jaeger-thrift containerPort: 14268 protocol: TCP - name: metrics containerPort: 8888 protocol: TCP - name: otlp containerPort: 4317 protocol: TCP - name: otlp-http containerPort: 4318 protocol: TCP - name: prometheus containerPort: 9464 protocol: TCP - name: zipkin containerPort: 9411 protocol: TCP env: - name: MY_POD_IP valueFrom: fieldRef: apiVersion: v1 fieldPath: status.podIP livenessProbe: httpGet: path: / port: 13133 readinessProbe: httpGet: path: / port: 13133 resources: limits: memory: 125Mi volumeMounts: - mountPath: /conf name: opentelemetry-collector-configmap volumes: - name: opentelemetry-collector-configmap configMap: name: opentelemetry-demo-otelcol items: - key: relay path: relay.yaml hostNetwork: false --- # Source: opentelemetry-demo/charts/prometheus/templates/deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm name: opentelemetry-demo-prometheus-server namespace: otel-demo spec: selector: matchLabels: component: "server" app: prometheus release: opentelemetry-demo replicas: 1 strategy: type: Recreate rollingUpdate: null template: metadata: labels: component: "server" app: prometheus release: opentelemetry-demo chart: prometheus-20.2.0 heritage: Helm spec: enableServiceLinks: true serviceAccountName: opentelemetry-demo-prometheus-server containers: - name: prometheus-server image: "quay.io/prometheus/prometheus:v2.43.0" imagePullPolicy: "IfNotPresent" args: - --storage.tsdb.retention.time=15d - --config.file=/etc/config/prometheus.yml - --storage.tsdb.path=/data - --web.console.libraries=/etc/prometheus/console_libraries - --web.console.templates=/etc/prometheus/consoles - --enable-feature=exemplar-storage ports: - containerPort: 9090 readinessProbe: httpGet: path: /-/ready port: 9090 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 5 timeoutSeconds: 4 failureThreshold: 3 successThreshold: 1 livenessProbe: httpGet: path: /-/healthy port: 9090 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 15 timeoutSeconds: 10 failureThreshold: 3 successThreshold: 1 resources: limits: memory: 300Mi volumeMounts: - name: config-volume mountPath: /etc/config - name: storage-volume mountPath: /data subPath: "" dnsPolicy: ClusterFirst securityContext: fsGroup: 65534 runAsGroup: 65534 runAsNonRoot: true runAsUser: 65534 terminationGracePeriodSeconds: 300 volumes: - name: config-volume configMap: name: opentelemetry-demo-prometheus-server - name: storage-volume emptyDir: {} --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-accountingservice labels: opentelemetry.io/name: opentelemetry-demo-accountingservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: accountingservice app.kubernetes.io/name: opentelemetry-demo-accountingservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-accountingservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-accountingservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: accountingservice app.kubernetes.io/name: opentelemetry-demo-accountingservice spec: serviceAccountName: opentelemetry-demo containers: - name: accountingservice image: 'ghcr.io/open-telemetry/demo:1.4.0-accountingservice' imagePullPolicy: IfNotPresent env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: KAFKA_SERVICE_ADDR value: 'opentelemetry-demo-kafka:9092' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi initContainers: - command: - sh - -c - until nc -z -v -w30 opentelemetry-demo-kafka 9092; do echo waiting for kafka; sleep 2; done; image: busybox:latest name: wait-for-kafka --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-adservice labels: opentelemetry.io/name: opentelemetry-demo-adservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: adservice app.kubernetes.io/name: opentelemetry-demo-adservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-adservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-adservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: adservice app.kubernetes.io/name: opentelemetry-demo-adservice spec: serviceAccountName: opentelemetry-demo containers: - name: adservice image: 'ghcr.io/open-telemetry/demo:1.4.0-adservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: AD_SERVICE_PORT value: "8080" - name: FEATURE_FLAG_GRPC_SERVICE_ADDR value: 'opentelemetry-demo-featureflagservice:50053' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTLP_LOGS_EXPORTER value: otlp - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 300Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-cartservice labels: opentelemetry.io/name: opentelemetry-demo-cartservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: cartservice app.kubernetes.io/name: opentelemetry-demo-cartservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-cartservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-cartservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: cartservice app.kubernetes.io/name: opentelemetry-demo-cartservice spec: serviceAccountName: opentelemetry-demo containers: - name: cartservice image: 'ghcr.io/open-telemetry/demo:1.4.0-cartservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: CART_SERVICE_PORT value: "8080" - name: ASPNETCORE_URLS value: http://*:$(CART_SERVICE_PORT) - name: REDIS_ADDR value: 'opentelemetry-demo-redis:6379' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 160Mi initContainers: - command: - sh - -c - until nc -z -v -w30 opentelemetry-demo-redis 6379; do echo waiting for redis; sleep 2; done; image: busybox:latest name: wait-for-redis --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-checkoutservice labels: opentelemetry.io/name: opentelemetry-demo-checkoutservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: checkoutservice app.kubernetes.io/name: opentelemetry-demo-checkoutservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-checkoutservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-checkoutservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: checkoutservice app.kubernetes.io/name: opentelemetry-demo-checkoutservice spec: serviceAccountName: opentelemetry-demo containers: - name: checkoutservice image: 'ghcr.io/open-telemetry/demo:1.4.0-checkoutservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: CHECKOUT_SERVICE_PORT value: "8080" - name: CART_SERVICE_ADDR value: 'opentelemetry-demo-cartservice:8080' - name: CURRENCY_SERVICE_ADDR value: 'opentelemetry-demo-currencyservice:8080' - name: EMAIL_SERVICE_ADDR value: http://opentelemetry-demo-emailservice:8080 - name: PAYMENT_SERVICE_ADDR value: 'opentelemetry-demo-paymentservice:8080' - name: PRODUCT_CATALOG_SERVICE_ADDR value: 'opentelemetry-demo-productcatalogservice:8080' - name: SHIPPING_SERVICE_ADDR value: 'opentelemetry-demo-shippingservice:8080' - name: KAFKA_SERVICE_ADDR value: 'opentelemetry-demo-kafka:9092' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi initContainers: - command: - sh - -c - until nc -z -v -w30 opentelemetry-demo-kafka 9092; do echo waiting for kafka; sleep 2; done; image: busybox:latest name: wait-for-kafka --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-currencyservice labels: opentelemetry.io/name: opentelemetry-demo-currencyservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: currencyservice app.kubernetes.io/name: opentelemetry-demo-currencyservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-currencyservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-currencyservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: currencyservice app.kubernetes.io/name: opentelemetry-demo-currencyservice spec: serviceAccountName: opentelemetry-demo containers: - name: currencyservice image: 'ghcr.io/open-telemetry/demo:1.4.0-currencyservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: CURRENCY_SERVICE_PORT value: "8080" - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-emailservice labels: opentelemetry.io/name: opentelemetry-demo-emailservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: emailservice app.kubernetes.io/name: opentelemetry-demo-emailservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-emailservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-emailservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: emailservice app.kubernetes.io/name: opentelemetry-demo-emailservice spec: serviceAccountName: opentelemetry-demo containers: - name: emailservice image: 'ghcr.io/open-telemetry/demo:1.4.0-emailservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: EMAIL_SERVICE_PORT value: "8080" - name: APP_ENV value: production - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4318/v1/traces - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 100Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-featureflagservice labels: opentelemetry.io/name: opentelemetry-demo-featureflagservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: featureflagservice app.kubernetes.io/name: opentelemetry-demo-featureflagservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-featureflagservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-featureflagservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: featureflagservice app.kubernetes.io/name: opentelemetry-demo-featureflagservice spec: serviceAccountName: opentelemetry-demo containers: - name: featureflagservice image: 'ghcr.io/open-telemetry/demo:1.4.0-featureflagservice' imagePullPolicy: IfNotPresent ports: - containerPort: 50053 name: grpc - containerPort: 8081 name: http env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: FEATURE_FLAG_SERVICE_PORT value: "8081" - name: FEATURE_FLAG_GRPC_SERVICE_PORT value: "50053" - name: DATABASE_URL value: ecto://ffs:ffs@opentelemetry-demo-ffspostgres:5432/ffs - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL value: grpc - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 175Mi livenessProbe: httpGet: path: /featureflags/ port: 8081 initialDelaySeconds: 30 periodSeconds: 10 initContainers: - command: - sh - -c - until nc -z -v -w30 opentelemetry-demo-ffspostgres 5432; do echo waiting for ffspostgres; sleep 2; done image: busybox:latest name: wait-for-ffspostgres --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-ffspostgres labels: opentelemetry.io/name: opentelemetry-demo-ffspostgres app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: ffspostgres app.kubernetes.io/name: opentelemetry-demo-ffspostgres app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-ffspostgres template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-ffspostgres app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: ffspostgres app.kubernetes.io/name: opentelemetry-demo-ffspostgres spec: serviceAccountName: opentelemetry-demo containers: - name: ffspostgres image: 'postgres:14' imagePullPolicy: IfNotPresent ports: - containerPort: 5432 name: postgres env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: POSTGRES_DB value: ffs - name: POSTGRES_USER value: ffs - name: POSTGRES_PASSWORD value: ffs - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 120Mi securityContext: runAsGroup: 999 runAsNonRoot: true runAsUser: 999 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-frauddetectionservice labels: opentelemetry.io/name: opentelemetry-demo-frauddetectionservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frauddetectionservice app.kubernetes.io/name: opentelemetry-demo-frauddetectionservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-frauddetectionservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-frauddetectionservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frauddetectionservice app.kubernetes.io/name: opentelemetry-demo-frauddetectionservice spec: serviceAccountName: opentelemetry-demo containers: - name: frauddetectionservice image: 'ghcr.io/open-telemetry/demo:1.4.0-frauddetectionservice' imagePullPolicy: IfNotPresent env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: KAFKA_SERVICE_ADDR value: 'opentelemetry-demo-kafka:9092' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 200Mi initContainers: - command: - sh - -c - until nc -z -v -w30 opentelemetry-demo-kafka 9092; do echo waiting for kafka; sleep 2; done; image: busybox:latest name: wait-for-kafka --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-frontend labels: opentelemetry.io/name: opentelemetry-demo-frontend app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontend app.kubernetes.io/name: opentelemetry-demo-frontend app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-frontend template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-frontend app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontend app.kubernetes.io/name: opentelemetry-demo-frontend spec: serviceAccountName: opentelemetry-demo containers: - name: frontend image: 'ghcr.io/open-telemetry/demo:1.4.0-frontend' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: FRONTEND_PORT value: "8080" - name: FRONTEND_ADDR value: :8080 - name: AD_SERVICE_ADDR value: 'opentelemetry-demo-adservice:8080' - name: CART_SERVICE_ADDR value: 'opentelemetry-demo-cartservice:8080' - name: CHECKOUT_SERVICE_ADDR value: 'opentelemetry-demo-checkoutservice:8080' - name: CURRENCY_SERVICE_ADDR value: 'opentelemetry-demo-currencyservice:8080' - name: PRODUCT_CATALOG_SERVICE_ADDR value: 'opentelemetry-demo-productcatalogservice:8080' - name: RECOMMENDATION_SERVICE_ADDR value: 'opentelemetry-demo-recommendationservice:8080' - name: SHIPPING_SERVICE_ADDR value: 'opentelemetry-demo-shippingservice:8080' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: WEB_OTEL_SERVICE_NAME value: frontend-web - name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://localhost:8080/oltp-http/v1/traces - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 200Mi securityContext: runAsGroup: 1001 runAsNonRoot: true runAsUser: 1001 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-frontendproxy labels: opentelemetry.io/name: opentelemetry-demo-frontendproxy app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontendproxy app.kubernetes.io/name: opentelemetry-demo-frontendproxy app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-frontendproxy template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-frontendproxy app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: frontendproxy app.kubernetes.io/name: opentelemetry-demo-frontendproxy spec: serviceAccountName: opentelemetry-demo containers: - name: frontendproxy image: 'ghcr.io/open-telemetry/demo:1.4.0-frontendproxy' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: ENVOY_PORT value: "8080" - name: FRONTEND_PORT value: "8080" - name: FRONTEND_HOST value: 'opentelemetry-demo-frontend' - name: FEATURE_FLAG_SERVICE_PORT value: "8081" - name: FEATURE_FLAG_SERVICE_HOST value: 'opentelemetry-demo-featureflagservice' - name: LOCUST_WEB_PORT value: "8089" - name: LOCUST_WEB_HOST value: 'opentelemetry-demo-loadgenerator' - name: GRAFANA_SERVICE_PORT value: "80" - name: GRAFANA_SERVICE_HOST value: 'opentelemetry-demo-grafana' - name: JAEGER_SERVICE_PORT value: "16686" - name: JAEGER_SERVICE_HOST value: 'opentelemetry-demo-jaeger-query' - name: OTEL_COLLECTOR_PORT_GRPC value: "4317" - name: OTEL_COLLECTOR_PORT_HTTP value: "4318" - name: OTEL_COLLECTOR_HOST value: $(OTEL_COLLECTOR_NAME) - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 50Mi securityContext: runAsGroup: 101 runAsNonRoot: true runAsUser: 101 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-kafka labels: opentelemetry.io/name: opentelemetry-demo-kafka app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: kafka app.kubernetes.io/name: opentelemetry-demo-kafka app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-kafka template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-kafka app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: kafka app.kubernetes.io/name: opentelemetry-demo-kafka spec: serviceAccountName: opentelemetry-demo containers: - name: kafka image: 'ghcr.io/open-telemetry/demo:1.4.0-kafka' imagePullPolicy: IfNotPresent ports: - containerPort: 9092 name: plaintext - containerPort: 9093 name: controller env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: KAFKA_ADVERTISED_LISTENERS value: PLAINTEXT://opentelemetry-demo-kafka:9092 - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: KAFKA_HEAP_OPTS value: -Xmx200M -Xms200M - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 500Mi securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-loadgenerator labels: opentelemetry.io/name: opentelemetry-demo-loadgenerator app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: loadgenerator app.kubernetes.io/name: opentelemetry-demo-loadgenerator app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-loadgenerator template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-loadgenerator app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: loadgenerator app.kubernetes.io/name: opentelemetry-demo-loadgenerator spec: serviceAccountName: opentelemetry-demo containers: - name: loadgenerator image: 'ghcr.io/open-telemetry/demo:1.4.0-loadgenerator' imagePullPolicy: IfNotPresent ports: - containerPort: 8089 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: LOCUST_WEB_PORT value: "8089" - name: LOCUST_USERS value: "10" - name: LOCUST_SPAWN_RATE value: "1" - name: LOCUST_HOST value: http://opentelemetry-demo-frontend:8080 - name: LOCUST_HEADLESS value: "false" - name: LOCUST_AUTOSTART value: "true" - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION value: python - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4318/v1/traces - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 120Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-paymentservice labels: opentelemetry.io/name: opentelemetry-demo-paymentservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: paymentservice app.kubernetes.io/name: opentelemetry-demo-paymentservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-paymentservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-paymentservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: paymentservice app.kubernetes.io/name: opentelemetry-demo-paymentservice spec: serviceAccountName: opentelemetry-demo containers: - name: paymentservice image: 'ghcr.io/open-telemetry/demo:1.4.0-paymentservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: PAYMENT_SERVICE_PORT value: "8080" - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 120Mi securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 1000 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-productcatalogservice labels: opentelemetry.io/name: opentelemetry-demo-productcatalogservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: productcatalogservice app.kubernetes.io/name: opentelemetry-demo-productcatalogservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-productcatalogservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-productcatalogservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: productcatalogservice app.kubernetes.io/name: opentelemetry-demo-productcatalogservice spec: serviceAccountName: opentelemetry-demo containers: - name: productcatalogservice image: 'ghcr.io/open-telemetry/demo:1.4.0-productcatalogservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: PRODUCT_CATALOG_SERVICE_PORT value: "8080" - name: FEATURE_FLAG_GRPC_SERVICE_ADDR value: 'opentelemetry-demo-featureflagservice:50053' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-quoteservice labels: opentelemetry.io/name: opentelemetry-demo-quoteservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: quoteservice app.kubernetes.io/name: opentelemetry-demo-quoteservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-quoteservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-quoteservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: quoteservice app.kubernetes.io/name: opentelemetry-demo-quoteservice spec: serviceAccountName: opentelemetry-demo containers: - name: quoteservice image: 'ghcr.io/open-telemetry/demo:1.4.0-quoteservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: QUOTE_SERVICE_PORT value: "8080" - name: OTEL_PHP_AUTOLOAD_ENABLED value: "true" - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4318 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 40Mi securityContext: runAsGroup: 33 runAsNonRoot: true runAsUser: 33 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-recommendationservice labels: opentelemetry.io/name: opentelemetry-demo-recommendationservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: recommendationservice app.kubernetes.io/name: opentelemetry-demo-recommendationservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-recommendationservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-recommendationservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: recommendationservice app.kubernetes.io/name: opentelemetry-demo-recommendationservice spec: serviceAccountName: opentelemetry-demo containers: - name: recommendationservice image: 'ghcr.io/open-telemetry/demo:1.4.0-recommendationservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: RECOMMENDATION_SERVICE_PORT value: "8080" - name: PRODUCT_CATALOG_SERVICE_ADDR value: 'opentelemetry-demo-productcatalogservice:8080' - name: FEATURE_FLAG_GRPC_SERVICE_ADDR value: 'opentelemetry-demo-featureflagservice:50053' - name: OTEL_PYTHON_LOG_CORRELATION value: "true" - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION value: python - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317 - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 500Mi --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-redis labels: opentelemetry.io/name: opentelemetry-demo-redis app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: redis app.kubernetes.io/name: opentelemetry-demo-redis app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-redis template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-redis app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: redis app.kubernetes.io/name: opentelemetry-demo-redis spec: serviceAccountName: opentelemetry-demo containers: - name: redis image: 'redis:alpine' imagePullPolicy: IfNotPresent ports: - containerPort: 6379 name: redis env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi securityContext: runAsGroup: 1000 runAsNonRoot: true runAsUser: 999 --- # Source: opentelemetry-demo/templates/component.yaml apiVersion: apps/v1 kind: Deployment metadata: name: opentelemetry-demo-shippingservice labels: opentelemetry.io/name: opentelemetry-demo-shippingservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: shippingservice app.kubernetes.io/name: opentelemetry-demo-shippingservice app.kubernetes.io/version: "1.4.0" app.kubernetes.io/part-of: opentelemetry-demo spec: selector: matchLabels: opentelemetry.io/name: opentelemetry-demo-shippingservice template: metadata: labels: opentelemetry.io/name: opentelemetry-demo-shippingservice app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/component: shippingservice app.kubernetes.io/name: opentelemetry-demo-shippingservice spec: serviceAccountName: opentelemetry-demo containers: - name: shippingservice image: 'ghcr.io/open-telemetry/demo:1.4.0-shippingservice' imagePullPolicy: IfNotPresent ports: - containerPort: 8080 name: service env: - name: OTEL_SERVICE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.labels['app.kubernetes.io/component'] - name: OTEL_K8S_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: OTEL_K8S_NODE_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: spec.nodeName - name: OTEL_K8S_POD_NAME valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.name - name: OTEL_K8S_POD_UID valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.uid - name: OTEL_COLLECTOR_NAME value: 'opentelemetry-demo-otelcol' - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative - name: SHIPPING_SERVICE_PORT value: "8080" - name: QUOTE_SERVICE_ADDR value: http://opentelemetry-demo-quoteservice:8080 - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(OTEL_COLLECTOR_NAME):4317/v1/traces - name: OTEL_RESOURCE_ATTRIBUTES value: service.name=$(OTEL_SERVICE_NAME),service.instance.id=$(OTEL_K8S_POD_UID),service.namespace=opentelemetry-demo,k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) resources: limits: memory: 20Mi --- # Source: opentelemetry-demo/charts/grafana/templates/tests/test-serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" name: opentelemetry-demo-grafana-test namespace: otel-demo annotations: --- # Source: opentelemetry-demo/charts/grafana/templates/tests/test-configmap.yaml apiVersion: v1 kind: ConfigMap metadata: name: opentelemetry-demo-grafana-test namespace: otel-demo annotations: labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" data: run.sh: |- @test "Test Health" { url="http://opentelemetry-demo-grafana/api/health" code=$(wget --server-response --spider --timeout 90 --tries 10 ${url} 2>&1 | awk '/^ HTTP/{print $2}') [ "$code" == "200" ] } --- # Source: opentelemetry-demo/charts/grafana/templates/tests/test.yaml apiVersion: v1 kind: Pod metadata: name: opentelemetry-demo-grafana-test labels: app.kubernetes.io/name: grafana app.kubernetes.io/instance: opentelemetry-demo app.kubernetes.io/version: "9.4.7" annotations: namespace: otel-demo spec: serviceAccountName: opentelemetry-demo-grafana-test containers: - name: opentelemetry-demo-test image: "bats/bats:v1.4.1" imagePullPolicy: "IfNotPresent" command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] volumeMounts: - mountPath: /tests name: tests readOnly: true volumes: - name: tests configMap: name: opentelemetry-demo-grafana-test restartPolicy: Never