r/grafana•
eric256

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
mauxfaux•

Thanks for posting!

0
tandulim•

thanks for sharing!! will give it a try

0