/monika

Monika is a command line application to monitor every part of your web app using a simple YAML configuration file. Get alert not only when your site is down but also when it's slow.

Primary LanguageTypeScriptMIT LicenseMIT

Build Status codecov npm-version npm Docker

About

Monika is a command line application for synthetic monitoring. The name Monika stands for "Monitoring Berkala", which means "periodic monitoring" in the Indonesian language.

How to Use

You can find many ways to install Monika and how to start monitoring from the Quick Start page.

Contributing

Monika is a Node.js application written in TypeScript using the oclif framework.
It was developed on node v18 (LTS), and npm v9.

To start developing, clone this repository, then install the dependencies:

git clone git@github.com:hyperjumptech/monika.git
npm ci
npm run build -w packages/notification

Then, to run Monika from the source,

  • on Linux/Unix/Mac
npm start
  • on Windows
.\bin\dev.cmd

To keep the formatting consistent, run the following command to format the source code:

npm run format

Finally you can also run npm run test to prevent regression.

Once you have made the changes, open a Pull Request and explain the issue your change will fix or the feature your change will add.

For contribution details on how to add custom notifications see the New Notifications guide here.

Applying changes in monorepo workspaces folder (packages/notification)

If you are developing feature/fix related to notification by making changes inside the packages/notification folder, it's easier to temporarily change the dependency source in package.json to be like this

"@hyperjumptech/monika-notification": "*"

it will sync @hyperjumptech/monika-notification package node_modules to any changes in the packages/notification folder without running build on every code change.

See this docs for further detail

How to Test Probe Locally

If you need to test a probe locally, there are predefined services in /dev/docker-compose.yaml. You are encouraged to add other services that can be probed by Monika. Run cd dev && docker compose up to run those services.

Available Services

Use the following Monika config to probe the service.

MariaDB
probes:
  - id: mariadb
    mariadb:
      - host: localhost
        port: 3306
        username: mariadb_user
        password: mariadb_password
        database:
MySQL
probes:
  - id: mysql
    mysql:
      - host: localhost
        port: 3307
        username: mysql_user
        password: mysql_password
        database:
MongoDB
probes:
  - id: mongo
    mongo:
      - uri: mongodb://mongo_user:mongo_password@localhost:27017
PostgreSQL

Use the following Monika config to probe the service.

probes:
  - id: postgres
    postgres:
      - uri: postgres://postgres_user:postgres_password@localhost:5432/postgres_db
Redis
probes:
  - id: redis
    redis:
      - uri: redis://:redis_password@localhost:6379

How to Monitor Monika Locally

  1. Run Prometheus. Run docker compose -f ./dev/prometheus/docker-compose.yaml up.
  2. Run Monika with the Prometheus flag. Run npm start -- --prometheus 3001.
  3. Open Prometheus Expression Browser. Visit http://localhost:9090/graph.

Development References

The tools and frameworks we used in this project are listed below:

  • oclif to scaffold the CLI.
  • Prettier to format the code.
  • ESLint to statically analyze the code to quickly find problems.
  • Mocha for testing.
  • Istanbul for code coverage.

Discussions

If you need help, want to give feedback, or have a great idea to improve Monika, get involved! Let us know in the Github discussions.

Please abide by the Contributor's Code of Conduct

Further information

For detailed information, you can click on any of the specific docs below:

Monika - Open source and free HTTP monitoring tool | Product Hunt

License

MIT License.