Running InfluxDB as a service in Windows

influxdb powershell configuration tech sql-server

Run as a Service

As part of the process to setup some metrics collections for sql-server based on perfmon counters I’ve been utilizing InfluxDB. Part of getting started on this is ensuring InfluxDB runs as a service instead of requiring me to launch the exe manually. For more information on InfluxDb, see my other post: Setting Up InfluxDb, Chronograf, and Grafana for the SqlServer Dev

This of course, did not go without it’s share of investigation since I’m working with a compiled executable that was originally built in GO. I had issues registering InfluxDB as a service. This is typically due to enviromental/path variables. In my powershell launch of InfluxD.exe I typically used a script like the following:

open the influx command line and startup the console server if not currently running
Set-Location $PSScriptRoot
$GetExe = get-childitem -Path $PSScriptRoot -Filter *.exe -Recurse | where {$_.Name -match '(influxd.exe)|(influx\.exe)'}
[Environment]::SetEnvironmentVariable('HOME','C:\Influx\')

foreach($i in $GetExe)
{
        if(@(Get-process -name $i.BaseName -ErrorAction SilentlyContinue).count -eq 0) 
        { start-process -filepath $i.FullName -Verbose }

}

I investigated running as a service and found a great reminder on using NSSM for this: Running Go executables … as windows services ’ Ricard Clau I went and downloaded NSSM again and first setup and register of the service went without a hitch, unlike my attempt at running New-service -name 'InfluxDB' -BinaryPathName 'C:\Influx\influxdb\InfluxD.exe' -DisplayName 'InfluxDB' -StartupType Automatic -Credential (get-credential). I’m pretty sure the core issue was the PATH variables and other related enviromental paths were not setup with “working directory” being the InfluxDB which would be expected by it.

NSSM - Non-Sucking Service Manager

Using nssm install provided the GUI which I used in this case. Using the following command I was able to see the steps taken to install, which would allow reproducing the install from a .bat file very easily.

set-location C:\tools .\nssm.exe dump InfluxDB

This resulted in the following output:

C:\tools\nssm.exe install InfluxDB C:\Influx\influxdb\influxd.exe C:\tools\nssm.exe set InfluxDB AppDirectory C:\Influx\influxdb C:\tools\nssm.exe set InfluxDB AppExit Default Restart C:\tools\nssm.exe set InfluxDB AppEvents Start/Pre C:\Influx\influxdb\influx.exe C:\tools\nssm.exe set InfluxDB AppEvents Start/Post C:\Influx\influxdb\influx.exe C:\tools\nssm.exe set InfluxDB AppNoConsole 1 C:\tools\nssm.exe set InfluxDB AppRestartDelay 60000 C:\tools\nssm.exe set InfluxDB DisplayName InfluxDB C:\tools\nssm.exe set InfluxDB ObjectName SERVICENAME “PASSWORD” C:\tools\nssm.exe set InfluxDB Start SERVICE_AUTO_START C:\tools\nssm.exe set InfluxDB Type SERVICE_WIN32_OWN_PROCESS

Pretty awesome! It’s a nice change to have something perfectly the first time with no issues.