Skip to content

Instantly share code, notes, and snippets.

@takscape
Created December 17, 2012 16:10
Show Gist options
  • Save takscape/4319478 to your computer and use it in GitHub Desktop.
Save takscape/4319478 to your computer and use it in GitHub Desktop.
A Python writer plugin for collectd
# -*- coding: utf-8 -*-
import collectd
import logging
import time
from logging.handlers import RotatingFileHandler
TIME_FORMAT = "%Y-%m-%d %H:%M:%S"
LOGFILE_PATH = "/var/log/collectd/values.log"
def configure(conf):
logger = logging.getLogger()
logger.setLevel(logging.INFO)
handler = RotatingFileHandler(LOGFILE_PATH, maxBytes=25000000, backupCount=5, encoding="utf-8")
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
def shutdown():
logging.shutdown()
def write(vl):
timestamp = time.strftime(TIME_FORMAT, time.localtime(vl.time))
plinst = "-" if vl.plugin_instance is None or vl.plugin_instance == "" else vl.plugin_instance
typeinst = "-" if vl.type_instance is None or vl.type_instance == "" else vl.type_instance
values = ",".join(map(str, vl.values))
logging.info("%s %s %s %s %s %s %f %s" % (timestamp, vl.host, vl.plugin, plinst, vl.type, typeinst, vl.interval, values))
collectd.register_config(configure)
collectd.register_shutdown(shutdown)
collectd.register_write(write)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment