Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ackee-node-monitor-module

Package Overview
Dependencies
Maintainers
1
Versions
16
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ackee-node-monitor-module

`Ackee Node Monitor Module` collects request and response data and sends this information using [winston-elasticsearch](https://www.npmjs.com/package/winston-elasticsearch) to collector [Elasticsearch](https://www.elastic.co/) defined in configuration

  • 0.0.15
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

Ackee Node Monitor Module

Ackee Node Monitor Module collects request and response data and sends this information using winston-elasticsearch to collector Elasticsearch defined in configuration file. Ackee Node Monitor Module sends request to collector once per timeout specified in config and only if at least one request is in collection.

Installation

# Install from npm
npm install ackee-node-monitor-module --save

Usage

First add Ackee Node Monitor Module configuration into config.js:

  • disabled: enable or disable logging
  • excludedUrls: urls excluded from logging, e.g. assets, css of js files ...
  • elastic:
    • host: specify url of Elasticsearch
    • log: log level (debug, info, trace, error)
  • winston:
    • level: log level (silly, debug, verbose, info, warn, error)
    • indexPrefix: the prefix to use to generate the index name according to the pattern -[YYYY.MM.DD]
    • timeout: flushInterval - distance between bulk writes in ms, default: 2000
  • customHeaders: array of request custom headers logged to Elastic
  • customResponseHeaders: array of response custom headers logged to Elastic
  • customReqData: array of custom request data logged to Elastic
  • customPayload: custom payload logged to Elastic

Example

module.exports = {
    ...
    ackeeNodeMonitor: {
            disabled: false,
            excludedUrls: ['/bower_components/', '/img/', '/js/', '/css/'],
            elastic: {
                host: 'someelastic.com:9200',
                log: 'trace',
            },
            winston: {
                level: 'silly',
                indexPrefix: 'nodetemplate-monitor',
                timeout: 10000
            },
            customHeaders: [
                'User-Agent'
            ],
            customReqData: [
                {
                    path: 'user',
                    name: 'user'
                },
                {
                    path: 'body.user.id',
                    name: 'userId'
                },
            ],
            customPayload: {
                appName: 'appName',
                appEnv: 'appEnv'
            },
        }
    ...
}

then require and init Ackee Node Monitor Module in server.js before calling createServer (app.listen(port);):

...
const express = require('express');
const config = require('config');

// require and init ackee-node-monitor-module
require('ackee-node-monitor-module')(config.ackeeNodeMonitor);

const app = express();
...
const server = app.listen(port);

Console output

...
AckeeNodeMonitor init
...
TRACE: 2016-11-07T09:41:22Z
  -> POST http://localhost:9200/_bulk?consistency=one&timeout=10000ms
  {"index":{"_index":"test-2016.11.07","_type":"log"}}
  {"@timestamp":"2016-11-07T09:41:22.375Z","message":"Time measuring log","severity":"info","fields":{"resTime":25.395093,"method":"GET","statusCode":200,"baseUrl":"/service","path":"/test","User-Agent":"ApacheBench/2.3","user":{"userId":1},"appName":"test"}}
  
  <- 200
  {
    "took": 136,
    "errors": false,
    "items": [
      {
        "create": {
          "_index": "test-2016.11.07",
          "_type": "log",
          "_id": "AVg-KeQJoqW3YlfWUnaJ",
          "_version": 1,
          "_shards": {
            "total": 2,
            "successful": 1,
            "failed": 0
          },
          "status": 201
        }
      }
    ]
  }

DEBUG: 2016-11-07T09:41:22Z
  Request complete

Collected data

{   
    "fields": {
        "resTime": "response time in [ms]",
        "method": "HTTP method",
        "statusCode": "HTTP status code",
        "baseUrl": "express baseUrl",
        "path": "express path",
        "timestamp": "timestamp" 
    }
}
Example
{ 
    "fields": {
        "resTime": 5.7520999999999995,
        "method": "GET",
        "statusCode": 200,
        "baseUrl": "/services",
        "path": "/test",
        "timestamp": 1474290310129,
        "user": {
            "userId": 1
        },
        "appName": "test"
    }
}

FAQs

Package last updated on 09 Nov 2016

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc