content/telegraf/controller/install/_index.md
Telegraf Controller is a web-based configuration management system for Telegraf agents. It provides a user-friendly interface for managing Telegraf configurations, monitoring agents, and organizing plugins.
Review the InfluxData End User Software License Agreement (EULA) for {{% product-name %}} before downloading and installing.
{{% product-name %}} requires that you accept the EULA before the server can start. When you first run {{% product-name %}} in interactive mode (default), it prompts you to accept the EULA. Once accepted on a host machine, the EULA does not need to be accepted again unless the EULA is updated or the {{% product-name %}} local data directory is removed.
Run the executable in a terminal and follow the prompt.
telegraf_controller
Enter v to view the full text of the {{% product-name %}} EULA.
Enter accept to accept the EULA and proceed.
Use the --eula-accept command option or set the TELEGRAF_CONTROLLER_EULA
environment variable to accept.
This is required for non-interactive runs such as systemd, LaunchDaemons,
or CI—for example:
telegraf_controller --eula-accept --no-interactive
TELEGRAF_CONTROLLER_EULA=accept telegraf_controller --no-interactive
$env:TELEGRAF_CONTROLLER_EULA="accept"
./telegraf_controller.exe --no-interactive
Download the {{% product-name %}} executable.
[!Note]
Contact InfluxData for download
If you are currently participating in the {{% product-name %}} private alpha, send your operating system and architecture to InfluxData and we will provide you with the appropriate {{% product-name %}} executable.
If you are not currently in the private alpha and would like to be, request early access.
Install {{% product-name %}}.
[!Important]
{{% product-name %}} executable name
The downloaded {{% product-name %}} executable includes platform-specific information in the file name. You can leave the information in the file name or you can rename the file to
telegraf_controller. This documentation assumes the executable is namedtelegraf_controller.
{{< tabs-wrapper >}} {{% tabs %}} Linux macOS Windows {{% /tabs %}} {{% tab-content %}}
You can add the telegraf_controller executable to your system path or you can
run it in place. You can also run {{% product-name %}} as a service.
Add the following to your shell profile (for example ~/.bashrc):
export PATH="$PATH:$PWD/telegraf_controller"
Reload the profile or open a new shell.
./telegraf_controller
[!Note] If this is the first run on the host, accept the EULA in a TTY or set
TELEGRAF_CONTROLLER_EULA=acceptin the service environment.
Create a {{% product-name %}} service file:
sudo tee /etc/systemd/system/telegraf-controller.service > /dev/null <<EOF
[Unit]
Description=Telegraf Controller
After=network.target
[Service]
Type=simple
User=$USER
WorkingDirectory=/opt/telegraf-controller
ExecStart=/opt/telegraf-controller/telegraf_controller
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
Move the executable to /opt:
sudo mkdir -p /opt/telegraf-controller
sudo mv telegraf_controller /opt/telegraf-controller/
sudo chmod +x /opt/telegraf-controller/telegraf_controller
Enable and start the service:
sudo systemctl daemon-reload
sudo systemctl enable telegraf-controller
sudo systemctl start telegraf-controller
{{% /tab-content %}} {{% tab-content %}}
<!-------------------------------- BEGIN MACOS -------------------------------->You can add the telegraf_controller executable to your system path or you can
run it in place. You can also run {{% product-name %}} as a LaunchDaemon service.
Give telegraf_controller executable permissions:
chmod +x telegraf_controller
Remove the macOS quarantine attribute (if downloaded via browser):
xattr -d com.apple.quarantine telegraf_controller
sudo mv telegraf_controller /usr/local/bin/
export PATH="/usr/local/bin:$PATH"
./telegraf_controller
[!Note] If this is the first run on the host, accept the EULA in a TTY or set
TELEGRAF_CONTROLLER_EULA=acceptin the service environment.
Create a plist file:
sudo tee /Library/LaunchDaemons/com.influxdata.telegraf-controller.plist > /dev/null <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.influxdata.telegraf-controller</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/telegraf_controller</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/telegraf-controller.log</string>
<key>StandardErrorPath</key>
<string>/var/log/telegraf-controller.error.log</string>
</dict>
</plist>
EOF
Move the executable to /usr/local/bin:
sudo mv telegraf_controller /usr/local/bin/
Load the service:
sudo launchctl load /Library/LaunchDaemons/com.influxdata.telegraf-controller.plist
{{% /tab-content %}} {{% tab-content %}}
<!------------------------------- BEGIN WINDOWS ------------------------------->You can run the telegraf_controller executable in place or you can run
{{% product-name %}} as a Windows service.
Double-click the executable or open Command Prompt or PowerShell and run:
./telegraf_controller.exe
Use NSSM (Non-Sucking Service Manager) to run {{% product-name %}} as a Windows service.
[!Note] If this is the first run on the host, accept the EULA in a TTY or set
TELEGRAF_CONTROLLER_EULA=acceptin the service environment.
In Command Prompt or PowerShell, install the {{% product-name %}} service:
nssm install TelegrafController "C:\Program Files\TelegrafController\telegraf_controller.exe"
nssm set TelegrafController DisplayName "Telegraf Controller"
nssm set TelegrafController Description "Web-based Telegraf configuration manager"
nssm set TelegrafController Start SERVICE_AUTO_START
Start the service:
nssm start TelegrafController
{{% /tab-content %}} {{< /tabs-wrapper >}}
{{% product-name %}} supports SQLite (default), PostgreSQL, or PostgreSQL-compatible databases as its data backend.
With SQLite installed, no additional setup is required. {{% product-name %}} creates the database file automatically on first run.
{{% product-name %}} stores its data in platform-specific locations:
| Platform | Default Database Location |
|---|---|
| Linux | ~/.local/share/telegraf-controller/sqlite.db |
| macOS | ~/Library/Application Support/telegraf-controller/sqlite.db |
| Windows | %LOCALAPPDATA%\telegraf-controller\sqlite.db |
The following steps assume you have a running PostgreSQL or PostgreSQL-compatible server running.
Create a database named telegraf_controller:
CREATE DATABASE telegraf_controller;
Run with PostgreSQL URL:
./telegraf_controller --database="postgresql://user:password@localhost:5432/telegraf_controller"
The application will automatically run migrations on first startup.
Use the following command line options to configure {{% product-name %}}.
| Command Flag | Environment Variable | Description | Default |
|---|---|---|---|
--port | PORT | Web interface and API port | 8888 |
--heartbeat-port | HEARTBEAT_PORT | Agent heartbeat service port | 8000 |
--database | DATABASE | Database connection string | Auto-detected SQLite |
--ssl-cert | SSL_CERT | SSL certificate file path | None |
--ssl-key | SSL_KEY | SSL private key file path | None |
--no-interactive | Skip prompts and use defaults | None | |
--eula-accept | TELEGRAF_CONTROLLER_EULA | Accept EULA non-interactively | None |
{{< tabs-wrapper >}} {{% tabs "medium" %}} Use Command Flags Use Environment Variables {{% /tabs %}} {{% tab-content %}}
<!---------------------------- BEGIN COMMAND FLAGS ---------------------------->{{< code-tabs-wrapper >}} {{% code-tabs %}} Linux/macOS Windows (Powershell) {{% /code-tabs %}} {{% code-tab-content %}}
<!------------------ BEGIN LINUX/MACOS COMMAND FLAGS ------------------># Use custom ports
telegraf_controller --port=3000 --heartbeat-port=9000
# Use PostgreSQL database
telegraf_controller \
--database="postgresql://user:password@localhost:5432/telegraf_db"
# Use custom SQLite database location
telegraf_controller \
--database="/path/to/custom/database.db"
# Enable HTTPS
telegraf_controller \
--ssl-cert="/path/to/cert.pem" \
--ssl-key="/path/to/key.pem"
# Accept the EULA non-interactively
telegraf_controller \
--no-interactive \
--eula-accept
{{% /code-tab-content %}} {{% code-tab-content %}}
<!-------------------- BEGIN WINDOWS COMMAND FLAGS --------------------># Use custom ports
./telegraf_controller.exe --port=3000 --heartbeat-port=9000
# Use PostgreSQL database
./telegraf_controller.exe `
--database="postgresql://user:password@localhost:5432/telegraf_db"
# Use custom SQLite database location
./telegraf_controller.exe `
--database="C:\path\to\custom\database.db"
# Enable HTTPS
./telegraf_controller.exe `
--ssl-cert="C:\path\to\cert.pem" `
--ssl-key="C:\path\to\key.pem"
# Accept the EULA non-interactively
./telegraf_controller.exe `
--no-interactive `
--eula-accept
{{% /code-tab-content %}} {{< /code-tabs-wrapper >}}
<!----------------------------- END COMMAND FLAGS ----------------------------->{{% /tab-content %}} {{% tab-content %}}
<!------------------------ BEGIN ENVIRONMENT VARIABLES ------------------------>{{< code-tabs-wrapper >}} {{% code-tabs %}} Linux/macOS Windows (Powershell) {{% /code-tabs %}} {{% code-tab-content %}}
<!-------------- BEGIN LINUX/MACOS ENVIRONMENT VARIABLES --------------># Use custom ports
PORT=3000
HEARTBEAT_PORT=9000
# Use PostgreSQL database
DATABASE=postgresql://user:password@localhost:5432/telegraf_db
# Use custom SQLite database location
DATABASE=/path/to/custom/database.db
# Enable HTTPS
SSL_CERT=/path/to/cert.pem
SSL_KEY=/path/to/key.pem
# Accept the EULA
TELEGRAF_CONTROLLER_EULA=accept
telegraf_controller
{{% /code-tab-content %}} {{% code-tab-content %}}
<!---------------- BEGIN WINDOWS ENVIRONMENT VARIABLES ----------------># Use custom ports
$env:PORT=3000
$env:HEARTBEAT_PORT=9000
# Use PostgreSQL database
$env:DATABASE=postgresql://user:password@localhost:5432/telegraf_db
# Use custom SQLite database location
$env:DATABASE=C:\path\to\custom\database.db
# Enable HTTPS
$env:SSL_CERT=C:\path\to\cert.pem
$env:SSL_KEY=C:\path\to\key.pem
# Accept the EULA
$env:TELEGRAF_CONTROLLER_EULA=accept
./telegraf_controller.exe
{{% /code-tab-content %}} {{< /code-tabs-wrapper >}}
<!------------------------- END ENVIRONMENT VARIABLES ------------------------->{{% /tab-content %}} {{< /tabs-wrapper >}}
Once started, access the {{% product-name %}} web interface at http://localhost:8888 (or using your custom port).