Skip to content

Observability Agent

Introduction

The Observability Agent, an open source autoconfiguration and installation tool, is a wrapper for the Grafana Agent that can install the agent, detect which services are running on your machine, and automatically create a configuration file with integrations for detected services.

Info

A Node/Windows exporter integration will be added by default.

Prerequisites

For Unix machines, the script will have to be run with root privileges, otherwise you will be prompted for your password during execution.

Windows machines must have Powershell 5.1 or later installed.

MacOS is not currently supported.

The script will automatically detect what is running on your machine and add integrations to the config file. Each service requiring an integration must be running on its default port. These are:

Integration Default port
MySQL 3306
MSSQL 1433
Postgres 5432

Procedure

Linux

To download and run the installer:

curl -O -L "https://github.com/intergral/observability-agent/releases/download/v0.1.0/observability-agent-autoconf.sh" 

chmod a+x "observability-agent-autoconf.sh"`

sudo /bin/bash path/to/observability-agent-autoconf.sh

Windows

In a terminal, run:

Invoke-WebRequest -Uri "https://github.com/intergral/observability-agent/releases/download/v0.1.0/observability-agent-autoconf.ps1" -OutFile "observability-agent-autoconf.ps1"
.\observability-agent-autoconf.ps1

Info

The installer for Windows assumes you are installing the Grafana Agent in the default location on the C drive. This is required for the config file to be placed in the correct location for the Grafana Agent to read it.

Options

Agent installation is enabled by default.

Run without the agent installed

To run without installing the agent, add --install false to the end of the run command.

Example

sudo path/to/observability-agent-autoconf.sh --install false`

Modify a pre-existing config file

To modify a pre-existing config file, add --config.file, followed by the path to the file, to the end of the run command.

Example

sudo path/to/observability-agent-autoconf.sh --config.file path/to/configfile`

Info

A backup of your original file will be created.

Using both install & config.file options

It is possible to use both --install and --config.file options in the same run command - the order is irrelevant.

Example

sudo path/to/observability-agent-autoconf.sh --install false --config.file path/to/config 

sudo path/to/observability-agent-autoconf.sh --config.file path/to/config --install false

Docker

When running in Docker, you will not be prompted for any information. Therefore, you must specify an API key before running. Additionally, you must set the relevant environment variables, for whichever services you have running, so they can be configured.

To run in Docker, we provide prebuilt images in our Docker Hub repository.

Learn more

Docker Hub

FusionReactor Observability Agent Docker installation from FusionReactorAPM on Vimeo.

Environment variables

To add integrations without being prompted for credentials, there are several environment variables you can use:

Ingest

Variable Type Description
api_key string API Key to authenticate with your FusionReactor Cloud Account. Generate an API key.
metricsEndpoint string Default: https://api.fusionreactor.io/v1/metrics
logsEndpoint string Default: https://api.fusionreactor.io/v1/logs

Metric exporters

Variable Type Description
mysql_user string User for the local Mysql database
mysql_password string Password for the local Mysql database
mysql_disabled bool Enables/Disables the Mysql exporter (enabled by default)
mssql_user string User for the local Mssql database
mssql_password string Password for the local Mssql database
mssql_disabled bool Enables/Disables the Mssql exporter (enabled by default)
postgres_user string User for the local Postgres database
postgres_password string Password for the local Postgres database
postgres_disabled bool Enables/Disables the Postgres exporter (enabled by default)

Exporting metrics from external machines

To replace these with a custom connection string, there are several environment variables you can use:

Variable Type Example (Defaults)
mysql_connection_string string <username>:<password>@(<host>:3306)/
mssql_connection_string string sqlserver://<username>:<password>@<host>:1433
postgres_connection_string string postgresql://<username>:<password>@<host>:5432/shop?

Log exporters

If you wish to enable log collection, the following environment variables must be set:

Variable Type Description
log_collection bool Enables log collection
service_name string Set a name for your log collection service
log_path string Set a file path for your log collection service

Scraping from additional exporters

At present, there are some integrations we don't support out the box. One of these integrations is Nginx which does not have native integration and use is via a scrape endpoint.

To scrape these exporters, locate your config file and append the example below. By default your config file will be:

Linux: /etc/grafana-agent.yaml

Windows: C:\Program Files\Grafana Agent\agent-config.yaml

Example configuration block

remote_write:
           - url: "https://api.fusionreactor.io/v1/metrics"
             authorization:
               credentials: 7f5e1598e67524aacf90da7d8479a16f1236fe01095b081f0b684eae7570e54c4c5660b2b8adae573f860c2bca3b98b5ffe4237de2980e26d8951324ed4a9ee1
     configs:
       - name: nginx
         scrape_configs:
           static_configs:
           - targets: ['{nginx-collector}:9113']

Example Nginx config file

The NGINX Prometheus exporter makes it possible to monitor Nginx or Nginx Plus using Prometheus.

This exporter requires different configuration depending on whether you are monitoring Nginx community or Nginx pro editions. Both require a URI and pro is not enabled by default.

Learn more

NGINX Prometheus exporter - includes additional configuration options.

Example: Nginx community edition

nginxexporter:
  image: nginx/nginx-prometheus-exporter
  environment:
    - SCRAPE_URI=http://{nginx-host}:80/basic_status
  ports:
    - "9113:9113"

Example: Nginx pro edition

nginxexporter:
  image: nginx/nginx-prometheus-exporter
  environment:
    - SCRAPE_URI=http://{nginx-host}:80/api
    - NGINX_PLUS=true
  ports:
    - "9113:9113"

.Env files

If you wish to use an environment file to set environment variables, rather than setting them as system environment variables, name the file ".env" and place it in the same directory as the "observability-agent-autoconf" script.

Example ".env" file:

api_key=1234567890
mysql_connection_string=root:my-secret-pw@(mysql:3306)/
log_collection=true
service_name=service
log_path=path

Custom integrations

We plan to continually add integrations. Should you require a specific integration, please contact us through the chat bubble and we'll see what we can do.


Need more help?

Contact support in the chat bubble and let us know how we can assist.