MagnetoDB/specs/monitoring-health-check

Monitoring - healthcheck http request
Launchpad:

Request for check MagnetoDB health status.

Specification status
Approved isviridov Approved "ikhudoshyn"

Problem Description
Service administrators should have an ability for lightweigt checking of MagnetoDB health status. it is also needed for loadbalancers in order to decide if instance can process requests

Proposed Change
It should be http request without credentials, that will allow to understand that:
 * 1) magnetodb-api service is running
 * 2) Keystone is available to magnetodb-api
 * 3) Backend is available to magnetodb-api and working properly

Use Cases

 * 1) Fast and easy healthcheck for loadbalancer
 * 2) Full manual healthcheck just with simple GET request

Usage scenarios

 * 1) Checking magnetodb-api server availability without  subsystems
 * 2) Checking magnetodb-api server availability and checking its connectivity to Keystone and Cassandra

Request Syntax
GET /healthcheck GET /healthcheck?fullcheck=true

Headers
* User-Agent * Accept: text/plain

Response Code
200 or 503

Response Body
"OK|Cassanra: ERROR|Keystone: ERROR|Keystone: ERROR, Cassandra: ERROR"

Intristic implementation
Keystone availability will be checked by sending request:

GET /

This request should return available versions of Keystone API with 200 code.

Cassandra availability will be checked with quering "magnetodb.table_info" table:

SELECT * FROM magnetodb.table_info LIMIT 1;

Method

bool health_check

will be added to storage API.

Alternatives
none

Security Impact
We consider that this request will not need any credentials and an ability to send it to MagnetoDB should be under external control

Notifications Impact
none

Other End User Impact
none

Performance Impact
none

Other Deployer Impact
none

Developer Impact
none

Implementation
Same health check request needs to be implemented for magnetodb-streaming-api

Assignee(s)
Primary assignee: aostapenko

Other contributors: none

Work Items
none

Dependencies
none

Documentation Impact
Feature needs to be described in doc sources