Skip to content

CarlMurray/monitoring-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

An MVP data processing system which collects data (metrics) from a source (laptop) and sends it through a data pipeline for processing and storage before analysing it against user-defined rules which generate alerts.

i.e. A very basic IT monitoring system.

Goals

  • Get hands-on with technologies I haven't used before.
  • Learn about software architecture at a basic level.
  • Learn the basic fundamentals of how an IT monitoring system works.
classDiagram

    %% RELATIONSHIPS
    Policy o-- IAction
    MetricDataPoint --|> ITelemetryDataPoint
    LogDataPoint --|> ITelemetryDataPoint
    IRawDataPoint ..|> ITelemetryDataPoint
    ITelemetryDataPoint *-- IMessageField
    PolicyEngine o-- Policy
    PolicyEngine o-- ITelemetryDataPoint
    MacOSMetricDataPoint --|> MetricDataPoint
    MacOsAgentDataParser --|> IDataParser
    MacOsAgentDataParser ..> MacOSMetricDataPoint
    IDataParser ..> ITelemetryDataPoint
    Policy <..> PolicyEvaluationResult
    PolicyEvaluationResult ..> ITelemetryDataPoint

    %% NOTES
    note for MacOSMetricDataPoint "Concrete class implements\nlog parsing & normalisation logic."

    namespace Policies{
        class Policy{
            +Id: guid
            +Name : string
            +Description : string
            +Conditions : Condition[]
            +Actions : IAction[]
            +CreatedBy : User
            +CreatedAt : DateTime
            +Evaluate(dataPoint : ITelemetryDataPoint) PolicyEvaluationResult
        }
        class PolicyEvaluationResult{
            +Id : guid
            +Value : bool
            +PolicyId : string
            +DataPoint : ITelemetryDataPoint
        }
        class PolicyEngine{
            +Policies : List~Policy~
            +DataToAnalyse : List~ITelemetryDataPoint~
            +LastDataPointAnalysedId : string
            +FetchDataToAnalyse() : void
            +ExecutePolicy(policy : Policy, dataPoint : ITelemetryDataPoint) bool
            +ClearDataToAnalyse() : void
        }
    }
    class IAction{
        <<Interface>>
        +Id : guid
        +Name : string
        +Description : string
        +Trigger() void
    }
    namespace DataPoints{
        class IRawDataPoint{
            <<Interface>>
            +Content : string
        }
        class ITelemetryDataPoint{
            <<Interface>>
            +Id : guid
            +Timestamp : DateTime
            +Message : MessageField~T~[]
            +Source : string
            +ParseRawDataPoint(rawDataPoint : IRawDataPoint) ITelemetryDataPoint
            +ITelemetryDataPoint(rawDataPoint : IRawDataPoint)
        }
        class IMessageField~T~{
            <<Interface>>
            +Name : string
            +Value : T
        }
        class MetricDataPoint{
            +Id : guid
            +Timestamp : DateTime
            +Message : IMessageField~double~[]
            +Source : string
            +ParseRawDataPoint(rawDataPoint : IRawDataPoint) ITelemetryDataPoint
            +ITelemetryDataPoint(rawDataPoint : IRawDataPoint)
        }
        class LogDataPoint{
            +Id : guid
            +Timestamp : DateTime
            +Message : IMessageField~string~[]
            +Source : string
            +ParseRawDataPoint(rawDataPoint : IRawDataPoint) ITelemetryDataPoint
            +ITelemetryDataPoint(rawDataPoint : IRawDataPoint)
        }
        class MacOSMetricDataPoint{
            +Id : guid
            +Timestamp : DateTime
            +Message : IMessageField~double~[]
            +Source : string
            +MacOSMetricDataPoint(rawDataPoint : IRawDataPoint)
            +ParseRawDataPoint(rawDataPoint : RawDataPoint)$ MacOSMetricDataPoint
        }
    }
    namespace DataParsers{
        class IDataParser{
            <<Interface>>
            +Parse(rawDataPoint : IRawDataPoint) List~ITelemetryDataPoint~
        }
        class MacOsAgentDataParser{
            +Parse(rawDataPoint : IRawDataPoint) List~MacOSMetricDataPoint~
        }
    }
Loading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published