Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


hapi process monitoring

Subscribe to updates I use good

Statistics on good

Number of watchers on Github 468
Number of open issues 13
Average time to close an issue 11 days
Main language JavaScript
Average time to merge a PR 4 days
Open pull requests 17+
Closed pull requests 18+
Last commit over 2 years ago
Repo Created over 7 years ago
Repo Last Updated over 2 years ago
Size 893 KB
Organization / Authorhapijs
Latest Releasev7.1.0
Page Updated
Do you use good? Leave a review!
View open issues (13)
View good activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating good for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

good Logo

hapi process monitoring

Build StatusCurrent Version

Lead Maintainer: Adam Bretz

good 8 only supports hapi 17+ for hapi 16 please use good 7

good is a hapi plugin to monitor and report on a variety of hapi server events as well as ops information from the host machine. It listens for events emitted by hapi server instances and pushes standardized events to a collection of streams.

Example Usage

const Hapi = require('hapi');
const server = new Hapi.Server();

const options = {
    ops: {
        interval: 1000
    reporters: {
        myConsoleReporter: [{
            module: 'good-squeeze',
            name: 'Squeeze',
            args: [{ log: '*', response: '*' }]
        }, {
            module: 'good-console'
        }, 'stdout'],
        myFileReporter: [{
            module: 'good-squeeze',
            name: 'Squeeze',
            args: [{ ops: '*' }]
        }, {
            module: 'good-squeeze',
            name: 'SafeJson'
        }, {
            module: 'good-file',
            args: ['./test/fixtures/awesome_log']
        myHTTPReporter: [{
            module: 'good-squeeze',
            name: 'Squeeze',
            args: [{ error: '*' }]
        }, {
            module: 'good-http',
            args: ['http://prod.logs:3000', {
                wreck: {
                    headers: { 'x-api-key': 12345 }

await server.register({
    plugin: require('good'),

await server.start();

console.info(`Server started at ${ server.info.uri }`);

This example does the following:

  1. Sets up the reporter named myConsoleReporter listening for 'response' and 'log' events and writes them to process.stdout.
  2. Sets up the reporter named myFileReporter to listen for 'ops' events and logs them to ./test/fixtures/awesome_log.
  3. Sets up the reporter named myHTTPReporter to listen for error events and POSTs them to http://prod.logs:3000 with additional settings to passed into Wreck

See the Reporter Interface section of the API documentation on how to configure reporters.

NOTE: Ensure calling server.connection prior to registering Good. request and response event listeners are only registered on connections that exist on server at the time Good is registered.

Looking for more examples? Check out the examples folder.

Existing streams

The following streams are maintained by the hapi community and are known to work with good. Any transform or write stream can work with good, these are just a few inside the hapijs organization.


See the API Reference.

good open issues Ask a question     (View All Issues)
  • over 3 years good-logs do not occur when starting my server
  • over 3 years Add detection for errrornous reporter pipeline
  • almost 4 years Request headers and payload not logged in 'request' events, only 'response' events
  • almost 4 years Update Tests
  • almost 4 years Improve documentation to explain Reporters type
  • almost 4 years Update Dependencies
  • almost 4 years Tap into hapi podium
  • almost 4 years Support hapi15 + Only
  • about 4 years Add Custom Transform Stream Option
  • about 4 years Restore Wreck Logging
  • about 5 years Incoming Request Logging
good open pull requests (View All Pulls)
  • Pass and log err object to reporter 'error' handler
  • Restore wreck logging #469
  • Closes #485
  • Support functions as modules
  • Restored wreck logging. Closes #469.
  • added validations for pipelines fix #525
  • added info about reporter types
  • non breaking change adds responseSentTime. Closes #530
  • responseTime to use request responded. Closes #530
  • update stream example in docs and other minors
  • Don't create a reporter if no streams were provided. Addresses #534
  • Upgrade async
  • Test fixes. Closes #519
  • Add extension function for request includes
  • Fix a typo in the example code
  • Updated README.md to correct options usage
  • Add error property to server logs
good questions on Stackoverflow (View All Questions)
  • call multiple times viewForAnnotation and pinview.image not good
  • basic post put delete methods are not working in laravel while get method is good
  • Is deploy scrapy on multiple ubuntu machine on AWS ec2 a good choice
  • Subraction of two fields is not performing good
  • What are good Ruby tools for parsing meta data from pages on news websites? I want to auto-generating page summaries
  • Is there a good way to generate random data in Lua with no repeats?
  • Good C Coding practice/etiquette for integrity checks
  • A Good book for Data structures and algorithms in C
  • Are there any good Jokes, Quots APIs?
  • what data is good for replacing missing value
  • What are the good books for data structure & algorithm?
  • Adding in a for loop messes up my calculations when finding the average of 2 lists of numbers. Anyone have a good solution?
  • What should I learn to become a good java web programmer after I got a Java Certification?
  • Identifying a good quickstart Archetype project for Selenium Webdriver,TestNG
  • Is it good practice to use pointers as class members?
  • Is it a good idea to mkbundle my .NET software?
  • R: minpack.lm::nls.lm failed with good results
  • Private vs Protected - Visibility Good-Practice Concern
  • Bad Kibana performance, but good ElasticSearch performance
  • Good tutorial for begining with Elastica for ElasticSearch
  • which server would be best for about a million users for a java based application? And which company would be good?
  • What are some good platforms to develop iOS and Android apps
  • Is there any good open source project that uses TestNG?
  • Is it good to give null a meaning along with two Boolean value to represent ternary balue in filtering?
  • Are there any good + free + Lightweight+ Linux UML Design tools?
  • Handling error conditions on a web page for good user experience
  • Programming exercise in java - having hierachical structure, what is a good data-model and how to sort and filter things?
  • What is a good way to handle multiple response codes for an API?
  • Neo4j/Cypher _LOCK_ good or bad?
  • Backbone localStorage doesn't use the good sync method
good list of languages used
Other projects in JavaScript