Skip to content

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.

License

Notifications You must be signed in to change notification settings

hyperjumptech/monika

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Folders and files

NameName
Last commit message
Last commit date
Jul 24, 2024
Oct 23, 2023
Mar 11, 2022
Jul 18, 2022
Dec 28, 2023
Feb 27, 2023
Jun 21, 2024
Nov 20, 2024
May 25, 2022
May 6, 2024
Apr 29, 2024
Mar 28, 2022
Dec 15, 2024
Apr 29, 2024
Jul 2, 2024
Mar 9, 2021
Oct 23, 2023
Mar 7, 2024
May 29, 2023
Mar 18, 2024
Nov 13, 2023
Dec 13, 2024
Mar 9, 2021
Jul 2, 2024
Feb 12, 2024
Mar 9, 2021
Sep 16, 2021
May 16, 2024
Oct 15, 2021
Jan 31, 2022
Oct 23, 2023
May 13, 2024
Dec 13, 2024
Dec 13, 2024
Nov 7, 2023
May 7, 2024
Oct 11, 2022
Nov 10, 2023

Repository files navigation

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 20 (LTS), and npm v10.

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

git clone [email protected]: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.

HTTPBin
probes:
  - id: 'should not follow redirect'
    requests:
      - url: http://localhost:3000/status/302
        followRedirects: 0
    alerts:
      - assertion: response.status != 302
        message: You should not follow the redirect
  - id: 'should follow redirect with default config'
    requests:
      - url: http://localhost:3000/absolute-redirect/20
    alerts:
      - assertion: response.status == 302
        message: You are not following the redirect
  - id: 'should follow redirect with customized config'
    requests:
      - url: http://localhost:3000/status/302
        followRedirects: 2
    alerts:
      - assertion: response.status == 302
        message: You are not following the redirect
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.