Collect Microsoft SQL Server metrics, send to InfluxDB and visualize with Grafana
- InfluxDB:
- Grafana:
- Install Grafana
- Import dashboard from file provided in the repository
- influxdb-sqlserver:
- Install GO
- Setup you GOPATH
- Run
go get github.com/zensqlmonitor/influxdb-sqlserver
- Edit the configuration to match your needs
- SQL Server:
- Create a login - with a strong password - in every SQL Server instance you want to monitor:
USE master; GO CREATE LOGIN [linuxuser] WITH PASSWORD = N'mystrongpassword'; GO GRANT VIEW SERVER STATE TO [linuxuser]; GO GRANT VIEW ANY DEFINITION TO [linuxuser]; GO
- Create a login - with a strong password - in every SQL Server instance you want to monitor:
- Run in background:
go run influxdb-sqlserver.go &
- Build in the current directory:
go build influxdb-sqlserver.go
- Install in $GOPATH/bin:
go install influxdb-sqlserver.go
- Go 1.5
- Microsoft SQL server driver (https://github.com/denisenkom/go-mssqldb)
- TOML parser (https://github.com/BurntSushi/toml)
-config (string) = the configuration filepath in toml format (default="influxdb-sqlserver.conf")
-h = usage
Scripts provided are lightweight and use Dynamic Management Views supplied by SQL Server
- getperfcounters.sql: 1000+ metrics from sys.dm_os_performance_counters
- getperfmetrics.sql: some special performance metrics
- getwaitstatscat.sql: list of wait tasks categorized from sys.dm_os_wait_stats
- getmemoryclerksplit.sql: memory breakdown from sys.dm_os_memory_clerks
- getmemory.sql: available and used memory from sys.dm_os_sys_memory
- getdatabasesizetrend.sql: database size trend, datafile and logfile from sys.dm_io_virtual_file_stats
- getdatabaseio.sql: database I/O from sys.dm_io_virtual_file_stats
- getcpu.sql: cpu usage from sys.dm_os_ring_buffers
influxdb-sqlserver uses InfluxDB line protocol. If you add a sql query you have to return one column formatted with this protocol. For more details, see scripts provided in the repository and the InfluxDB documentation
MIT-LICENSE. See LICENSE file provided in the repository for details