Skip to content

Instantly share code, notes, and snippets.

@platinumthinker
Created February 19, 2019 12:35
Show Gist options
  • Select an option

  • Save platinumthinker/ea173f99ce235a3d0880bcb3685d6294 to your computer and use it in GitHub Desktop.

Select an option

Save platinumthinker/ea173f99ce235a3d0880bcb3685d6294 to your computer and use it in GitHub Desktop.
Simple sctp prometheus info exporter
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import re
import socketserver
import http.server
from http import HTTPStatus
regex = re.compile(r"^(\S+)\s*(\S+)$")
class Handler(http.server.SimpleHTTPRequestHandler):
def parse_file(self, text):
self.send_response(HTTPStatus.OK)
self.end_headers()
for line in text:
result = regex.search(line).groups()
self.wfile.write(b"# HELP SCTP metric from /proc/net/sctp/snmp ")
self.wfile.write(result[0].encode())
repl = r"([A-Z])([a-z0-9])"
name = b"node_netstat" + re.sub(repl, r"_\1\2", result[0]).encode()
self.wfile.write(b"\n# TYPE ")
self.wfile.write(name)
self.wfile.write(b" gauge\n")
self.wfile.write(name + b" " + result[1].encode() + b"\n")
def do_GET(self):
try:
infile = open("/proc/net/sctp/snmp")
self.parse_file(infile.readlines())
infile.close()
except:
self.send_response(HTTPStatus.INTERNAL_SERVER_ERROR)
self.end_headers()
self.wfile.write("File /proc/net/sctp/snmp not found")
socketserver.TCPServer.allow_reuse_address = True
httpd = socketserver.TCPServer(('', 9200), Handler)
httpd.serve_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment