Skip to content
This repository was archived by the owner on May 8, 2021. It is now read-only.

christianparpart/cherie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Cherie - Server Monitoring System (SMS)

Requirements

  • 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
  • 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

Models

  • Node:
    • uuid: string
    • name: string
    • ipaddress: string
    • last_heartbeat_at: datetime
    • last_report_at: datetime
    • enabled: bool
    • removed: bool
  • Test:
    • enabled: bool
    • language: string (bash, ruby, lua)
    • code: text
  • Group:
    • name: string
    • description: text
    • enabled: bool = true
  • GroupItem:
    • group_id
    • ref_id
    • ref_type (Node, Test)
  • Association:
    • node_id
    • ref_id
    • ref_type (Test, Group)
    • enabled = true
  • TestResult:
    • test_id
    • exit_code (a value of 0 means success, everything else is a failure)
    • output: text (program output, stdout + stderr)
  • Schedule:
    • minute: 0-59
    • hour: 9-23
    • day of month: 1-31
    • month: 0-12 (or names, see below)
    • day of week: 0-7 (0 or 7 is Sun, or use names)
  • Constraint:
    • ref_id
    • ref_type (Test, Group, Node)
    • from: datetime
    • to: datetime
    • reason: string
  • Comment:
    • text: string

    • ref_id

    • ref_type (Node, Test, Group, Constraint)

      vim:syntax=markdown:ts=2:sw=2:et

About

a server monitoring system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages