Feat : Update PR as comment
This commit is contained in:
264
install/network-observability/docker-compose.yml
Normal file
264
install/network-observability/docker-compose.yml
Normal file
@@ -0,0 +1,264 @@
|
||||
# Network observability + BAP/BPP adapters + BPP sandbox
|
||||
# Builds Onix adapter once; BAP uses config/local-beckn-one-bap.yaml, BPP uses config/local-beckn-one-bpp.yaml.
|
||||
# No mock-registry: BAP/BPP use real registry (api.testnet.beckn.one) from config.
|
||||
# Run from repo root: docker compose -f install/network-observability/docker-compose.yml up -d
|
||||
# UIs: Grafana http://localhost:3000 | Jaeger http://localhost:16686 | BAP http://localhost:8081 | BPP http://localhost:8082
|
||||
|
||||
services:
|
||||
redis:
|
||||
image: redis:alpine
|
||||
pull_policy: always
|
||||
container_name: redis-onix
|
||||
ports:
|
||||
- "6379:6379"
|
||||
command: redis-server --requirepass your-redis-password
|
||||
networks:
|
||||
beckn_network:
|
||||
aliases:
|
||||
- redis
|
||||
healthcheck:
|
||||
test: ["CMD", "redis-cli", "-a", "your-redis-password", "ping"]
|
||||
interval: 5s
|
||||
timeout: 3s
|
||||
retries: 5
|
||||
restart: unless-stopped
|
||||
|
||||
onix-bap:
|
||||
build:
|
||||
context: ../..
|
||||
dockerfile: Dockerfile.adapter-with-plugins
|
||||
image: onix-adapter:local
|
||||
container_name: onix-bap
|
||||
ports:
|
||||
- "8081:8081"
|
||||
volumes:
|
||||
- ../../config:/app/config:ro
|
||||
- ../../schemas:/app/schemas:ro
|
||||
environment:
|
||||
- CONFIG_FILE=/app/config/local-beckn-one-bap.yaml
|
||||
- REDIS_PASSWORD=your-redis-password
|
||||
- OTEL_EXPORTER_OTLP_INSECURE=true
|
||||
- OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector-bap:4317
|
||||
command: ["./server", "--config=/app/config/local-beckn-one-bap.yaml"]
|
||||
networks:
|
||||
- beckn_network
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
otel-collector-bap:
|
||||
condition: service_started
|
||||
|
||||
onix-bpp:
|
||||
image: onix-adapter:local
|
||||
container_name: onix-bpp
|
||||
ports:
|
||||
- "8082:8082"
|
||||
volumes:
|
||||
- ../../config:/app/config:ro
|
||||
- ../../schemas:/app/schemas:ro
|
||||
environment:
|
||||
- CONFIG_FILE=/app/config/local-beckn-one-bpp.yaml
|
||||
- REDIS_PASSWORD=your-redis-password
|
||||
- OTEL_EXPORTER_OTLP_INSECURE=true
|
||||
- OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector-bpp:4317
|
||||
command: ["./server", "--config=/app/config/local-beckn-one-bpp.yaml"]
|
||||
networks:
|
||||
- beckn_network
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
redis:
|
||||
condition: service_healthy
|
||||
otel-collector-bpp:
|
||||
condition: service_started
|
||||
|
||||
otel-collector-bap:
|
||||
image: otel/opentelemetry-collector-contrib:latest
|
||||
container_name: otel-collector-bap
|
||||
command: ["--config=/etc/otel/config.yaml"]
|
||||
volumes:
|
||||
- ./otel-collector-bap/config.yaml:/etc/otel/config.yaml:ro
|
||||
ports:
|
||||
- "4317:4317"
|
||||
- "4318:4318"
|
||||
- "8889:8889"
|
||||
networks:
|
||||
- observability
|
||||
- beckn_network
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- otel-collector-network
|
||||
|
||||
otel-collector-bpp:
|
||||
image: otel/opentelemetry-collector-contrib:latest
|
||||
container_name: otel-collector-bpp
|
||||
command: ["--config=/etc/otel/config.yaml"]
|
||||
volumes:
|
||||
- ./otel-collector-bpp/config.yaml:/etc/otel/config.yaml:ro
|
||||
ports:
|
||||
- "4321:4317"
|
||||
- "4322:4318"
|
||||
- "8891:8891"
|
||||
networks:
|
||||
- observability
|
||||
- beckn_network
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- otel-collector-network
|
||||
|
||||
otel-collector-network:
|
||||
image: otel/opentelemetry-collector-contrib:latest
|
||||
container_name: otel-collector-network
|
||||
command: ["--config=/etc/otel/config.yaml"]
|
||||
volumes:
|
||||
- ./otel-collector-network/config.yaml:/etc/otel/config.yaml:ro
|
||||
ports:
|
||||
- "4319:4317"
|
||||
- "4320:4318"
|
||||
- "8890:8890"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
|
||||
zipkin:
|
||||
image: openzipkin/zipkin:latest
|
||||
container_name: zipkin
|
||||
ports:
|
||||
- "9411:9411"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
|
||||
loki:
|
||||
image: grafana/loki:latest
|
||||
container_name: loki
|
||||
command: -config.file=/etc/loki/loki-config.yml
|
||||
volumes:
|
||||
- ./loki/loki-config.yml:/etc/loki/loki-config.yml:ro
|
||||
- loki_data:/loki
|
||||
ports:
|
||||
- "3100:3100"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:latest
|
||||
container_name: prometheus
|
||||
command:
|
||||
- --config.file=/etc/prometheus/prometheus.yml
|
||||
- --storage.tsdb.path=/prometheus
|
||||
- --web.enable-lifecycle
|
||||
volumes:
|
||||
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus_data:/prometheus
|
||||
ports:
|
||||
- "9090:9090"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- otel-collector-bap
|
||||
- otel-collector-bpp
|
||||
|
||||
jaeger:
|
||||
image: jaegertracing/all-in-one:latest
|
||||
container_name: jaeger
|
||||
environment:
|
||||
- COLLECTOR_OTLP_ENABLED=true
|
||||
ports:
|
||||
- "16686:16686"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:latest
|
||||
container_name: grafana
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=admin
|
||||
- GF_SECURITY_ADMIN_PASSWORD=admin
|
||||
- GF_USERS_ALLOW_SIGN_UP=false
|
||||
- GF_SERVER_ROOT_URL=http://localhost:3000
|
||||
volumes:
|
||||
- grafana_data:/var/lib/grafana
|
||||
- ./grafana/provisioning:/etc/grafana/provisioning:ro
|
||||
ports:
|
||||
- "3000:3000"
|
||||
networks:
|
||||
- observability
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- prometheus
|
||||
- jaeger
|
||||
- zipkin
|
||||
- loki
|
||||
|
||||
bpp-client:
|
||||
image: fidedocker/protocol-server
|
||||
container_name: bpp-client
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- beckn_network
|
||||
ports:
|
||||
- "6001:6001"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- bpp_client_config_volume:/usr/src/app/config
|
||||
- bpp_client_schemas_volume:/usr/src/app/schemas
|
||||
- bpp_client_logs_volume:/usr/src/app/logs
|
||||
|
||||
bpp-network:
|
||||
image: fidedocker/protocol-server
|
||||
container_name: bpp-network
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- beckn_network
|
||||
ports:
|
||||
- "6002:6002"
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- bpp_network_config_volume:/usr/src/app/config
|
||||
- bpp_network_schemas_volume:/usr/src/app/schemas
|
||||
- bpp_network_logs_volume:/usr/src/app/logs
|
||||
|
||||
sandbox-api:
|
||||
image: fidedocker/sandbox-api
|
||||
container_name: sandbox-api
|
||||
platform: linux/amd64
|
||||
networks:
|
||||
- beckn_network
|
||||
ports:
|
||||
- "4010:4000"
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- PORT=4000
|
||||
- WEBHOOK_URL=http://host.docker.internal:3001/webhook
|
||||
|
||||
networks:
|
||||
observability:
|
||||
driver: bridge
|
||||
beckn_network:
|
||||
name: beckn_network
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
prometheus_data:
|
||||
grafana_data:
|
||||
loki_data:
|
||||
bpp_client_config_volume:
|
||||
name: bpp_client_config_volume
|
||||
external: true
|
||||
bpp_client_schemas_volume:
|
||||
name: bpp_client_schemas_volume
|
||||
bpp_client_logs_volume:
|
||||
name: bpp_client_logs_volume
|
||||
bpp_network_config_volume:
|
||||
name: bpp_network_config_volume
|
||||
external: true
|
||||
bpp_network_schemas_volume:
|
||||
name: bpp_network_schemas_volume
|
||||
bpp_network_logs_volume:
|
||||
name: bpp_network_logs_volume
|
||||
@@ -0,0 +1,23 @@
|
||||
# Dashboard provisioning - load JSON dashboards from the json folder
|
||||
apiVersion: 1
|
||||
|
||||
providers:
|
||||
- name: 'Application'
|
||||
orgId: 1
|
||||
folder: 'Onix / Application'
|
||||
type: file
|
||||
disableDeletion: false
|
||||
updateIntervalSeconds: 30
|
||||
allowUiUpdates: true
|
||||
options:
|
||||
path: /etc/grafana/provisioning/dashboards/json/application
|
||||
|
||||
- name: 'Network'
|
||||
orgId: 1
|
||||
folder: 'Onix / Network'
|
||||
type: file
|
||||
disableDeletion: false
|
||||
updateIntervalSeconds: 30
|
||||
allowUiUpdates: true
|
||||
options:
|
||||
path: /etc/grafana/provisioning/dashboards/json/network
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
{"annotations":{"list":[]},"editable":true,"fiscalYearStartMonth":0,"graphTooltip":0,"id":null,"links":[],"liveNow":false,"panels":[{"collapsed":false,"gridPos":{"h":1,"w":24,"x":0,"y":0},"id":8,"panels":[],"title":"Search by Trace ID","type":"row"},{"datasource":{"type":"jaeger","uid":"jaeger"},"gridPos":{"h":10,"w":24,"x":0,"y":1},"id":11,"options":{"dedupStrategy":"none","enableLogDetails":true,"showCommonLabels":false,"showProcess":false,"sortOrder":"Descend"},"targets":[{"datasource":{"type":"jaeger","uid":"jaeger"},"queryType":"traceId","query":"${traceID}","refId":"A"}],"title":"Trace by ID","type":"traces"},{"gridPos":{"h":4,"w":24,"x":0,"y":11},"id":9,"options":{"content":"**Search traces**: Use **Jaeger UI** at [http://localhost:16686](http://localhost:16686). Select service **onix-ev-charging-bap** and click **Find Traces**. Alternatively, paste a Trace ID in the panel above.","mode":"markdown"},"title":"Search traces (Jaeger UI)","type":"text"},{"datasource":{"type":"jaeger","uid":"jaeger"},"gridPos":{"h":4,"w":24,"x":0,"y":15},"id":10,"options":{"content":"**Trace ID**: Use the **full 32-character hex** from adapter logs (e.g. `7a385394ee77d4451a1c655c236422fc`). Paste above and refresh. **If you see \"No data\"**: (1) Wait 10–15 s after the request — the adapter batches spans before export. (2) Ensure time range (top right) includes the request time. (3) Use **Jaeger UI** at [http://localhost:16686](http://localhost:16686) (service: **onix-ev-charging-bap**) to search; check `otel-collector` logs for export errors if spans are missing.","mode":"markdown"},"title":"How to use","type":"text"}],"refresh":"30s","schemaVersion":38,"style":"dark","tags":["onix","traces","jaeger"],"templating":{"list":[{"current":{"selected":false,"text":"","value":""},"hide":0,"label":"Trace ID (full 32 hex chars)","name":"traceID","options":[{"selected":true,"text":"","value":""}],"query":"","skipUrlSync":false,"type":"textbox"}]},"time":{"from":"now-1h","to":"now"},"timepicker":{},"timezone":"","title":"Onix Traces","uid":"onix-traces","version":1,"weekStart":""}
|
||||
@@ -0,0 +1,199 @@
|
||||
{
|
||||
"annotations": { "list": [] },
|
||||
"editable": true,
|
||||
"fiscalYearStartMonth": 0,
|
||||
"graphTooltip": 1,
|
||||
"id": null,
|
||||
"links": [
|
||||
{
|
||||
"asDropdown": false,
|
||||
"icon": "external link",
|
||||
"includeVars": false,
|
||||
"keepTime": true,
|
||||
"tags": [],
|
||||
"targetBlank": true,
|
||||
"title": "Zipkin UI",
|
||||
"tooltip": "Open Zipkin UI for network API traces",
|
||||
"type": "link",
|
||||
"url": "http://localhost:9411"
|
||||
}
|
||||
],
|
||||
"liveNow": false,
|
||||
"panels": [
|
||||
{
|
||||
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 0 },
|
||||
"id": 1,
|
||||
"title": "Network Metrics",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"fieldConfig": {
|
||||
"defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisPlacement": "auto" }, "unit": "reqps" },
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 1 },
|
||||
"id": 2,
|
||||
"options": { "legend": { "displayMode": "list", "placement": "bottom" } },
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"expr": "sum(rate({__name__=~\"onix.*http_request_count(_total)?\"}[5m])) by (action)",
|
||||
"legendFormat": "{{action}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "HTTP request rate by action",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"fieldConfig": {
|
||||
"defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisPlacement": "auto" }, "unit": "reqps" },
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 1 },
|
||||
"id": 3,
|
||||
"options": { "legend": { "displayMode": "list", "placement": "bottom" } },
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"expr": "sum(rate({__name__=~\"onix.*http_request_count(_total)?\"}[5m])) by (http_status_code)",
|
||||
"legendFormat": "{{http_status_code}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "HTTP request rate by status",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"fieldConfig": {
|
||||
"defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisPlacement": "auto" }, "unit": "reqps" },
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 9 },
|
||||
"id": 4,
|
||||
"options": { "legend": { "displayMode": "list", "placement": "bottom" } },
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"expr": "sum(rate({__name__=~\"onix.*http_request_count(_total)?\"}[5m])) by (role)",
|
||||
"legendFormat": "{{role}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "HTTP request rate by role",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"fieldConfig": {
|
||||
"defaults": { "color": { "mode": "palette-classic" }, "custom": { "axisPlacement": "auto" }, "unit": "reqps" },
|
||||
"overrides": []
|
||||
},
|
||||
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 9 },
|
||||
"id": 5,
|
||||
"options": { "legend": { "displayMode": "list", "placement": "bottom" } },
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "prometheus", "uid": "prometheus" },
|
||||
"expr": "sum(rate({__name__=~\"onix.*http_request_count(_total)?\"}[5m])) by (caller)",
|
||||
"legendFormat": "{{caller}}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "HTTP request rate by caller",
|
||||
"type": "timeseries"
|
||||
},
|
||||
{
|
||||
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 17 },
|
||||
"id": 6,
|
||||
"title": "Network Logs (Beckn Audit)",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "loki", "uid": "loki" },
|
||||
"gridPos": { "h": 12, "w": 24, "x": 0, "y": 18 },
|
||||
"id": 7,
|
||||
"options": {
|
||||
"dedupStrategy": "none",
|
||||
"enableLogDetails": true,
|
||||
"prettifyLogMessage": false,
|
||||
"showCommonLabels": false,
|
||||
"showLabels": false,
|
||||
"showTime": true,
|
||||
"sortOrder": "Descend",
|
||||
"wrapLogMessage": false
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "loki", "uid": "loki" },
|
||||
"expr": "{service_name=~\"onix.*|beckn.*\"}",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Beckn audit logs (onix/beckn)",
|
||||
"type": "logs"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "loki", "uid": "loki" },
|
||||
"gridPos": { "h": 8, "w": 24, "x": 0, "y": 24 },
|
||||
"id": 71,
|
||||
"options": { "dedupStrategy": "none", "enableLogDetails": true, "showCommonLabels": true, "showLabels": true, "showTime": true, "sortOrder": "Descend" },
|
||||
"targets": [{ "datasource": { "type": "loki", "uid": "loki" }, "expr": "{}", "refId": "A" }],
|
||||
"title": "All logs (debug: matches any)",
|
||||
"type": "logs"
|
||||
},
|
||||
{
|
||||
"gridPos": { "h": 1, "w": 24, "x": 0, "y": 32 },
|
||||
"id": 8,
|
||||
"title": "Network Traces",
|
||||
"type": "row"
|
||||
},
|
||||
{
|
||||
"datasource": { "type": "zipkin", "uid": "zipkin" },
|
||||
"gridPos": { "h": 12, "w": 24, "x": 0, "y": 33 },
|
||||
"id": 9,
|
||||
"options": {
|
||||
"dedupStrategy": "none",
|
||||
"enableLogDetails": true,
|
||||
"showCommonLabels": false,
|
||||
"showProcess": false,
|
||||
"sortOrder": "Descend"
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"datasource": { "type": "zipkin", "uid": "zipkin" },
|
||||
"query": "",
|
||||
"queryType": "traceqlSearch",
|
||||
"refId": "A"
|
||||
}
|
||||
],
|
||||
"title": "Network API spans (Zipkin)",
|
||||
"type": "traces"
|
||||
},
|
||||
{
|
||||
"gridPos": { "h": 4, "w": 24, "x": 0, "y": 45 },
|
||||
"id": 10,
|
||||
"options": {
|
||||
"content": "**Network-level observability**: Beckn API spans, audit logs, and HTTP request metrics from the network pipeline.\n\n**No Loki/Zipkin data?** 1) Restart stack after config changes: `docker compose -f network_observability/docker-compose.yml up -d --force-recreate`. 2) Trigger requests to generate audit logs (EmitAuditLogs runs on each request). 3) Use [Zipkin UI](http://localhost:9411) to search traces. 4) In Grafana Explore (Loki), try `{}` or `{service_name=~\".+\"}` to see all logs.",
|
||||
"mode": "markdown"
|
||||
},
|
||||
"title": "About",
|
||||
"type": "text"
|
||||
}
|
||||
],
|
||||
"refresh": "10s",
|
||||
"schemaVersion": 38,
|
||||
"style": "dark",
|
||||
"tags": ["onix", "network", "observability"],
|
||||
"templating": { "list": [] },
|
||||
"time": { "from": "now-1h", "to": "now" },
|
||||
"timepicker": {},
|
||||
"timezone": "",
|
||||
"title": "Network Observability",
|
||||
"uid": "network-observability",
|
||||
"version": 1,
|
||||
"weekStart": ""
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
# Grafana datasources - provisioned on startup
|
||||
apiVersion: 1
|
||||
|
||||
datasources:
|
||||
- name: Prometheus
|
||||
uid: prometheus
|
||||
type: prometheus
|
||||
access: proxy
|
||||
url: http://prometheus:9090
|
||||
isDefault: true
|
||||
editable: false
|
||||
|
||||
- name: Jaeger
|
||||
uid: jaeger
|
||||
type: jaeger
|
||||
access: proxy
|
||||
url: http://jaeger:16686
|
||||
editable: false
|
||||
|
||||
- name: Loki
|
||||
uid: loki
|
||||
type: loki
|
||||
access: proxy
|
||||
url: http://loki:3100
|
||||
editable: false
|
||||
|
||||
- name: Zipkin
|
||||
uid: zipkin
|
||||
type: zipkin
|
||||
access: proxy
|
||||
url: http://zipkin:9411
|
||||
editable: false
|
||||
35
install/network-observability/loki/loki-config.yml
Normal file
35
install/network-observability/loki/loki-config.yml
Normal file
@@ -0,0 +1,35 @@
|
||||
# Loki config for network-level audit logs (OTLP ingestion)
|
||||
# OTLP requires allow_structured_metadata for Loki 3.x
|
||||
|
||||
auth_enabled: false
|
||||
|
||||
server:
|
||||
http_listen_port: 3100
|
||||
|
||||
common:
|
||||
instance_addr: 127.0.0.1
|
||||
path_prefix: /loki
|
||||
storage:
|
||||
filesystem:
|
||||
chunks_directory: /loki/chunks
|
||||
rules_directory: /loki/rules
|
||||
replication_factor: 1
|
||||
ring:
|
||||
kvstore:
|
||||
store: inmemory
|
||||
|
||||
limits_config:
|
||||
allow_structured_metadata: true
|
||||
|
||||
schema_config:
|
||||
configs:
|
||||
- from: 2020-10-24
|
||||
store: tsdb
|
||||
object_store: filesystem
|
||||
schema: v13
|
||||
index:
|
||||
prefix: index_
|
||||
period: 24h
|
||||
|
||||
ruler:
|
||||
alertmanager_url: http://localhost:9093
|
||||
83
install/network-observability/otel-collector-bap/config.yaml
Normal file
83
install/network-observability/otel-collector-bap/config.yaml
Normal file
@@ -0,0 +1,83 @@
|
||||
# OpenTelemetry Collector BAP - receives OTLP from BAP adapter (local-beckn-one-bap.yaml)
|
||||
# App-level: all signals to Prometheus and Jaeger. Network-level: filtered to otel-collector-network.
|
||||
|
||||
receivers:
|
||||
otlp:
|
||||
protocols:
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:4317
|
||||
|
||||
processors:
|
||||
batch:
|
||||
send_batch_size: 1024
|
||||
timeout: 10s
|
||||
batch/traces:
|
||||
send_batch_size: 1024
|
||||
timeout: 2s
|
||||
|
||||
filter/network_metrics:
|
||||
error_mode: ignore
|
||||
metrics:
|
||||
metric:
|
||||
- 'name != "onix_http_request_count"'
|
||||
|
||||
filter/network_traces:
|
||||
error_mode: ignore
|
||||
traces:
|
||||
span:
|
||||
- 'attributes["sender.id"] == nil'
|
||||
|
||||
exporters:
|
||||
prometheus:
|
||||
endpoint: "0.0.0.0:8889"
|
||||
namespace: onix
|
||||
const_labels:
|
||||
observability: otel-collector-bap
|
||||
service_name: beckn-one-bap
|
||||
|
||||
otlp_grpc/jaeger:
|
||||
endpoint: jaeger:4317
|
||||
tls:
|
||||
insecure: true
|
||||
|
||||
otlp_http/collector2:
|
||||
endpoint: http://otel-collector-network:4318
|
||||
compression: gzip
|
||||
|
||||
extensions:
|
||||
health_check:
|
||||
endpoint: 0.0.0.0:13133
|
||||
zpages:
|
||||
endpoint: 0.0.0.0:55679
|
||||
|
||||
service:
|
||||
extensions: [health_check, zpages]
|
||||
pipelines:
|
||||
metrics/app:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [prometheus]
|
||||
|
||||
metrics/network:
|
||||
receivers: [otlp]
|
||||
processors: [filter/network_metrics, batch]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
traces/app:
|
||||
receivers: [otlp]
|
||||
processors: [batch/traces]
|
||||
exporters: [otlp_grpc/jaeger]
|
||||
|
||||
traces/network:
|
||||
receivers: [otlp]
|
||||
processors: [filter/network_traces, batch/traces]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
logs/network:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
telemetry:
|
||||
logs:
|
||||
level: info
|
||||
83
install/network-observability/otel-collector-bpp/config.yaml
Normal file
83
install/network-observability/otel-collector-bpp/config.yaml
Normal file
@@ -0,0 +1,83 @@
|
||||
# OpenTelemetry Collector BPP - receives OTLP from BPP adapter (local-beckn-one-bpp.yaml)
|
||||
# App-level: all signals to Prometheus and Jaeger. Network-level: filtered to otel-collector-network.
|
||||
|
||||
receivers:
|
||||
otlp:
|
||||
protocols:
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:4317
|
||||
|
||||
processors:
|
||||
batch:
|
||||
send_batch_size: 1024
|
||||
timeout: 10s
|
||||
batch/traces:
|
||||
send_batch_size: 1024
|
||||
timeout: 2s
|
||||
|
||||
filter/network_metrics:
|
||||
error_mode: ignore
|
||||
metrics:
|
||||
metric:
|
||||
- 'name != "onix_http_request_count"'
|
||||
|
||||
filter/network_traces:
|
||||
error_mode: ignore
|
||||
traces:
|
||||
span:
|
||||
- 'attributes["sender.id"] == nil'
|
||||
|
||||
exporters:
|
||||
prometheus:
|
||||
endpoint: "0.0.0.0:8891"
|
||||
namespace: onix
|
||||
const_labels:
|
||||
observability: otel-collector-bpp
|
||||
service_name: beckn-one-bpp
|
||||
|
||||
otlp_grpc/jaeger:
|
||||
endpoint: jaeger:4317
|
||||
tls:
|
||||
insecure: true
|
||||
|
||||
otlp_http/collector2:
|
||||
endpoint: http://otel-collector-network:4318
|
||||
compression: gzip
|
||||
|
||||
extensions:
|
||||
health_check:
|
||||
endpoint: 0.0.0.0:13133
|
||||
zpages:
|
||||
endpoint: 0.0.0.0:55679
|
||||
|
||||
service:
|
||||
extensions: [health_check, zpages]
|
||||
pipelines:
|
||||
metrics/app:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [prometheus]
|
||||
|
||||
metrics/network:
|
||||
receivers: [otlp]
|
||||
processors: [filter/network_metrics, batch]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
traces/app:
|
||||
receivers: [otlp]
|
||||
processors: [batch/traces]
|
||||
exporters: [otlp_grpc/jaeger]
|
||||
|
||||
traces/network:
|
||||
receivers: [otlp]
|
||||
processors: [filter/network_traces, batch/traces]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
logs/network:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [otlp_http/collector2]
|
||||
|
||||
telemetry:
|
||||
logs:
|
||||
level: info
|
||||
@@ -0,0 +1,60 @@
|
||||
# Collector 2 - receives network-level OTLP from Collector 1, exports to Loki, Zipkin, Prometheus
|
||||
|
||||
receivers:
|
||||
otlp:
|
||||
protocols:
|
||||
http:
|
||||
endpoint: 0.0.0.0:4318
|
||||
grpc:
|
||||
endpoint: 0.0.0.0:4317
|
||||
|
||||
processors:
|
||||
# Map Beckn transaction_id -> trace_id and message_id -> span_id for UI correlation.
|
||||
# UUID format: remove hyphens for trace_id (32 hex chars); first 16 hex chars for span_id.
|
||||
transform/beckn_ids:
|
||||
error_mode: ignore
|
||||
trace_statements:
|
||||
- set(span.attributes["_beckn_tx"], span.attributes["transaction_id"]) where span.attributes["transaction_id"] != nil
|
||||
- replace_pattern(span.attributes["_beckn_tx"], "-", "") where span.attributes["_beckn_tx"] != nil
|
||||
- set(span.trace_id, TraceID(span.attributes["_beckn_tx"])) where span.attributes["_beckn_tx"] != nil
|
||||
|
||||
|
||||
batch:
|
||||
send_batch_size: 1024
|
||||
timeout: 10s
|
||||
|
||||
exporters:
|
||||
prometheus:
|
||||
endpoint: "0.0.0.0:8890"
|
||||
namespace: onix_network
|
||||
const_labels:
|
||||
observability: network-level
|
||||
|
||||
zipkin:
|
||||
endpoint: http://zipkin:9411/api/v2/spans
|
||||
format: json
|
||||
|
||||
otlphttp/loki:
|
||||
endpoint: http://loki:3100/otlp
|
||||
compression: gzip
|
||||
|
||||
service:
|
||||
pipelines:
|
||||
metrics:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [prometheus]
|
||||
|
||||
traces:
|
||||
receivers: [otlp]
|
||||
processors: [transform/beckn_ids, batch]
|
||||
exporters: [zipkin]
|
||||
|
||||
logs:
|
||||
receivers: [otlp]
|
||||
processors: [batch]
|
||||
exporters: [otlphttp/loki]
|
||||
|
||||
telemetry:
|
||||
logs:
|
||||
level: info
|
||||
20
install/network-observability/prometheus/prometheus.yml
Normal file
20
install/network-observability/prometheus/prometheus.yml
Normal file
@@ -0,0 +1,20 @@
|
||||
# Prometheus - scrapes metrics from OTEL Collectors (BAP, BPP, network)
|
||||
global:
|
||||
scrape_interval: 15s
|
||||
evaluation_interval: 15s
|
||||
|
||||
scrape_configs:
|
||||
- job_name: "otel-collector-bap"
|
||||
static_configs:
|
||||
- targets: ["otel-collector-bap:8889"]
|
||||
metrics_path: /metrics
|
||||
|
||||
- job_name: "otel-collector-bpp"
|
||||
static_configs:
|
||||
- targets: ["otel-collector-bpp:8891"]
|
||||
metrics_path: /metrics
|
||||
|
||||
- job_name: "otel-collector-network"
|
||||
static_configs:
|
||||
- targets: ["otel-collector-network:8890"]
|
||||
metrics_path: /metrics
|
||||
Reference in New Issue
Block a user