Script to Query MSSQL and dump results into Telegraf for use in Grafana
I wrote a script to run queries against MSSQL and then return the results into Telegraf/Grafana.
Here is the script:
#! /usr/bin/env python
__author__ = 'Eric Hodges'
__version__= 0.1
import os, sys
import pymssql
import json
import configparser
from optparse import OptionParser, OptionGroup
parser = OptionParser(usage='usage: %prog [options]')
parser.add_option('-c', '--config', help="Config File Location", default="/etc/check_mssql.conf")
(options, args) = parser.parse_args()
config = configparser.ConfigParser()
config.read(options.config)
settings = config['Settings']
conn = pymssql.connect(host=settings['hostname'],user=settings['username'], password=settings['password'], database=settings['database'])
def return_dict_pair(cur, row_item):
return_dict = {}
for column_name, row in zip(cur.description, row_item):
return_dict[column_name[0]] = row
return return_dict
queries = config.sections()
items = []
for query in queries:
if (query != 'Settings'):
cursor = conn.cursor()
cursor.execute(config[query]['query'])
description = cursor.description
row = cursor.fetchone()
while row:
items.append(return_dict_pair(cursor,row))
row = cursor.fetchone()
conn.close()
print(json.dumps(items))
sys.exit()
It expects a config file that looks like:
[Settings]
hostname=server[:port]
database=database_name
username=readonly_user
password=readonly_user_password
[Sample]
query=SELECT measurement, data FROM sample_table
I made a full write up of how to use it here and integrate it with telegraf and grafana. I hope this is useful to someone else too, I couldn't find anything like it to use.
Let me know if I've done anything atrocious here :)
Posted Jun 11, 2019, 6:57 PM UTC
22
Thanks for posting!