From 3207ed1508673f33ebe5dd2ef403e707d53e419b Mon Sep 17 00:00:00 2001 From: ducoterra Date: Sun, 5 Apr 2020 18:57:47 -0400 Subject: [PATCH] add exclude --- README.md | 6 +++++- collector/__init__.py | 13 ++++++++++--- collector/collector.py | 8 +++++--- collector.json => example.json | 6 ++++++ 4 files changed, 26 insertions(+), 7 deletions(-) rename collector.json => example.json (76%) diff --git a/README.md b/README.md index 876ab63..142661d 100644 --- a/README.md +++ b/README.md @@ -28,4 +28,8 @@ Make collect.py executable: chmod +x collect.py ``` -Schedule a cronjob to run collect.py at your preferred interval \ No newline at end of file +Schedule a cronjob to run collect.py at your preferred interval. Cronjob command is: + +```bash +COLLECTOR_CONF=/root/collector/collector.json /root/collector/collect.py +``` \ No newline at end of file diff --git a/collector/__init__.py b/collector/__init__.py index 9820ec4..c08abb5 100644 --- a/collector/__init__.py +++ b/collector/__init__.py @@ -8,7 +8,7 @@ from collector.helper import * CONFIG_FILE = os.getenv("COLLECTOR_CONF", "collector.json") REQUIRED = ["graphite","os","data"] -VALID_DATAPOINTS = ["storage"] +VALID_DATAPOINTS = ["storage", "heartbeat"] VALID_OS = ["linux", "osx"] REQUIRED_STORAGE = ["path", "name"] CONFIG = {} @@ -67,5 +67,12 @@ if "storage" in data_points: else: name = item["name"] path = item["path"] - storage_sender = functools.partial(sender, f"{HOSTNAME}.storage.{name}") - thread(collect_storage, storage_sender, path) \ No newline at end of file + exclude = item.get("exclude", None) + else: + storage_sender = functools.partial(sender, f"{HOSTNAME}.storage.{name}") + thread(collect_storage, storage_sender, path, exclude = exclude) + +# Check heartbeat +if "heartbeat" in data_points: + heartbeat_sender = functools.partial(sender, f"{HOSTNAME}.heartbeat") + thread(lambda: 1, heartbeat_sender) \ No newline at end of file diff --git a/collector/collector.py b/collector/collector.py index 6839c87..86240d1 100644 --- a/collector/collector.py +++ b/collector/collector.py @@ -4,7 +4,6 @@ import threading import subprocess import re import functools -import random import time from .sender import send @@ -36,6 +35,9 @@ def collect_temp(): def collect_compute(): pass -def collect_storage(path): - storage = nice_run(["du", "-sk", path]) +def collect_storage(path, exclude = None): + cmd = ["du", "-sk", path] + if exclude: + cmd += [f"--exclude={exclude}"] + storage = nice_run(cmd) return clean_storage(storage) \ No newline at end of file diff --git a/collector.json b/example.json similarity index 76% rename from collector.json rename to example.json index c474222..9a151db 100644 --- a/collector.json +++ b/example.json @@ -5,6 +5,7 @@ }, "os": "osx", "data": { + "heartbeat": null, "storage": [ { "path": "/Users/ducoterra", @@ -21,6 +22,11 @@ { "path": "/Users", "name": "users" + }, + { + "path": ".", + "name": "curdir_noreadme", + "exclude": "*.md" } ] }