diff --git a/.gitignore b/.gitignore
index d2d6f36..e03e9a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
+.idea
+
*.py[cod]
# C extensions
diff --git a/linspector.json b/linspector.json
index c05ef25..18cf527 100644
--- a/linspector.json
+++ b/linspector.json
@@ -1,378 +1,582 @@
{
- "services":
- {
- "discusage":
+ "services":
{
- "command": "ssh @host df -a @device"
- },
- "load":
- {
- "command": "ssh @host uptime"
- },
- "dirsize":
- {
- "command": "ssh @host du -chs @path"
- },
- "filesize":
- {
- "command": "ssh @host du -chs @path"
- },
- "loggedinusercount":
- {
- "command": "ssh @host who | wc -l"
- },
- "loggedinusers":
- {
- "command": "ssh @host who"
- },
- "swapusage":
- {
- "command": "ssh @host cat /proc/swaps"
- },
- "processcount":
- {
- "command": "ssh @host ps ax | wc -l"
- },
- "processcountbyname":
- {
- "command": "ssh @host ps ax | grep @name | wc -l"
- },
- "fileage":
- {
- "command": "ssh @host ls -l @file"
- },
- "ping":
- {
- "command": "ping @host"
- },
- "snmpget":
- {
- "command": "snmpget -v1 -c public $oid "
- },
- "busy_waiting":
- {
- "command": "sleep 3600"
- },
- "htmlcontent":
- {
- "command": "wget -qO- @url",
- "comment": "Get HTML Content for a string lookup."
- }
- },
- "filters":
- {
- "email":
- {
- "command": "/usr/bin/warn_the_admin_mail @member @+message",
- "comment": "Sends an E-Mail to the member.",
- "priority": 1
- },
- "sms":
- {
- "command": "/usr/bin/warn_the_admin_sms @member @+message",
- "comment": "Sends a Short Message to the member.",
- "priority": 0
- },
- "foo":
- {
- "command": "/usr/bin/warn_the_admin_foo @member @+message",
- "priority": 500
- },
- "mongowriter":
- {
- "command": "./plugins/mongowriter.py @+message localhost 27017 linspector123",
- "priority": 1000
- }
- },
- "members":
- {
- "hanez":
- {
- "name": "Johannes Findeisen",
- "comment": "Just a nerd doing admin stuff...",
- "parent": "admin",
- "filters":
- {
- "email": "you@hanez.org",
- "sms": "+23345567"
- }
- },
- "admin":
- {
- "name": "Peter Hansen",
- "comment": "The son of Hans-Peter Hansen",
- "parent": "ultraadmin",
- "filters":
- {
- "email": "admin@systemchaos.org",
- "sms": "+23345567",
- "phone": "+435345345"
- }
- },
- "ultraadmin":
- {
- "name": "Hans-Peter Hansen (CEO)",
- "comment": "The guru of the Datacenter",
- "parent": "darthvader",
- "filters":
- {
- "email": "bofh@systemchaos.org",
- "sms": "+23345567",
- "phone": "+435345345"
- }
- },
- "darthvader":
- {
- "name": "Darth Vader",
- "comment": "The Father",
- "filters":
- {
- "email": "darth.vader@systemchaos.org"
- }
- },
- "jens":
- {
- "name": "Jens Larssen",
- "comment": "Our network guru",
- "filters":
- {
- "email": "jens@systemchaos.org",
- "sms": "+23345567",
- "phone": "+435345345"
- }
- },
- "ruff":
- {
- "name": "Ruffn Buffn",
- "filters":
- {
- "sms": "+23343457"
- }
- },
- "mongowriter":
- {
- "name": "MongoDB Database writer plugin",
- "filters":
- {
- "mongowriter": "localhost"
- }
- }
- },
- "periods":
- {
- "twentyfourseven":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "hour": "*",
- "minute": "5",
- "second": "",
- "comment": "All day all night... every five minutes!"
- },
- "twentyfour_weekdays":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "day_of_week": "mon,tue,wed,thu,fri",
- "hour": "*",
- "minute": "5"
- },
- "twentyfour_weekend":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "day_of_week": "5-6",
- "hour": "*",
- "minute": "15"
- },
- "onmonday":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "day_of_week": "mon",
- "hour": "*",
- "minute": "5"
- },
- "onfriday":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "day_of_week": "fri",
- "hour": "0-20",
- "minute": "5"
- },
- "onmondayandfriday":
- {
- "year": "*",
- "month": "*",
- "day": "*",
- "week": "*",
- "day_of_week": "mon,fri",
- "hour": "*",
- "minute": "5"
- },
- "hanezbirthday":
- {
- "year": "*",
- "month": "12",
- "day": "6"
- },
- "ruffdoesnever":
- {
- }
- },
- "hosts":
- {
- "hanez":
- {
- "host": "www.hanez.org",
- "services":
- {
"discusage":
- [
- { "device": "/dev/sda1", "warning": "80%", "critical": "90%" },
- { "device": "/dev/sda2", "warning": "70%", "critical": "90%" },
- { "device": "/dev/sda3", "warning": "70GB", "critical": "90GB" }
- ],
+ {
+ "command": "ssh @host df -a @device"
+ },
"load":
- [
- { "warning": 8.00, "critical": 12.00 }
- ],
+ {
+ "command": "ssh @host uptime"
+ },
"dirsize":
- [
- { "path": "/var/log", "warning": 30000000, "critical": 40000000 }
- ],
+ {
+ "command": "ssh @host du -chs @path"
+ },
+ "filesize":
+ {
+ "command": "ssh @host du -chs @path"
+ },
+ "loggedinusercount":
+ {
+ "command": "ssh @host who | wc -l"
+ },
+ "loggedinusers":
+ {
+ "command": "ssh @host who"
+ },
+ "swapusage":
+ {
+ "command": "ssh @host cat /proc/swaps"
+ },
"processcount":
- [
- { "warning": 3000, "critical": 3800 }
- ],
+ {
+ "command": "ssh @host ps ax | wc -l"
+ },
"processcountbyname":
- [
- { "name": "java", "warning": 100, "critical": 200 }
- ],
+ {
+ "command": "ssh @host ps ax | grep @name | wc -l"
+ },
"fileage":
- [
- { "file": "/var/backup/server_1", "warning": 2, "critical": 3 }
- ],
- "htmlcontent":
- [
- { "url": "@host/test.php", "content": "
Server up!
" }
- ]
- }
- },
- "www.unixpeople.org":
- {
- "host": "23.23.23.23",
- "parent": "router.systemchaos.org",
- "services":
- {
- "discusage":
- [
- { "device": "/dev/sda1", "warning": "80%", "critical": "90%" }
- ],
- "load":
- [
- { "device": "all", "warning": 8.00, "critical": 12.00 }
- ]
- }
- },
- "www.systemchaos.org":
- {
- "host": "www.systemchaos.org",
- "parent": "router.systemchaos.org",
- "services":
- {
- "htmlcontent":
- [
- { "url": "@host", "content": "SYSTEMCHAOS" }
- ]
- }
- },
- "router.systemchaos.org":
- {
- "services":
- {
+ {
+ "command": "ssh @host ls -l @file"
+ },
"ping":
- [
- { "warning": "100ms", "critical": "250ms" }
- ]
- }
+ {
+ "command": "ping @host"
+ },
+ "snmpget":
+ {
+ "command": "snmpget -v1 -c public $oid "
+ },
+ "busy_waiting":
+ {
+ "command": "sleep 3600"
+ },
+ "htmlcontent":
+ {
+ "command": "wget -qO- @url",
+ "comment": "Get HTML Content for a string lookup."
+ }
+ },
+ "filters":
+ {
+ "email":
+ {
+ "command": "/usr/bin/warn_the_admin_mail @member @+message",
+ "comment": "Sends an E-Mail to the member.",
+ "priority": 1
+ },
+ "sms":
+ {
+ "command": "/usr/bin/warn_the_admin_sms @member @+message",
+ "comment": "Sends a Short Message to the member.",
+ "priority": 0
+ },
+ "foo":
+ {
+ "command": "/usr/bin/warn_the_admin_foo @member @+message",
+ "priority": 500
+ },
+ "mongowriter":
+ {
+ "command": "./plugins/mongowriter.py @+message localhost 27017 linspector123",
+ "priority": 1000
+ }
+ },
+ "members":
+ {
+ "hanez":
+ {
+ "name": "Johannes Findeisen",
+ "comment": "Just a nerd doing admin stuff...",
+ "parent": "admin",
+ "filters":
+ {
+ "email": "you@hanez.org",
+ "sms": "+23345567"
+ }
+ },
+ "linspector":
+ {
+ "name": "Linspector BOT",
+ "comment": "Botty Botsen...",
+ "parent": "admin",
+ "filters":
+ {
+ "email": "botty@hanez.org",
+ "sms": "+23345567213123"
+ }
+ },
+ "unixpeople":
+ {
+ "name": "Hanna Findeisen",
+ "comment": "Master of UNIX",
+ "parent": "admin",
+ "filters":
+ {
+ "email": "master@hanez.org",
+ "sms": "+2334556733333"
+ }
+ },
+ "admin":
+ {
+ "name": "Peter Hansen",
+ "comment": "The son of Hans-Peter Hansen",
+ "parent": "ultraadmin",
+ "filters":
+ {
+ "email": "admin@systemchaos.org",
+ "sms": "+23345567",
+ "phone": "+435345345"
+ }
+ },
+ "ultraadmin":
+ {
+ "name": "Hans-Peter Hansen (CEO)",
+ "comment": "The guru of the Datacenter",
+ "parent": "darthvader",
+ "filters":
+ {
+ "email": "bofh@systemchaos.org",
+ "sms": "+23345567",
+ "phone": "+435345345"
+ }
+ },
+ "darthvader":
+ {
+ "name": "Darth Vader",
+ "comment": "The Father",
+ "filters":
+ {
+ "email": "darth.vader@systemchaos.org"
+ }
+ },
+ "jens":
+ {
+ "name": "Jens Larssen",
+ "comment": "Our network guru",
+ "filters":
+ {
+ "email": "jens@systemchaos.org",
+ "sms": "+23345567",
+ "phone": "+435345345"
+ }
+ },
+ "ruff":
+ {
+ "name": "Ruffn Buffn",
+ "filters":
+ {
+ "sms": "+23343457"
+ }
+ },
+ "mongowriter":
+ {
+ "name": "MongoDB Database writer plugin",
+ "filters":
+ {
+ "mongowriter": "localhost"
+ }
+ }
+ },
+ "periods":
+ {
+ "twentyfoursevenX":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "hour": "*",
+ "minute": "5",
+ "second": "",
+ "comment": "All day all night... every five minutes!"
+ },
+ "twentyfour_weekdays":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "day_of_week": "mon,tue,wed,thu,fri",
+ "hour": "*",
+ "minute": "5"
+ },
+ "twentyfour_weekend":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "day_of_week": "5-6",
+ "hour": "*",
+ "minute": "15"
+ },
+ "onmonday":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "day_of_week": "mon",
+ "hour": "*",
+ "minute": "5"
+ },
+ "onfriday":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "day_of_week": "fri",
+ "hour": "0-20",
+ "minute": "5"
+ },
+ "onmondayandfriday":
+ {
+ "year": "*",
+ "month": "*",
+ "day": "*",
+ "week": "*",
+ "day_of_week": "mon,fri",
+ "hour": "*",
+ "minute": "5"
+ },
+ "hanezbirthday":
+ {
+ "year": "*",
+ "month": "12",
+ "day": "6"
+ },
+ "ruffdoesnever":
+ {
+ }
+ },
+ "hosts":
+ {
+ "hanez":
+ {
+ "host": "www.hanez.org",
+ "services":
+ {
+ "discusage":
+ [
+ { "device": "/dev/sda1", "warning": "80%", "critical": "90%" },
+ { "device": "/dev/sda2", "warning": "70%", "critical": "90%" },
+ { "device": "/dev/sda3", "warning": "70GB", "critical": "90GB" }
+ ],
+ "load":
+ [
+ { "warning": 8.00, "critical": 12.00 }
+ ],
+ "dirsize":
+ [
+ { "path": "/var/log", "warning": 30000000, "critical": 40000000 }
+ ],
+ "processcount":
+ [
+ { "warning": 3000, "critical": 3800 }
+ ],
+ "processcountbyname":
+ [
+ { "name": "java", "warning": 100, "critical": 200 }
+ ],
+ "fileage":
+ [
+ { "file": "/var/backup/server_1", "warning": 2, "critical": 3 }
+ ],
+ "htmlcontent":
+ [
+ { "url": "@host/test.php", "content": "Server up!
" }
+ ]
+ }
+ },
+ "www.unixpeople.org":
+ {
+ "host": "23.23.23.23",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "discusage":
+ [
+ { "device": "/dev/sda1", "warning": "80%", "critical": "90%" }
+ ],
+ "load":
+ [
+ { "device": "all", "warning": 8.00, "critical": 12.00 }
+ ]
+ }
+ },
+ "www2.unixpeople.org":
+ {
+ "host": "23.23.23.24",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "discusage":
+ [
+ { "device": "/dev/sda1", "warning": "80%", "critical": "90%" }
+ ],
+ "load":
+ [
+ { "device": "all", "warning": 8.00, "critical": 12.00 }
+ ]
+ }
+ },
+ "www3.unixpeople.org":
+ {
+ "host": "23.23.23.25",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "discusage":
+ [
+ { "device": "/dev/sda1", "warning": "80%", "critical": "90%" }
+ ],
+ "load":
+ [
+ { "device": "all", "warning": 8.00, "critical": 12.00 }
+ ]
+ }
+ },
+ "www.systemchaos.org":
+ {
+ "host": "www.systemchaos.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "htmlcontent":
+ [
+ { "url": "@host", "content": "SYSTEMCHAOS" }
+ ]
+ }
+ },
+ "devserver":
+ {
+ "host": "devserver.systemchaos.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www01.linspector.org":
+ {
+ "host": "www01.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www02.linspector.org":
+ {
+ "host": "www02.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www03.linspector.org":
+ {
+ "host": "www03.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www04.linspector.org":
+ {
+ "host": "www04.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www05.linspector.org":
+ {
+ "host": "www05.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www06.linspector.org":
+ {
+ "host": "www06.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www07.linspector.org":
+ {
+ "host": "www07.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "www08.linspector.org":
+ {
+ "host": "www08.linspector.org",
+ "parent": "router.systemchaos.org",
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ },
+ "router.systemchaos.org":
+ {
+ "services":
+ {
+ "ping":
+ [
+ { "warning": "100ms", "critical": "250ms" }
+ ]
+ }
+ }
+ },
+ "hostgroups":
+ {
+ "all":
+ {
+ "members": ["admin"],
+ "hosts": ["hanez",
+ "www.unixpeople.org",
+ "www2.unixpeople.org",
+ "www3.unixpeople.org",
+ "www.systemchaos.org",
+ "router.systemchaos.org"],
+ "parent": "network",
+ "threshold": 10,
+ "services":
+ {
+ "load": ["onmondayandfriday"],
+ "discusage":["onmondayandfriday"],
+ "ping": ["onmondayandfriday"]
+ }
+ },
+ "hanez":
+ {
+ "members": ["hanez", "jens"],
+ "hosts": ["hanez", "router.systemchaos.org", "www.unixpeople.org", "www2.unixpeople.org", "www3.unixpeople.org"],
+ "parent": "network",
+ "threshold": 5,
+ "services":
+ {
+ "load": ["hanezbirthday"],
+ "discusage": ["onmondayandfriday"],
+ "ping": ["onmondayandfriday"]
+ }
+ },
+ "unixpeople":
+ {
+ "members": ["unixpeople", "admin", "hanez", "nobody"],
+ "hosts": ["www.unixpeople.org", "www2.unixpeople.org", "www3.unixpeople.org"],
+ "parent": "network",
+ "threshold": 5,
+ "services":
+ {
+ "load": ["onmondayandfriday"],
+ "discusage": ["onmondayandfriday"],
+ "ping": ["twentyfourseven"]
+ }
+ },
+ "linspector-01":
+ {
+ "members": ["linspector", "hanez", "nobody"],
+ "hosts": ["www01.linspector.org", "www02.linspector.org", "www03.linspector.org", "www04.linspector.org",
+ "www05.linspector.org", "www06.linspector.org", "www07.linspector.org", "www08.linspector.org"],
+ "parent": "network",
+ "threshold": 5,
+ "services":
+ {
+ "load": ["twentyfourseven"],
+ "discusage": ["twentyfourseven"],
+ "ping": ["twentyfourseven"]
+ }
+ },
+ "devserver":
+ {
+ "members": ["devs", "hanez"],
+ "hosts": ["dev.hanez.org"],
+ "parent": "network",
+ "threshold": 5,
+ "services":
+ {
+ "load": ["twentyfourseven"],
+ "discusage": ["twentyfourseven"],
+ "ping": ["twentyfourseven"]
+ }
+ },
+ "network":
+ {
+ "members": ["jens"],
+ "hosts": ["router.systemchaos.org"],
+ "threshold": 5,
+ "services":
+ {
+ "load": ["onmondayandfriday"],
+ "ping": ["twentyfourseven"]
+ }
+ },
+ "ruff":
+ {
+ "members": ["ruff", "hanez"],
+ "hosts": ["www.fuff.org", "www.unixpeople.org"],
+ "threshold": 100,
+ "services":
+ {
+ "busy_waiting": ["ruffdoesnever"]
+ }
+ }
+ },
+ "layouts" :
+ {
+ "layout_1":
+ {
+ "hostgroups": ["all", "hanez", "network"],
+ "enabled": true
+ },
+ "layout_2":
+ {
+ "hostgroups": ["hanez", "ruff"],
+ "enabled": false
+ }
}
- },
- "hostgroups":
- {
- "all":
- {
- "members": ["admin"],
- "hosts": ["hanez",
- "www.unixpeople.org",
- "www.systemchaos.org",
- "router.systemchaos.org"],
- "parent": "network",
- "threshold": 10,
- "services":
- {
- "load": ["twentyfourseven"],
- "discusage":["twentyfourseven"],
- "ping": ["twentyfourseven"]
- }
- },
- "hanez":
- {
- "members": ["hanez"],
- "hosts": ["hanez","router.systemchaos.org"],
- "parent": "network",
- "threshold": 5,
- "services":
- {
- "load": ["onmondayandfriday"],
- "discusage": ["onmondayandfriday"],
- "ping": ["onmondayandfriday"]
- }
- },
- "network":
- {
- "members": ["jens"],
- "hosts": ["router.systemchaos.org"],
- "threshold": 5,
- "services":
- {
- "load": ["twentyfourseven"],
- "ping": ["twentyfourseven"]
- }
- },
- "ruff":
- {
- "members": ["ruff", "hanez"],
- "hosts": ["www.fuff.org"],
- "threshold": 100,
- "services":
- {
- "busy_waiting": ["ruffdoesnever"]
- }
- }
- },
- "layouts" :
- {
- "layout_1":
- {
- "hostgroups": ["all", "hanez", "network"],
- "enabled": true
- },
- "layout_2":
- {
- "hostgroups": ["hanez", "ruff"],
- "enabled": false
- }
- }
}