diff --git a/README.md b/README.md index 23b80be7..f521dcf6 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # Prometheus SQL Exporter [![Go](https://github.com/burningalchemist/sql_exporter/workflows/Go/badge.svg)](https://github.com/burningalchemist/sql_exporter/actions?query=workflow%3AGo) [![Docker Pulls](https://img.shields.io/docker/pulls/burningalchemist/sql_exporter)](https://hub.docker.com/r/burningalchemist/sql_exporter) + This is a fork of Database agnostic SQL exporter for [Prometheus](https://prometheus.io), created by [@free](https://github.com/free/sql_exporter). The main goal is to bring some maintenance to the project until the original maintainer is back. ## Overview @@ -23,19 +24,19 @@ metrics when queried more frequently than the configured interval. Get Prometheus SQL Exporter, either as a [packaged release](https://github.com/burningalchemist/sql_exporter/releases/latest), as a [Docker image](https://hub.docker.com/r/burningalchemist/sql_exporter) or build it yourself: -``` +```shell $ go install github.com/burningalchemist/sql_exporter/cmd/sql_exporter ``` then run it from the command line: -``` +```shell $ sql_exporter ``` Use the `-help` flag to get help information. -``` +```shell $ ./sql_exporter -help Usage of ./sql_exporter: -config.file string @@ -47,6 +48,28 @@ Usage of ./sql_exporter: [...] ``` +## Run as a Windows service + +If you run SQL Exporter from Windows, it might come in handy to register it as a service to avoid interactive sessions. It is **important** to define `-config.file` parameter to load the configuration file. The other settings can be added as well. The registration itself is performed with Powershell or CMD (make sure you run them as Administrator): + +Powershell: + +```powershell +New-Service -name "SqlExporterSvc" ` +-BinaryPathName "%SQL_EXPORTER_PATH%\sql_exporter.exe -config.file %SQL_EXPORTER_PATH%\sql_exporter.yml" ` +-StartupType Automatic ` +-DisplayName "SQL Exporter" ` +-Description "SQL Exporter for Prometheus" +``` + +CMD: + +```shell +sc.exe create SqlExporterSvc binPath= "%SQL_EXPORTER_PATH%\sql_exporter.exe -config.file %SQL_EXPORTER_PATH%\sql_exporter.yml" start= auto +``` + +`%SQL_EXPORTER_PATH%` is a path to the SQL Exporter binary executable. This document assumes that configuration files are in the same location. + ## Configuration SQL Exporter is deployed alongside the DB server it collects metrics from. If both the exporter and the DB @@ -78,6 +101,8 @@ global: max_connections: 3 # Maximum number of idle connections to any one target. max_idle_connections: 3 + #Maximum amount of time a connection may be reused to any one target. Infinite by default. + max_connection_lifetime: 10m # The target to monitor and the list of collectors to execute on it. target: @@ -89,7 +114,7 @@ target: collectors: [pricing_data_freshness] # Collector definition files. -collector_files: +collector_files: - "*.collector.yml" ``` diff --git a/VERSION b/VERSION index faef31a4..39e898a4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.7.0 +0.7.1 diff --git a/cmd/sql_exporter/main.go b/cmd/sql_exporter/main.go index fbbb37df..374ae8cc 100644 --- a/cmd/sql_exporter/main.go +++ b/cmd/sql_exporter/main.go @@ -9,6 +9,7 @@ import ( "github.com/burningalchemist/sql_exporter" log "github.com/golang/glog" + _ "github.com/kardianos/minwinsvc" "github.com/prometheus/client_golang/prometheus" "github.com/prometheus/client_golang/prometheus/promhttp" "github.com/prometheus/common/version" diff --git a/go.mod b/go.mod index d9c4a6a3..0c9e1ee5 100644 --- a/go.mod +++ b/go.mod @@ -10,6 +10,7 @@ require ( github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b github.com/golang/protobuf v1.4.2 github.com/jackc/pgx/v4 v4.8.1 + github.com/kardianos/minwinsvc v1.0.0 github.com/lib/pq v1.8.0 github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect diff --git a/go.sum b/go.sum index 32bc2f99..016d1b6b 100644 --- a/go.sum +++ b/go.sum @@ -216,6 +216,8 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kardianos/minwinsvc v1.0.0 h1:+JfAi8IBJna0jY2dJGZqi7o15z13JelFIklJCAENALA= +github.com/kardianos/minwinsvc v1.0.0/go.mod h1:Bgd0oc+D0Qo3bBytmNtyRKVlp85dAloLKhfxanPFFRc= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -470,6 +472,7 @@ golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200805065543-0cf7623e9dbd h1:wefLe/3g5tC0FcXw3NneLA5tHgbyouyZlfcSjNfOdgk=