@dadi/status

1.0.4 • Public • Published

DADI Status

npm (scoped) Coverage Status Build Status JavaScript Style Guide semantic-release

Overview

DADI Status returns a JSON object containing information about an application's platform, process and health state.

Data returned

  • Latest version of the specified NPM module (e.g. @dadi/web)
  • Node version
  • Process ID
  • Process uptime
  • Process memory usage
  • Hostname
  • System platform and version
  • System Uptime
  • Memory, free and total
  • Current load averages

Health Check Routes

In addition to system information, if a collection of routes are specified DADI Status will send a request to each one and return data about the response:

  "routes": [
    {
      "route": "/movies/latest",
      "status": 200,
      "responseTime": 0.039,
      "healthStatus": "Green"
    }
  ]

User-Agent identifier

DADI Status passes a User-Agent header to idenitify itself when making health check requests. The following header is used:

'User-Agent': '@dadi/status'

Usage

Install

npm install @dadi/status --save

Add a route

var dadiStatus = require('@dadi/status')

app.use('/api/status', function(req, res, next) {
  var params = {
    site: "WC?",
    package: '@dadi/web',
    version: version,
    healthCheck: {
      baseUrl: 'http://127.0.0.1:3001',
      authorization: 'Bearer 123abcdef',
      routes: [{
        route: '/movies/latest',
        expectedResponseTime: 10
      }]
    }
  }

  dadiStatus(params, function(err, data) {
    if (err) return next(err)
    var resBody = JSON.stringify(data, null, 2)

    res.statusCode = 200
    res.setHeader('Content-Type', 'application/json')
    res.setHeader('content-length', Buffer.byteLength(resBody))
    res.end(resBody)
  })
})

Sample response

{
  "service": {
    "site": "WC?",
    "package": "@dadi/web",
    "versions": {
      "current": "1.1.2",
      "latest": "1.1.2"
    }
  },
  "process": {
    "pid": 19463,
    "uptime": 3.523,
    "uptimeFormatted": "0 days 0 hours 0 minutes 3 seconds",
    "versions": {
      "http_parser": "2.3",
      "node": "0.12.0",
      "v8": "3.28.73",
      "uv": "1.0.2",
      "zlib": "1.2.8",
      "modules": "14",
      "openssl": "1.0.1l"
    }
  },
  "memory": {
    "rss": "86.508 MB",
    "heapTotal": "65.771 MB",
    "heapUsed": "32.938 MB"
  },
  "system": {
    "platform": "darwin",
    "release": "14.5.0",
    "hostname": "hudson",
    "memory": {
      "free": "37.781 MB",
      "total": "8.000 GB"
    },
    "load": [
      2.2958984375,
      2.27197265625,
      2.25927734375
    ],
    "uptime": 155084,
    "uptimeFormatted": "1 days 19 hours 4 minutes 44 seconds"
  },
  "routes": [
    {
      "route": "/movies/latest",
      "responseTime": 0.039,
      "healthStatus": "Green"
    }
  ]
}

Licence

Copyright notice
(C) 2018 DADI+ Limited support@dadi.co
All rights reserved

This product is part of DADI.
DADI is free software; you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version ("the AGPL"). If you wish to use DADI outside the scope of the AGPL, please contact us at info@dadi.co for details of alternative licence arrangements.

This product may be distributed alongside other components available under different licences (which may not be AGPL). See those components themselves, or the documentation accompanying them, to determine what licences are applicable.

DADI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

The GNU Affero General Public License (AGPL) is available at http://www.gnu.org/licenses/agpl-3.0.en.html.

This copyright notice MUST APPEAR in all copies of the product!

Readme

Keywords

none

Package Sidebar

Install

npm i @dadi/status

Weekly Downloads

8

Version

1.0.4

License

SEE LICENSE IN GPL.md

Unpacked Size

16.5 kB

Total Files

9

Last publish

Collaborators

  • annybs
  • josephdenne
  • jimlambie
  • adamkdean