Skip to content

Monitoring and Metrics API for your Flow Framework or Neos CMS project

License

Notifications You must be signed in to change notification settings

ttreeagency/Health

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Health Monitoring for Flow Framework or Neos CMS

Package in development, not ready for production

Features

  • Create endpoints to display your application health status
  • API to create multiple health status endpoints
  • API to create custom check
  • Implement a health check for Database monitoring
  • Implement a health check for ElasticSearch monitoring
  • Implement a health check for Redis monitoring
  • Create endpoints to display your application metrics (promotheus)
  • API to create multiple metrics endpoints
  • API to create custom metrics
  • Implement a metrics for the number of node in the CR, for live workspace
  • Implement a metrics for the number of node in the CR, for non live workspaces
  • Implement a metrics for database size
  • Implement a metrics for elasticsearch indexes size
  • Implement a metrics for asset disk usage

How to create custom status endpoints ?

In your Settings.yaml:

Preset definition

Ttree:
  Health:
    presets:
      default:
        checks:
          database:
            class: Ttree\Health\Check\DatabaseCheck
          elasticsearch:
            class: Ttree\Health\Check\ElasticSearchCheck
          newsletterSender:
            class: Ttree\Health\Check\NewsletterSenderCheck
            

Routing configuration

Then you can create your routing configuration, in your Routes.yaml:

-
  name: 'health - monitoring endpoint'
  uriPattern: 'health'
  defaults:
    '@package':    'Ttree.Health'
    '@controller': 'Monitoring'
    '@action':     'index'
    '@format':     'json'
    'preset':      'default'
  appendExceedingArguments: true
  httpMethods: [GET]
  

The response should be something like this:

{
  "endpoint": "default",
  "success": {
    "count": 1,
    "message": {
      "database": {
        "status": "Success",
        "message": "Database access works"
      }
    }
  },
  "warnings": {
    "count": 1,
    "message": {
      "elasticsearch": {
        "status": "Warning",
        "message": "ElasticSearchCheck is not in green state"
      }
    }
  },
  "errors": {
    "count": 1,
    "message": {
      "newsletterSender": {
        "status": "Error",
        "message": "Newsletter Sender is down"
      }
    }
  }
}

The response status is 200 if there is not errors and warnings.

How to create custom check ?

Your custom check must implement Ttree\Health\Check\CheckInterface. The response of the run method must return an instance of Ttree\Health\Result\ResultInterface. You can use the builtin ErrorResult, WarningResult and SuccessResult.

Currently the provided check contains "dummy" code. Real implementation will be done later when the architecture of the package is finished.

How to create custom metrics endpoints ?

TODO

Sponsors & Contributors

The development of this package is sponsored by ttree (https://ttree.ch).

About

Monitoring and Metrics API for your Flow Framework or Neos CMS project

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages