Integrations
A built-in integration is a recipe for one technology, such as PostgreSQL or Nginx. It gives you an OpenTelemetry Collector config that collects the right metrics and logs, and FuseScope adds matching dashboards when you connect it.
Use this page when you want to monitor a database, web server or AWS service that has a built-in integration, or want to know how integrations work in the app.
Available integrations
Section titled “Available integrations”| Integration | Metrics | Logs | Dashboards |
|---|---|---|---|
| ClickHouse | Server Prometheus endpoint | Server log file | Clickhouse Overview |
| MongoDB | mongodb receiver |
Server log file | Mongo overview |
| Nginx | None | Access and error log files | None |
| PostgreSQL | postgresql receiver |
Server log file | Postgres overview |
| Redis | redis receiver |
Server log file | Redis overview |
| AWS RDS for MySQL | CloudWatch and mysql receiver |
CloudWatch Logs | AWS RDS MySQL, MySQL |
| AWS RDS for PostgreSQL | CloudWatch and postgresql receiver |
CloudWatch Logs | AWS RDS Postgres, Postgres overview |
| AWS ElastiCache for Redis | CloudWatch and redis receiver |
CloudWatch Logs | AWS ElastiCache Redis |
No integration ships log pipelines or alert rules. Log parsing happens in the collector
config itself, with filelog operators. To parse further, or to parse the raw AWS logs,
add a log pipeline. To get alerted, create
alert rules on the collected data.
How it works
Section titled “How it works”You run the collector. FuseScope does not reach into your systems.
- Run a collector next to the service. Use the upstream
otelcol-contribdistribution, version v0.88.0 or newer; the examples use 0.139.0. See Collector in Docker or Collector on a VM. - Add the integration’s config files. Each integration page has one file for metrics and one for logs. They export to FuseScope over OTLP gRPC.
- Connect the integration in FuseScope. This adds its dashboards and turns on the connection test.
Connect an integration in the app
Section titled “Connect an integration in the app”- Open Integrations in the sidebar and click the integration. Use Search for an integration… to filter the list.
- The detail page has three tabs:
- Overview: what the integration collects.
- Configure: the setup steps, the same as on these pages.
- Data Collected: every log attribute and metric, with type, unit and description.
- Click Connect <name> in the header, for example Connect PostgreSQL.
- In the Connect <name> dialog, click Show Configuration Steps to open the Configure tab, or I have already configured once the collector runs.
I have already configured installs the integration. Its dashboards appear in Dashboards, and the header button becomes Test Connection. A badge shows the status:
| Status | Meaning |
|---|---|
| Listening for data… | Installed, nothing received yet. |
| This integration is working properly | FuseScope has received matching data. |
| This integration has not received data in a while :/ | Nothing received for 7 days. |
Test Connection opens a dialog with where the last data came from and when. FuseScope counts two kinds of data:
- Logs that carry the attribute
sourcewith the integration’s value, such assource = postgres. Every config on these pages sets it. Keep it. - Metrics whose names are listed on the Data Collected tab.
To remove an integration, click Remove from FuseScope at the bottom of its page, then Remove Integration. This deletes its dashboards and stops the connection test. It does not change your collector: remove the config there to stop sending data.
Send to FuseScope
Section titled “Send to FuseScope”Every config on these pages ends with the same exporter:
exporters: otlp/fusescope: endpoint: ${env:OTLP_DESTINATION_ENDPOINT} tls: insecure: trueSet OTLP_DESTINATION_ENDPOINT to the FuseScope collector’s gRPC address, port 4317:
| Where the collector runs | Value |
|---|---|
| Same Kubernetes cluster | fusescope-otel-collector.fusescope.svc.cluster.local:4317 |
| Outside the cluster | fusescope-collector.example.com:4317, see From outside the cluster |
insecure: true sends plain text. Set it to false when the endpoint uses TLS.
Self-hosted FuseScope needs no ingestion key or token header.
Run the collector
Section titled “Run the collector”The collector accepts several --config flags and merges the files. Add the
integration files next to your main config.
docker run -d --name otelcol \ -e OTLP_DESTINATION_ENDPOINT=fusescope-collector.example.com:4317 \ -e POSTGRESQL_ENDPOINT=db.internal:5432 \ -e POSTGRESQL_USERNAME=monitoring \ -e POSTGRESQL_PASSWORD='<password>' \ -v "$PWD/postgres-metrics.yaml:/etc/otelcol-contrib/postgres-metrics.yaml:ro" \ otel/opentelemetry-collector-contrib:0.139.0 \ --config /etc/otelcol-contrib/postgres-metrics.yamlTo read log files, also mount the log directory read-only, for example
-v /var/log/postgresql:/var/log/postgresql:ro.
Copy the files to /etc/otelcol-contrib/, then list them in
/etc/otelcol-contrib/otelcol-contrib.conf with the environment variables:
OTELCOL_OPTIONS="--config=/etc/otelcol-contrib/config.yaml --config=/etc/otelcol-contrib/postgres-metrics.yaml --config=/etc/otelcol-contrib/postgres-logs.yaml"OTLP_DESTINATION_ENDPOINT=fusescope-collector.example.com:4317POSTGRESQL_ENDPOINT=localhost:5432POSTGRESQL_USERNAME=monitoringPOSTGRESQL_PASSWORD=<password>POSTGRESQL_LOG_FILE=/var/log/postgresql/postgresql.logsudo systemctl restart otelcol-contribThe otelcol-contrib user must be able to read the log files.
Anything else
Section titled “Anything else”The integrations cover a handful of common services. The collector-contrib distribution has receivers for many more, such as Kafka, RabbitMQ, Elasticsearch, Apache and IIS. Configure the receiver, export with the exporter above, and build a dashboard on the metrics. Services that expose Prometheus metrics work with the Prometheus receiver. For log files, see Log files.