Single Instance

When BindPlane OP server's default architecture is monolithic. In this mode, BindPlane is not reliant upon external services. All components are included in the installation.

BindPlane manages several sub-processes:

  • Prometheus: For recording agent throughput metrics
  • Transform Agent: For Live Preview

The Prometheus and Transform Agent software are included with the BindPlane server installation and do not require configuration by the user.

Installing BindPlane on Linux is as simple as running the installation script and following the initialization prompts.

bash
1curl -fsSlL https://storage.googleapis.com/bindplane-op-releases/bindplane/latest/install-linux.sh -o install-linux.sh && bash install-linux.sh --init

Read more by checking out the Quick Start Guide.

Event Bus

Local

The Local event bus is the default event bus used by BindPlane. Unless operating BindPlane in high availability mode, the Local event bus is sufficient.

The configuration will look like this by default:

yaml
1eventBus:
2  type: local

Store

Bolt Store

Bolt Store (bbolt) is the recommended storage backend when operating BindPlane in single instance mode. It stores information in a file on the local filesystem. Because the database is local to the server, it is very fast and does not incur latency that can be observed with other network-based systems.

The configuration is very simple. Default installations of BindPlane will look like this:

yaml
1store:
2  type: bbolt
3  bbolt:
4    path: /var/lib/bindplane/storage/bindplane.db

The file bindplane.db is owned by the bindplane user and group, with 0640 permissions.

Prometheus

All BindPlane OP installations include a bundled version of Prometheus. BindPlane will use the bundled Prometheus as its default measurement metrics storage backend.

It is unnecessary to configure Prometheus when using the bundled option. This documentation can be used as a reference for the default Prometheus installation.

Configuration

The configuration file at /etc/bindplane/config.yaml will contain the following prometheus block after the installation is configured.

yaml
1prometheus:
2  enable: true
3  localFolder: /var/lib/bindplane/prometheus
4  host: localhost
5  port: '9090'
6  remoteWrite:
7    endpoint: /api/v1/write
8  auth:
9    type: none

Directory Structure

Once BindPlane OP is started, the /var/lib/bindplane/prometheus directory structure will look like this:

text
1/var/lib/bindplane/prometheus
2├── console_libraries
3│   ├── menu.lib
4│   └── prom.lib
5├── consoles
6│   ├── index.html.example
7│   ├── node-cpu.html
8│   ├── node-disk.html
9│   ├── node.html
10│   ├── node-overview.html
11│   ├── prometheus.html
12│   └── prometheus-overview.html
13├── data
14│   ├── chunks_head
15│   ├── lock
16│   ├── queries.active
17│   └── wal
18│       └── 00000000
19├── LICENSE
20├── NOTICE
21├── prometheus
22├── prometheus.yml
23├── promtool
24├── rules.yml
25└── web.yml

Prometheus's configuration and storage are located at /var/lib/bindplane/prometheus.

Process

BindPlane OP manages the Prometheus process directly as a subprocess. When viewing the process list with ps, you will notice the following:

text
1USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
2bindpla+  143936  0.0  0.0 1319104 64000 ?       Sl   12:20   0:00 /var/lib/bindplane/prometheus/prometheus --config.file prometheus.yml --web.config.file web.yml --storage.tsdb.retention.time 2d --web.listen-address :9090 --web.enable-remote-write-receiver

The Prometheus process is executed with the following flags:

  • --config.file prometheus.yml: The main Prometheus configuration file, managed by BindPlane.
  • --web.config.file web.yml: The Prometheus web configuration file, managed by BindPlane.
  • --storage.tsdb.retention.time 2d: The retention time, managed by BindPlane. BindPlane uses rollup metrics for tracking agent measurements over time and does not require Prometheus to store data for longer than two days.
  • --web.listen-address localhost:9090: Listen address, managed by BindPlane. Prometheus is not reachable outside of the BindPlane system.
  • --web.enable-remote-write-receiver: BindPlane uses remote write to push metrics to Prometheus.