8000 GitHub - rafaeleyng/cabot-zombie: Automate your configuration of Cabot monitoring.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on Oct 10, 2024. It is now read-only.

rafaeleyng/cabot-zombie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cabot-zombie

DEPRECATED

This is deprecated in favor of cabot-db-config, which is way faster and more reliable.


Automate your configuration of Cabot monitoring.

Cabot is a self-hosted monitoring and alert service. But unfortunately it lacks an HTTP API to automate configuration.

cabot-zombie runs a headless browser (Zombie.js) that creates your configuration based on a simple Javascript object.

Cabot let's you create multiple services, instances and checks. cabot-zombie currently supports a configuration that creates N services, each one running on N instances, and with N checks (only HTTP checks supported right now).

Install

npm i -S cabot-zombie

Configure

createServices.js

const cabotZombie = require('cabot-zombie')
const config = require('./config')

cabotZombie(config)
  .then(() => console.log('All done!'))

config.js

module.exports = {
  baseUrl: 'http://my-host-with-cabot:1234/',
  credentials: {
    username: 'docker', // cabot's default username when installed with docker
    password: 'docker', // cabot's default password when installed with docker
  },
  data: {
    services: [
      {
        name: 'service-a',
        instances: [
          {
            address: 'my-host-a', // will automatically create a default ping check to this host
            checks: [
              {
                type: 'http',
                endpoint: 'http://my-host-a/my-page',
                textMatch: 'my page should contain this',
                frequency: 1, # minute - default is 5 minutes
              },
            ],
          },
          {
            address: 'my-host-b',
            checks: [
              {
                type: 'http',
                endpoint: 'http://my-host-b/my-page',
                textMatch: 'my page should contain this',
              },
            ],
          },
        ],
      },
    ],
  },
}

Options

Second parameter to cabotZombie call is an object that can override some functions used in the process.

cabotZombie(config, {
  // customize service name. `data` contains data about the current service
  resolveServiceName: (data) => { ... },

  // customize service name. `data` contains data about the current service and instance
  resolveInstanceName: (data) => { ... },

  // customize service name. `data` contains data about the current service, instance and check
  resolveCheckName: (data) => { ... },

  // customize matching the check names to be added to a service. This is used when Zombie.js has to select the checks that are part of a service.
  customCheckNameMatcher: (checkName, data) => { ... },
})

For instance, I use these options like this:

const resolveServiceName = (data) => {
  const service = data.service
  return `${service.env}-${service.name}-service`
}

const resolveInstanceName = (data) => {
  return `${resolveServiceName(data)}-instance-${data.instanceIndex}`
}

const resolveCheckName = (data) => {
  return `${resolveInstanceName(data)}-check-${data.check.type}-${data.checkIndex}`
}

// use this to make the Zombie check the default ping check for each instance when checking all the checks for a service
const customCheckNameMatcher = (checkName, data) => {
  return checkName === `Default Ping Check for ${resolveInstanceName(data)}`
}

const options = {
  resolveServiceName,
  resolveInstanceName,
  resolveCheckName,
  customCheckNameMatcher,
}

const main = () => {
  cabotZombie(config, options)
    .then(() => console.log('All set up!'))
}

Contributing

cabot-zombie fits perfectly the configuration that I want to do, but it isn't very generic.

Any pull requests in that sense would be greatly appreciated.

License

MIT

About

Automate your configuration of Cabot monitoring.

Resources

Stars

Watchers

Forks

Packages

No packages published
0