- agent/controller-based architecture
- agent (daemon):
- must be written in C/C++ to be as thin as possible
- fetch data directly via libmysqlclient or via the master's HTTP API
- performs scheduled tests and reports results to the master
- pings the controller as a proof of being healthy (maybe by updating its Node db record)
- controller (daemon):
- maybe written in Ruby + ActiveRecord
- creates node error reports in case an agent did not ping after some time.
- sends out the reports as generated by the agents (email, SMS, ...)
- web ui:
- may be written in Ruby/Rails with ActiveRecord for models
- allows the user to fully control
- login control via LDAP ideally
- agent (daemon):
- manage custom inlined tests in LUA/Ruby/Bash
- test code shall keep changelog history
- manage groups (of nodes / tests)
- associate tests (with groups / nodes)
- manage scheduless - when a test has to run (Zeitplan)
- run test on: mon/tue/wed/thu/fri/sat/sun
- at time: HH:MM
- every HH:MM times
- manage reports (for tests)
- manage constraints, when a test is not to run
- Node:
uuid: stringname: stringipaddress: stringlast_heartbeat_at: datetimelast_report_at: datetimeenabled: boolremoved: bool
- Test:
enabled: boollanguage: string (bash, ruby, lua)code: text
- Group:
name: stringdescription: textenabled: bool = true
- GroupItem:
group_idref_idref_type(Node, Test)
- Association:
node_idref_idref_type(Test, Group)enabled= true
- TestResult:
test_idexit_code(a value of 0 means success, everything else is a failure)output: text (program output, stdout + stderr)
- Schedule:
minute: 0-59hour: 9-23day of month: 1-31month: 0-12 (or names, see below)day of week: 0-7 (0 or 7 is Sun, or use names)
- Constraint:
ref_idref_type(Test, Group, Node)from: datetimeto: datetimereason: string
- Comment:
-
text: string -
ref_id -
ref_type(Node, Test, Group, Constraint)vim:syntax=markdown:ts=2:sw=2:et
-