observable-axiom
observable-axiomAxiom.co observability integration for logs, metrics, and traces
@bsb/observable-axiom
Axiom.co observability integration for BSB. Exports logs, metrics, and traces to Axiom with OTLP tracing support.
Key Features
- Unified observability: logs, metrics, and traces
- Axiom SDK for logs and events
- OpenTelemetry tracing via OTLP
- Batch processing with configurable flush interval
- Resource attributes for consistent service metadata
Installation
npm install @bsb/observable-axiom
Configuration
Add the plugin to your BSB configuration file:
plugins:
observables:
- plugin: "@bsb/observable-axiom"
enabled: true
config:
serviceName: "my-service"
serviceVersion: "1.0.0"
axiom:
token: "${AXIOM_TOKEN}"
dataset: "bsb-logs"
orgId: "${AXIOM_ORG_ID}"
# url: "https://axiom.mycompany.com" # Optional for self-hosted
enabled:
logs: true
metrics: true
traces: true
export:
flushIntervalMs: 5000
maxBatchSize: 1000
resourceAttributes:
environment: "production"
region: "us-east-1"
cluster: "main"
Configuration Options
| Option | Description | Default |
|---|---|---|
serviceName |
Service identifier | "bsb-service" |
serviceVersion |
Service version tag | - |
axiom.token |
Axiom API token | Required |
axiom.dataset |
Axiom dataset name | "bsb-logs" |
axiom.orgId |
Organization ID (Axiom Cloud) | - |
axiom.url |
Custom Axiom URL (self-hosted) | - |
enabled.logs |
Enable log export | true |
enabled.metrics |
Enable metric export | true |
enabled.traces |
Enable trace export | true |
export.flushIntervalMs |
Flush interval (ms) | 5000 |
export.maxBatchSize |
Max events per batch | 1000 |
resourceAttributes |
Custom attributes | {} |
Environment Variables
AXIOM_TOKEN="xaat-your-token-here"
AXIOM_ORG_ID="your-org-id"
AXIOM_DATASET="bsb-logs"
Usage
Once configured, logs, metrics, and traces are exported automatically:
this.log.info("Service started", { userId: 123 });
const workObs = this.obs.span("process-request");
await this.events.emitEvent("user.created", { userId: "123" });
workObs.end();
Axiom Setup (Quick)
- Create a dataset
- Create an ingest token with dataset access
- Set
AXIOM_TOKENandAXIOM_DATASETin the environment
Documentation
Detailed documentation (used by the BSB Registry): https://github.com/BetterCorp/better-service-base/blob/master/plugins/nodejs/observable-axiom/docs/plugin.md
Links
- GitHub:
https://github.com/BetterCorp/better-service-base/tree/master/plugins/nodejs/observable-axiom - BSB Registry (package):
https://io.bsbcode.dev/packages/nodejs/@bsb/observable-axiom
License
(AGPL-3.0-only OR Commercial)
Installation
Install plugin (Node.js)
npm i @bsb/observable-axiom
Configuration
Configuration options for this plugin:
Tree view shows nested config fields and object branches.
serviceName
serviceName
string
default: "bsb-service"
serviceVersion
serviceVersion
string
optional
axiom
axiom
object
token
axiom.token
string
Axiom API token
dataset
axiom.dataset
string
default: "bsb-logs"
Axiom dataset name
orgId
axiom.orgId
string
optional
Axiom organization ID (for cloud)
url
axiom.url
uri
optional
Custom Axiom URL (for self-hosted)
enabled
enabled
object
logs
enabled.logs
boolean
default: true
metrics
enabled.metrics
boolean
default: true
traces
enabled.traces
boolean
default: true
export
export
object
flushIntervalMs
export.flushIntervalMs
integer
default: 5000
maxBatchSize
export.maxBatchSize
integer
default: 1000
resourceAttributes
resourceAttributes
object
default: {}
Supported Features
Observable capabilities implemented by this plugin:
Logging
debug
available
info
available
warn
available
error
available
Metrics
createCounter
available
createGauge
available
createHistogram
available
incrementCounter
available
setGauge
available
observeHistogram
available
Tracing
spanStart
available
spanEnd
available
spanError
available
Available Versions
v1.0.1
v1.0.0