OpenTelemetry¶
3forge Enterprise can send its runtime statistics to an OpenTelemetry collector over OTLP/HTTP, so server health and load appear in the monitoring stack you already run.
Overview¶
Every 3forge Enterprise process records runtime statistics at a fixed interval, 15 seconds by
default: JVM memory and threads, CPU and physical memory, disk usage, Center tables and events,
processing queues, and Web sessions. These are the rows written to the statistics file,
log/AmiCore.stats. With OpenTelemetry export turned on, the same rows are also sent to a collector
at each interval:
- As metrics: 54 named gauges and counters, such as
Process.freeMemandAmiCenterEvents.logins, sent to/v1/metrics. - As log records: one record per statistics row, sent to
/v1/logs. These are statistics, not the server's log.
The log records carry statistics only. The server's own log file, log/AmiCore.log, is not sent,
so warnings about the export itself never reach the collector.
This metrics export is built into every process and needs no agent, no extra files, and no code. It pushes to the collector; the collector does not need to reach the server. It is turned on with one property and a restart; see Sending metrics to a collector.
Features¶
- Monitor 3forge in your existing stack: export uses standard OTLP over HTTP with JSON, and is accepted by the OpenTelemetry Collector, which can forward it to Grafana, Prometheus, or another backend.
- Turn it on with one property: set
ami.log.stats.otel.enabled=trueand restart; the default endpoint ishttp://localhost:4318. - Get 54 ready-made metrics: heap, garbage collection, threads, CPU, memory, disk, Center row counts and events, queue depth, topic throughput, and Web sessions, each with a unit and a description. See the metrics reference.
- Tell servers apart: every export is tagged with
service.name,host.name, andprocess.pid, and per-component data points carry acomponentattribute. - Authenticate to a hosted collector: send an
Authorizationheader, or any other HTTP header, with every request. See Authenticating to a collector.
What this does not support¶
- Traces and spans: only metrics and log records are exported. There is no
/v1/tracesoutput. - Being scraped: export only pushes to a collector. It opens no metrics endpoint on the server for Prometheus, or anything else, to scrape; to use Prometheus, send to a collector that forwards to it.
- OTLP over gRPC: only OTLP over HTTP with JSON bodies. Port 4317 and protobuf encoding are not used, and requests are not compressed.
- A health, heartbeat, or "up" metric: none of the 54 metrics reports whether the server is healthy. A stopped server, and a server whose export has stopped, both show up as data no longer arriving.
- Sending the server log:
log/AmiCore.logis not exported.
In this section¶
- Sending metrics to a collector: turn export on and confirm data arrives.
- Configuration: every export property, authentication, and failure behavior.
- Metrics reference: every metric, its unit and attributes, and the log record format.
- Troubleshooting: symptoms, the exact log messages, and fixes.