hsiegeln e25e843553
Some checks failed
CI / build (push) Successful in 5m28s
CI / docker (push) Successful in 42s
CI / deploy (push) Successful in 23s
SonarQube Analysis / sonarqube (push) Successful in 6m50s
Nightly Soak Test / soak (push) Failing after 36m12s
Camel Version Compatibility / compat (4.0.6) (push) Successful in 2m22s
Camel Version Compatibility / compat (4.1.0) (push) Successful in 2m23s
Camel Version Compatibility / compat (4.10.9) (push) Successful in 2m25s
Camel Version Compatibility / compat (4.11.0) (push) Successful in 2m26s
Camel Version Compatibility / compat (4.12.0) (push) Successful in 2m24s
Camel Version Compatibility / compat (4.13.0) (push) Successful in 2m26s
Camel Version Compatibility / compat (4.14.5) (push) Successful in 2m24s
Camel Version Compatibility / compat (4.15.0) (push) Successful in 2m27s
Camel Version Compatibility / compat (4.16.0) (push) Successful in 2m23s
Camel Version Compatibility / compat (4.17.0) (push) Successful in 2m26s
Camel Version Compatibility / compat (4.18.1) (push) Successful in 2m23s
Camel Version Compatibility / compat (4.2.0) (push) Successful in 2m25s
Camel Version Compatibility / compat (4.3.0) (push) Successful in 2m22s
Camel Version Compatibility / compat (4.4.5) (push) Successful in 2m27s
Camel Version Compatibility / compat (4.5.0) (push) Successful in 2m20s
Camel Version Compatibility / compat (4.6.0) (push) Successful in 2m23s
Camel Version Compatibility / compat (4.7.0) (push) Successful in 2m15s
Camel Version Compatibility / compat (4.8.9) (push) Successful in 2m19s
Camel Version Compatibility / quarkus-compat (3.11.0) (push) Successful in 1m5s
Camel Version Compatibility / quarkus-compat (3.12.0) (push) Successful in 1m9s
Camel Version Compatibility / compat (4.9.0) (push) Successful in 3m6s
Camel Version Compatibility / quarkus-compat (3.13.0) (push) Successful in 1m8s
Camel Version Compatibility / quarkus-compat (3.14.0) (push) Successful in 1m24s
Camel Version Compatibility / quarkus-compat (3.15.0) (push) Successful in 1m29s
Camel Version Compatibility / quarkus-compat (3.16.0) (push) Successful in 1m39s
Camel Version Compatibility / quarkus-compat (3.17.0) (push) Successful in 1m28s
Camel Version Compatibility / quarkus-compat (3.18.0) (push) Successful in 1m58s
Camel Version Compatibility / quarkus-compat (3.19.0) (push) Successful in 1m53s
Camel Version Compatibility / quarkus-compat (3.20.0) (push) Successful in 1m15s
Camel Version Compatibility / quarkus-compat (3.22.0) (push) Successful in 1m24s
Camel Version Compatibility / quarkus-compat (3.23.0) (push) Successful in 1m20s
Camel Version Compatibility / quarkus-compat (3.24.0) (push) Successful in 1m29s
Camel Version Compatibility / quarkus-compat (3.25.0) (push) Successful in 1m25s
Camel Version Compatibility / quarkus-compat (3.26.0) (push) Successful in 1m25s
Camel Version Compatibility / quarkus-compat (3.27.0) (push) Successful in 1m21s
Camel Version Compatibility / quarkus-compat (3.29.0) (push) Successful in 1m22s
Camel Version Compatibility / quarkus-compat (3.30.0) (push) Successful in 1m31s
Camel Version Compatibility / quarkus-compat (3.31.0) (push) Successful in 1m28s
Camel Version Compatibility / quarkus-compat (3.32.0) (push) Successful in 1m29s
Camel Version Compatibility / quarkus-compat (3.33.0) (push) Successful in 1m26s
Camel Version Compatibility / report (push) Successful in 12s
docs: hand off export-tuning fields to server + saas teams
Documents the six live-tunable export knobs added to ApplicationConfig
so the server and SaaS teams can wire them into the app-config store,
admin UI, and config-update SSE signer without guessing at semantics.

- PROTOCOL.md §8 agent-config properties table gets the six new keys
- PROTOCOL.md config-envelope example shows the new fields in context
- PROTOCOL.md §27 (new): field reference, DROP vs BLOCK semantics,
  drain-on-threshold explanation, tuning-from-metrics playbook, and a
  server/saas integration checklist (storage, validation, UI, signing,
  backwards compat, observability)
- docs/architecture.md: collector intermediate-chunking paragraph now
  points at flushRecordThreshold; new paragraph references PROTOCOL §27
  for the full tuning contract

No code changes. Defers drain-cap follow-up to gitea #79 (referenced
inline in §27).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-23 22:40:30 +02:00
2026-04-15 15:28:26 +02:00
2026-04-15 15:28:26 +02:00

Cameleer

Observability platform for Apache Camel applications. Two integration modes: a Java agent (-javaagent) for zero-code instrumentation, or a Quarkus extension for CDI-based instrumentation with GraalVM native image support.

Architecture

cameleer-common           Shared models + graph API
        |
cameleer-core             Observability logic (collector, notifier, exporter, metrics, diagrams)
       / \
      /   \
cameleer-agent            cameleer-extension (runtime + deployment)
(ByteBuddy instrumentation) (CDI lifecycle hooks, GraalVM native support)
      |                          |
      |--- attaches to -------+  |--- compiled into ------+
      |                       |  |                         |
sample-app  backend-app  caller-app  quarkus-app  quarkus-native-app
(Spring Boot)                        (Quarkus)    (Quarkus, no agent)

Quick Start

Build

mvn clean package -DskipTests

Option 1: Java Agent (any Camel app)

Attach the shaded agent JAR to any Camel application — Spring Boot, Quarkus (JVM mode), or standalone:

java -javaagent:cameleer-agent/target/cameleer-agent-1.0-SNAPSHOT-shaded.jar \
     -jar your-camel-app.jar

Option 2: Quarkus Extension (Quarkus apps, including native)

Add the extension dependency to your Quarkus project:

<dependency>
    <groupId>com.cameleer</groupId>
    <artifactId>cameleer-extension</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Configure in application.properties:

cameleer.agent.export.type=HTTP
cameleer.agent.export.endpoint=http://cameleer-server:8081
cameleer.agent.application=my-app

No -javaagent flag needed. Works in JVM and GraalVM native mode.

Run Example Apps

# Spring Boot sample app (agent mode)
java -javaagent:cameleer-agent/target/cameleer-agent-1.0-SNAPSHOT-shaded.jar \
     -jar cameleer-sample-app/target/cameleer-sample-app-1.0-SNAPSHOT.jar

# Quarkus sample app (agent mode, uber-jar)
java -javaagent:cameleer-agent/target/cameleer-agent-1.0-SNAPSHOT-shaded.jar \
     -jar cameleer-quarkus-app/target/cameleer-quarkus-app-1.0-SNAPSHOT-runner.jar

# Quarkus native app (extension mode, no agent, uber-jar)
java -jar cameleer-quarkus-native-app/target/cameleer-quarkus-native-app-1.0-SNAPSHOT-runner.jar

Test REST Endpoint

curl -X POST http://localhost:8080/api/orders \
  -H "Content-Type: application/json" \
  -d '{"orderId":"123","type":"PRIORITY","amount":99.99}'

What You Get

  • Route monitoring — execution chunks for every route execution with timing, status, correlation
  • Processor tracing — flat processor records with seq/parentSeq parent-child relationships
  • Payload capture — exchange-level input/output snapshots (REGULAR+) and per-processor body/headers/properties (COMPLETE)
  • Error tracking — classified errors (TIMEOUT/CONNECTION/VALIDATION/SECURITY/RESOURCE) with full stack traces
  • Metrics bridge — Camel JMX statistics in periodic summaries (JVM mode only)
  • Prometheus endpoint/metrics HTTP endpoint for scraping
  • Route graphs — JSON graph models of every route's topology (nodes, edges, EIP patterns)
  • Cross-service correlationX-Cameleer-CorrelationId header propagation across services
  • Taps — runtime business attribute extraction via Camel expression languages
  • Replay — synchronous exchange replay with audit trail
  • Route control — dynamic start/stop/suspend/resume of routes
  • Route state reporting — real-time route state (Started/Stopped/Suspended) via heartbeat and state change events
  • Log forwarding — Logback, Log4j2, and JUL log forwarding to the server
  • OpenTelemetry — hybrid OTel integration (OFF/AUTO/CREATE/CORRELATE modes)
  • Auto-recovery — re-registers with full capabilities on 404 (server data loss), refreshes JWT on 401/403

Configuration

System properties with cameleer.agent. prefix (agent mode) or application.properties entries (extension mode):

Property Default Description
cameleer.agent.enabled true Master on/off
cameleer.agent.export.type LOG LOG or HTTP
cameleer.agent.export.endpoint Server URL (for HTTP export)
cameleer.agent.application default Application identifier
cameleer.agent.environment default Environment identifier (dev/staging/prod)
cameleer.agent.instanceid Optional instance ID override (default: {hostname}-{pid})
cameleer.agent.engine.level REGULAR NONE, MINIMAL, REGULAR, COMPLETE
cameleer.agent.payload.capture BOTH NONE, INPUT, OUTPUT, BOTH
cameleer.agent.payload.maxsize 4096 Max payload bytes
cameleer.agent.payload.sensitiveheaders Authorization,Cookie,Set-Cookie,X-API-Key,X-Auth-Token,Proxy-Authorization Headers to mask
cameleer.agent.payload.sensitiveproperties (empty) Exchange properties to mask
cameleer.agent.metrics.enabled true Bridge Camel JMX metrics
cameleer.agent.metrics.interval 60 Metrics summary interval (seconds)
cameleer.agent.prometheus.enabled false Prometheus /metrics endpoint
cameleer.agent.prometheus.port 9464 Prometheus endpoint port
cameleer.agent.diagram.enabled true Extract route graph models
cameleer.agent.diagram.outputdir ./cameleer-diagrams Graph JSON output directory
cameleer.agent.diagram.debugsvg false Generate debug SVG files
cameleer.agent.sampling.rate 1.0 Global sampling rate (0.0-1.0)
cameleer.agent.routecontrol.enabled false Enable dynamic route control
cameleer.agent.replay.enabled false Enable exchange replay
cameleer.agent.taps.enabled true Enable business attribute extraction
cameleer.agent.logs.enabled true Enable log forwarding
cameleer.agent.otel.mode OFF OpenTelemetry mode: OFF, AUTO, CREATE, CORRELATE
cameleer.agent.execution.compresssuccess false Strip processor records from successful executions
cameleer.agent.health.enabled true Enable health endpoint

Example with custom config:

java -Dcameleer.agent.payload.capture=INPUT \
     -Dcameleer.agent.export.type=HTTP \
     -Dcameleer.agent.export.endpoint=http://localhost:8081 \
     -Dcameleer.agent.prometheus.enabled=true \
     -javaagent:cameleer-agent/target/cameleer-agent-1.0-SNAPSHOT-shaded.jar \
     -jar cameleer-sample-app/target/cameleer-sample-app-1.0-SNAPSHOT.jar

Modules

cameleer/
├── cameleer-common/              Shared models + graph API
├── cameleer-core/                Observability logic (no ByteBuddy) + PostStartSetup
│   ├── collector/                 Execution collection + payload capture
│   ├── notifier/                  EventNotifier + InterceptStrategy
│   ├── export/                    Log + HTTP (chunked) exporters
│   ├── connection/                Server connection, SSE, heartbeat
│   ├── command/                   SSE command handling
│   ├── config/                    Config cache management
│   ├── diagram/                   Route model extraction + debug SVG
│   ├── metrics/                   Camel JMX metrics + Prometheus
│   ├── tap/                       Business attribute extraction
│   ├── otel/                      OpenTelemetry bridge
│   ├── health/                    Health endpoint + startup report
│   └── logging/                   Log forwarding (Logback, Log4j2, JUL)
├── cameleer-agent/               Java agent (ByteBuddy instrumentation)
│   ├── instrumentation/           ByteBuddy advice + transformer
│   └── logging/                   ByteBuddy-injected log appenders
├── cameleer-extension/           Quarkus extension
│   ├── runtime/                   CDI lifecycle hooks → core
│   └── deployment/                Build-time processing (reflection registration)
├── cameleer-sample-app/          Spring Boot + Camel (11 route classes)
├── cameleer-backend-app/         REST product service (cross-service demo)
├── cameleer-caller-app/          HTTP caller (cross-service correlation demo)
├── cameleer-quarkus-app/         Quarkus + Camel Quarkus (5 route classes)
├── cameleer-quarkus-native-app/  Quarkus with extension (GraalVM-ready)
└── docs/                          Architecture + design documentation

Requirements

  • Java 17+
  • Maven 3.9+
  • Apache Camel 4.10.x (target application)
  • Quarkus 3.33+ (for extension mode, Camel Quarkus 3.11 minimum)
Description
Observability platform for Apache Camel applications
Readme 5.9 MiB
v1.1.0 Latest
2026-03-31 16:39:25 +02:00
Languages
Java 99.4%
Batchfile 0.5%