{"id":13507208,"url":"https://github.com/hyperjumptech/monika","last_synced_at":"2025-05-14T12:10:03.746Z","repository":{"id":36978775,"uuid":"345955001","full_name":"hyperjumptech/monika","owner":"hyperjumptech","description":"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.","archived":false,"fork":false,"pushed_at":"2025-05-14T09:20:26.000Z","size":24308,"stargazers_count":612,"open_issues_count":13,"forks_count":68,"subscribers_count":12,"default_branch":"main","last_synced_at":"2025-05-14T10:40:31.756Z","etag":null,"topics":["cli","monitoring","nodejs","synthetic-monitoring","typescript"],"latest_commit_sha":null,"homepage":"https://monika.hyperjump.tech","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hyperjumptech.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCTS.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-03-09T09:39:19.000Z","updated_at":"2025-05-07T08:48:07.000Z","dependencies_parsed_at":"2023-01-17T10:45:45.196Z","dependency_job_id":"a5f4afb0-5a5d-4f3d-a3fe-52efa09f22bb","html_url":"https://github.com/hyperjumptech/monika","commit_stats":{"total_commits":782,"total_committers":40,"mean_commits":19.55,"dds":0.8350383631713555,"last_synced_commit":"dda317a155709232482cc90b2844c6673c8dc874"},"previous_names":[],"tags_count":912,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjumptech%2Fmonika","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjumptech%2Fmonika/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjumptech%2Fmonika/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hyperjumptech%2Fmonika/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hyperjumptech","download_url":"https://codeload.github.com/hyperjumptech/monika/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254140760,"owners_count":22021219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","monitoring","nodejs","synthetic-monitoring","typescript"],"created_at":"2024-08-01T02:00:27.545Z","updated_at":"2025-05-14T12:09:58.733Z","avatar_url":"https://github.com/hyperjumptech.png","language":"TypeScript","readme":"# ![Monika Logo](https://raw.githubusercontent.com/hyperjumptech/monika/main/docs/public/monika.svg)\n\n[![Build Status](https://github.com/hyperjumptech/monika/workflows/Node.js%20CI/badge.svg?event=push\u0026branch=main)](https://github.com/hyperjumptech/monika/actions) [![codecov](https://codecov.io/gh/hyperjumptech/monika/branch/main/graph/badge.svg?token=O3WVT7DP6F)](https://codecov.io/gh/hyperjumptech/monika) [![npm-version](https://img.shields.io/npm/v/@hyperjumptech/monika)](https://www.npmjs.com/package/@hyperjumptech/monika) [![npm](https://img.shields.io/npm/dt/@hyperjumptech/monika?label=NPM%20Downloads)](https://www.npmjs.com/package/@hyperjumptech/monika) [![Docker](https://img.shields.io/docker/pulls/hyperjump/monika)](https://hub.docker.com/r/hyperjump/monika)\n\n## About\n\nMonika is a command line application for synthetic monitoring. The name Monika stands for \"**Moni**toring Ber**ka**la\", which means \"periodic monitoring\" in the Indonesian language.\n\n## How to Use\n\nYou can find many ways to install Monika and how to start monitoring from the [Quick Start page](https://monika.hyperjump.tech/quick-start).\n\n## Contributing\n\nMonika is a Node.js application written in TypeScript using the [oclif framework](https://oclif.io/).  \nIt was developed on **node 20 (LTS)**, and **npm v10**.\n\nTo start developing, clone this repository, then install the dependencies:\n\n```bash\ngit clone git@github.com:hyperjumptech/monika.git\nnpm ci\nnpm run build -w packages/notification\n```\n\nThen, to run Monika from the source,\n\n- on Linux/Unix/Mac\n\n```bash\nnpm start\n```\n\n- on Windows\n\n```bash\n.\\bin\\dev.cmd\n```\n\nTo keep the formatting consistent, run the following command to format the source code:\n\n```bash\nnpm run format\n```\n\nFinally you can also run `npm run test` to prevent regression.\n\nOnce you have made the changes, open a Pull Request and explain the issue your change will fix or the feature your change will add.\n\nFor contribution details on how to add custom notifications [see the New Notifications guide here](https://monika.hyperjump.tech/guides/new-notifications).\n\n### Applying changes in monorepo workspaces folder (`packages/notification`)\n\nIf 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\n\n```json\n\"@hyperjumptech/monika-notification\": \"*\"\n```\n\nit will sync `@hyperjumptech/monika-notification` package `node_modules` to any changes in the `packages/notification` folder without running build on every code change.\n\nSee this [docs](https://turbo.build/repo/docs/handbook/workspaces#workspaces-which-depend-on-each-other) for further detail\n\n### How to Test Probe Locally\n\nIf 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 \u0026\u0026 docker compose up` to run those services.\n\n#### Available Services\n\nUse the following Monika config to probe the service.\n\n##### HTTPBin\n\n```yaml\nprobes:\n  - id: 'should not follow redirect'\n    requests:\n      - url: http://localhost:3000/status/302\n        followRedirects: 0\n    alerts:\n      - assertion: response.status != 302\n        message: You should not follow the redirect\n  - id: 'should follow redirect with default config'\n    requests:\n      - url: http://localhost:3000/absolute-redirect/20\n    alerts:\n      - assertion: response.status == 302\n        message: You are not following the redirect\n  - id: 'should follow redirect with customized config'\n    requests:\n      - url: http://localhost:3000/status/302\n        followRedirects: 2\n    alerts:\n      - assertion: response.status == 302\n        message: You are not following the redirect\n```\n\n##### MariaDB\n\n```yaml\nprobes:\n  - id: mariadb\n    mariadb:\n      - host: localhost\n        port: 3306\n        username: mariadb_user\n        password: mariadb_password\n        database:\n```\n\n##### MySQL\n\n```yaml\nprobes:\n  - id: mysql\n    mysql:\n      - host: localhost\n        port: 3307\n        username: mysql_user\n        password: mysql_password\n        database:\n```\n\n##### MongoDB\n\n```yaml\nprobes:\n  - id: mongo\n    mongo:\n      - uri: mongodb://mongo_user:mongo_password@localhost:27017\n```\n\n##### PostgreSQL\n\nUse the following Monika config to probe the service.\n\n```yaml\nprobes:\n  - id: postgres\n    postgres:\n      - uri: postgres://postgres_user:postgres_password@localhost:5432/postgres_db\n```\n\n##### Redis\n\n```yaml\nprobes:\n  - id: redis\n    redis:\n      - uri: redis://:redis_password@localhost:6379\n```\n\n### How to Monitor Monika Locally\n\n1. Run [Prometheus](https://prometheus.io/). Run `docker compose -f ./dev/prometheus/docker-compose.yaml up`.\n2. Run Monika with the Prometheus flag. Run `npm start -- --prometheus 3001`.\n3. Open Prometheus [Expression Browser](https://prometheus.io/docs/visualization/browser/). Visit `http://localhost:9090/graph`.\n\n## Development References\n\nThe tools and frameworks we used in this project are listed below:\n\n- [oclif](https://oclif.io/) to scaffold the CLI.\n- [Prettier](https://prettier.io/) to format the code.\n- [ESLint](https://eslint.org/) to statically analyze the code to quickly find problems.\n- [Mocha](https://mochajs.org/) for testing.\n- [Istanbul](https://istanbul.js.org/) for code coverage.\n\n## Discussions\n\nIf you need help, want to give feedback, or have a great idea to improve Monika, get involved! Let us know in the [Github discussions](https://github.com/hyperjumptech/monika/discussions).\n\nPlease abide by the [Contributor's Code of Conduct](CODE_OF_CONDUCTS.md)\n\n## Further information\n\nFor detailed information, you can click on any of the specific docs below:\n\n- [Quick Start](https://hyperjumptech.github.io/monika/quick-start)\n- [Installations](https://monika.hyperjump.tech/quick-start#installation)\n- [How it works](https://hyperjumptech.github.io/monika/guides/probes)\n\n[![Monika - Open source and free HTTP monitoring tool | Product Hunt](https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=332404\u0026theme=light)](https://www.producthunt.com/posts/monika-2?utm_source=badge-featured\u0026utm_medium=badge\u0026utm_souce=badge-monika-2)\n\n## License\n\n[MIT](./LICENSE.txt) License.\n","funding_links":[],"categories":["Projects using `@faker-js/faker`","TypeScript","cli"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperjumptech%2Fmonika","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhyperjumptech%2Fmonika","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhyperjumptech%2Fmonika/lists"}