Hootsuite Health Checks
The API that Hootsuite uses for monitoring service health.
Status ¶
Status endpoints used to check the health of a service.
Am I Up ¶
/status/am-i-upGET/status/am-i-up
Checks if the service is running. This endpoint does not check any dependencies, it simply returns “OK”.
Example URI
200Headers
Content-Type: application/textBody
"OK"Aggregate ¶
/status/aggregateGET/status/aggregate?type={type}
Checks the overall status of the service by checking the status of dependencies.
By default, this endpoint checks all dependencies or can be filtered to check only internal or external
dependencies.
Example URI
- type
string(optional) Example: "internal"The type of dependencies to check (internal, external).
200Headers
Content-Type: application/jsonBody
[
"OK"
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}200Headers
Content-Type: application/jsonBody
[
"CRIT",
{
"description": "aggregate check CRIT",
"result": "CRIT",
"details": "A detailed error message"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}200Headers
Content-Type: application/jsonBody
[
"WARN",
{
"description": "aggregate check WARN",
"result": "WARN",
"details": "A detailed warning message"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}About ¶
/status/aboutGET/status/about
Gets metadata about the service including it’s dependencies and their current status
Example URI
200Headers
Content-Type: application/jsonBody
{
"id": "awesome",
"name": "Awesome Service",
"description": "This service does awesome stuff.",
"protocol": "http",
"owners": [
"Adam <adam@example.com>",
"Denis <denis@example.com>"
],
"version": "1.1.0.5a1dea1",
"host": "app1.staging.example.com",
"projectRepo": "https://github.com/hootsuite/awesome-service",
"projectHome": "https://documentation.com/awesome-service",
"logsLinks": [
"http://logging.com/logs",
"http://logging.com/errors"
],
"statsLinks": [
"http://graphs.com/awesome-service-dashboard",
"http://graphs.com/awesome-service-dashboard-2"
],
"dependencies": [
{
"name": "Mysql DB",
"status": [
"OK"
],
"statusDuration": 0.001469342,
"statusPath": "mysql",
"type": "internal",
"isTraversable": false
},
{
"name": "Another Service",
"status": [
"OK"
],
"statusDuration": 0.000605037,
"statusPath": "another-service",
"type": "service",
"isTraversable": true
}
],
"customData": [
"a-key": "a-value"
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"protocol": {
"type": "string"
},
"owners": {
"type": "array"
},
"version": {
"type": "string"
},
"host": {
"type": "string"
},
"projectRepo": {
"type": "string",
"description": "service (string, required) Link to project source control"
},
"projectHome": {
"type": "string",
"description": "service (string, required) Link to the documentation or homepage of the service"
},
"logsLinks": {
"type": "array"
},
"statsLinks": {
"type": "string",
"description": "service-dashboard\", \"http://graphs.com/awesome-service-dashboard-2\"] (array[string], required)"
},
"dependencies": {
"type": "array"
},
"customData": {
"type": "object",
"properties": {}
}
},
"required": [
"id",
"name",
"description",
"protocol",
"owners",
"version",
"host",
"logsLinks",
"dependencies"
]
}Traverse ¶
/status/traverseGET/status/traverse?dependencies={dependencies}&action={action}
Traverse to another node in the graph and run an “action” at that level and return the result. The default action is about.
Example URI
- dependencies
string(optional) Default: `` Example: service1,service2A comma delimited list of services to traverse.
- action
string(optional) Default: about Example: aboutThe action to run at the last node in the traversal.
200Headers
Content-Type: application/jsonBody
{
"id": "awesome",
"name": "Awesome Service",
"description": "This service does awesome stuff.",
"protocol": "http",
"owners": [
"Adam <adam@example.com>",
"Denis <denis@example.com>"
],
"version": "1.1.0.5a1dea1",
"host": "s1.staging.example.com",
"projectRepo": "https://github.com/hootsuite/awesome-service",
"projectHome": "https://documentation.com/awesome-service",
"logsLinks": [
"http://logging.com/logs",
"http://logging.com/errors"
],
"statsLinks": [
"http://graphs.com/awesome-service-dashboard",
"http://graphs.com/awesome-service-dashboard-2"
],
"dependencies": [
{
"name": "Mysql DB",
"status": [
"OK"
],
"statusDuration": 0.001469342,
"statusPath": "mysql",
"type": "internal",
"isTraversable": false
},
{
"name": "Another Service",
"status": [
"OK"
],
"statusDuration": 0.000605037,
"statusPath": "another-service",
"type": "service",
"isTraversable": true
}
],
"customData": [
"a-key": "a-value"
]
}Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"protocol": {
"type": "string"
},
"owners": {
"type": "array"
},
"version": {
"type": "string"
},
"host": {
"type": "string"
},
"projectRepo": {
"type": "string",
"description": "service (string, required) Link to project source control"
},
"projectHome": {
"type": "string",
"description": "service (string, required) Link to the documentation or homepage of the service"
},
"logsLinks": {
"type": "array"
},
"statsLinks": {
"type": "string",
"description": "service-dashboard\", \"http://graphs.com/awesome-service-dashboard-2\"] (array[string], required)"
},
"dependencies": {
"type": "array"
},
"customData": {
"type": "object",
"properties": {}
}
},
"required": [
"id",
"name",
"description",
"protocol",
"owners",
"version",
"host",
"logsLinks",
"dependencies"
]
}Dependency ¶
/status/{dependency}GET/status/{dependency}
Gets the status of a configured dependency using its statusPath. There are 3 levels of status:
OK - Everything is all good
WARN - The dependency is in a sub optimal state. See details in response for more info.
CRIT - The dependency has an error. See details in response for more info.
Example URI
- dependency
string(required) Example: "mysql-db"The
statusPathof configured dependency to check the status of.
200Headers
Content-Type: application/jsonBody
[
"OK"
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}200Headers
Content-Type: application/jsonBody
[
"CRIT",
{
"description": "mysql check CRIT",
"result": "CRIT",
"details": "Can't connect to database"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}200Headers
Content-Type: application/jsonBody
[
"WARN",
{
"description": "mysql check WARN",
"result": "WARN",
"details": "Running out of disk space"
}
]Schema
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "array"
}