{"id":13414127,"url":"https://github.com/megaease/easeprobe","last_synced_at":"2025-05-13T23:10:35.564Z","repository":{"id":37389694,"uuid":"463013407","full_name":"megaease/easeprobe","owner":"megaease","description":"A simple, standalone, and lightweight tool that can do health/status checking, written in Go.","archived":false,"fork":false,"pushed_at":"2025-05-11T03:40:41.000Z","size":6445,"stargazers_count":2222,"open_issues_count":3,"forks_count":238,"subscribers_count":28,"default_branch":"main","last_synced_at":"2025-05-11T04:20:02.444Z","etag":null,"topics":["alerting","go","golang","monitoring","notifications","probe","prometheus"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/megaease.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/Roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-02-24T04:55:32.000Z","updated_at":"2025-05-11T03:39:36.000Z","dependencies_parsed_at":"2024-01-08T03:27:52.462Z","dependency_job_id":"4b543728-8028-451f-bff5-e78266f3d5dc","html_url":"https://github.com/megaease/easeprobe","commit_stats":{"total_commits":457,"total_committers":45,"mean_commits":"10.155555555555555","dds":0.5951859956236324,"last_synced_commit":"eef3a25e6b70136a578e61bcb2a2c2c3a1835f1f"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megaease%2Feaseprobe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megaease%2Feaseprobe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megaease%2Feaseprobe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/megaease%2Feaseprobe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/megaease","download_url":"https://codeload.github.com/megaease/easeprobe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254042317,"owners_count":22004901,"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":["alerting","go","golang","monitoring","notifications","probe","prometheus"],"created_at":"2024-07-30T20:01:58.421Z","updated_at":"2025-05-13T23:10:30.547Z","avatar_url":"https://github.com/megaease.png","language":"Go","funding_links":[],"categories":["Go","开源类库","公用事业公司","Notification","Utilities","prometheus","Repositories"],"sub_categories":["监控告警","实用程序/Miscellaneous","Fail injection","Utility/Miscellaneous"],"readme":"\u003ch1\u003eEaseProbe\u003c/h1\u003e\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/megaease/easeprobe)](https://goreportcard.com/report/github.com/megaease/easeprobe)\n[![codecov](https://codecov.io/gh/megaease/easeprobe/branch/main/graph/badge.svg?token=L7SR8X6SRN)](https://codecov.io/gh/megaease/easeprobe)\n[![Build](https://github.com/megaease/easeprobe/actions/workflows/test.yaml/badge.svg)](https://github.com/megaease/easeprobe/actions/workflows/test.yaml)\n[![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/megaease/easeprobe)](https://github.com/megaease/easeprobe/blob/main/go.mod)\n[![Join MegaEase Slack](https://img.shields.io/badge/slack-megaease-brightgreen?logo=slack)](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA)\n\n\nEaseProbe is a simple, standalone, and lightweight tool that can do health/status checking, written in Go.\n\n![](docs/overview.png)\n\n\u003ch2\u003eTable of Contents\u003c/h2\u003e\n\n- [1. Introduction](#1-introduction)\n  - [1.1 Probe](#11-probe)\n  - [1.2 Notification](#12-notification)\n  - [1.3 Report \\\u0026 Metrics](#13-report--metrics)\n- [2. Getting Started](#2-getting-started)\n  - [2.1 Build](#21-build)\n  - [2.2 Configure](#22-configure)\n  - [2.3 Run](#23-run)\n- [3. Deployment](#3-deployment)\n- [4. User Manual](#4-user-manual)\n- [5. Benchmark](#5-benchmark)\n- [6. Contributing](#6-contributing)\n- [7. Community](#7-community)\n- [8. License](#8-license)\n\n\n# 1. Introduction\n\nEaseProbe is designed to do three kinds of work - **Probe**, **Notify**, and **Report**.\n\n## 1.1 Probe\n\nEaseProbe supports a variety of methods to perform its probes such as:\n\n- **HTTP**. Checking the HTTP status code, Support mTLS, HTTP Basic Auth, setting Request Header/Body, and XPath response evaluation. ( [HTTP Probe Manual](./docs/Manual.md#12-http) )\n- **TCP**. Check whether a TCP connection can be established or not. ( [TCP Probe Manual](./docs/Manual.md#13-tcp) )\n- **Ping**. Ping a host to see if it is reachable or not. ( [Ping Probe Manual](./docs/Manual.md#14-ping) )\n- **Shell**. Run a Shell command and check the result. ( [Shell Command Probe Manual](./docs/Manual.md#15-shell) )\n- **SSH**. Run a remote command via SSH and check the result. Support the bastion/jump server ([SSH Command Probe Manual](./docs/Manual.md#16-ssh))\n- **TLS**. Connect to a given port using TLS and (optionally) validate for revoked or expired certificates ( [TLS Probe Manual](./docs/Manual.md#17-tls) )\n- **Host**. Run an SSH command on a remote host and check the CPU, Memory, and Disk usage. ( [Host Load Probe Manual](./docs/Manual.md#18-host) )\n- **Client**. The following native clients are supported. They all support mTLS and data checking. ( [Native Client Probe Manual](./docs/Manual.md#19-native-client) )\n  - **MySQL**. Connect to a MySQL server and run the `SHOW STATUS` SQL.\n  - **Redis**. Connect to a Redis server and run the `PING` command.\n  - **Memcache**. Connect to a Memcache server and run the `version` command or validate a given key/value pair.\n  - **MongoDB**. Connect to a MongoDB server and perform a ping.\n  - **Kafka**. Connect to a Kafka server and perform a list of all topics.\n  - **PostgreSQL**. Connect to a PostgreSQL server and run `SELECT 1` SQL.\n  - **Zookeeper**. Connect to a Zookeeper server and run `get /` command.\n\n## 1.2 Notification\n\nEaseProbe supports notification delivery to the following:\n\n- **Slack**. Using Slack Webhook for notification delivery\n- **Discord**. Using Discord Webhook for notification delivery\n- **Telegram**. Using Telegram Bot for notification delivery\n- **Teams**. Support the [Microsoft Teams](https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL#setting-up-a-custom-incoming-webhook) notification delivery\n- **Email**. Support email notification delivery to one or more email addresses\n- **AWS SNS**. Support the AWS Simple Notification Service\n- **WeChat Work**. Support Enterprise WeChat Work notification delivery\n- **DingTalk**. Support the DingTalk notification delivery\n- **Lark**. Support the Lark(Feishu) notification delivery\n- **SMS**. SMS notification delivery with support for multiple SMS service providers\n  - [Twilio](https://www.twilio.com/sms)\n  - [Vonage(Nexmo)](https://developer.vonage.com/messaging/sms/overview)\n  - [YunPian](https://www.yunpian.com/official/document/sms/en/domestic_list?lang=en)\n- **Log**. Write the notification into a log file or Syslog.\n- **Shell**. Run a shell command to deliver the notification (see [example](resources/scripts/notify/notify.sh))\n- **RingCentral**. Using RingCentral Webhook for notification delivery\n\n\u003e **Note**:\n\u003e\n\u003e 1) The notification is **Edge-Triggered Mode** by default, if you want to config it as **Level-Triggered Mode** with different interval and max notification, please refer to the manual - [Alerting Interval](./docs/Manual.md#112-alerting-interval).\n\u003e\n\u003e 2) Windows platforms do not support syslog as notification method.\n\nCheck the [Notification Manual](./docs/Manual.md#2-notification) to see how to configure it.\n\n## 1.3 Report \u0026 Metrics\n\nEaseProbe supports the following report and metrics:\n\n- **SLA Report Notify**. EaseProbe would send the daily, weekly, or monthly SLA report using the defined **`notify:`** methods.\n- **SLA Live Report**. The EaseProbe would listen on the `0.0.0.0:8181` port by default. By accessing this service you will be provided with a live SLA report either as HTML at `http://localhost:8181/` or as JSON at `http://localhost:8181/api/v1/sla`\n- **SLA Data Persistence**. The SLA data will be persisted in `$CWD/data/data.yaml` by default. You can configure this path by editing the `settings` section of your configuration file.\n\nFor more information, please check the [Global Setting Configuration](./docs/Manual.md#73-global-setting-configuration)\n\n- **Prometheus Metrics**. The EaseProbe would listen on the `8181` port by default. By accessing this service you will be provided with Prometheus metrics at `http://easeprobe:8181/metrics`.\n\nThe metrics are prefixed with `easeprobe_` and are documented in [Prometheus Metrics Exporter](./docs/Manual.md#6-prometheus-metrics-exporter)\n\n# 2. Getting Started\n\nYou can get started with EaseProbe, by any of the following methods:\n* Download the release for your platform from https://github.com/megaease/easeprobe/releases\n* Use the available EaseProbe docker image `docker run -it megaease/easeprobe`\n* Build `easeprobe` from sources\n\n## 2.1 Build\n\nCompiler `Go 1.21+` (Generics Programming Support), checking the [Go Installation](https://go.dev/doc/install) to see how to install Go on your platform.\n\nUse `make` to build and produce the `easeprobe` binary file. The executable is produced under the `build/bin` directory.\n\n```shell\n$ make\n```\n## 2.2 Configure\n\nRead the [User Manual](./docs/Manual.md) for detailed instructions on how to configure all EaseProbe parameters.\n\nCreate a configuration file (eg. `$CWD/config.yaml`) using the configuration template at [./resources/config.yaml](https://raw.githubusercontent.com/megaease/easeprobe/main/resources/config.yaml), which includes the complete list of configuration parameters.\n\nThe following simple configuration example can be used to get started:\n\n```YAML\nhttp: # http probes\n  - name: EaseProbe Github\n    url: https://github.com/megaease/easeprobe\nnotify:\n  log:\n    - name: log file # local log file\n      file: /var/log/easeprobe.log\nsettings:\n  probe:\n    timeout: 30s # the time out for all probes\n    interval: 1m # probe every minute for all probes\n```\n\nYou can check the [EaseProbe JSON Schema](./docs/Manual.md#81-easeprobe-json-schema) section to use a JSON Scheme file to make your life easier when you edit the configuration file.\n\n## 2.3 Run\n\nYou can run the following command to start EaseProbe once built\n\n```shell\n$ build/bin/easeprobe -f config.yaml\n```\n* `-f` configuration file or URL or path for multiple files which will be automatically merged into one. Can also be achieved by setting the environment variable `PROBE_CONFIG`\n* `-d` dry run. Can also be achieved by setting the environment variable `PROBE_DRY`\n\n# 3. Deployment\n\nEaseProbe can be deployed by Systemd, Docker, Docker-Compose, \u0026 Kubernetes.\n\nYou can find the details in [Deployment Guide](./docs/Deployment.md)\n\n# 4. User Manual\n\nFor detailed instructions and features please refer to the [User Manual](./docs/Manual.md)\n\n# 5. Benchmark\n\nWe have performed an extensive benchmark on EaseProbe. For the benchmark results please refer to - [Benchmark Report](./docs/Benchmark.md)\n\n# 6. Contributing\n\nIf you're interested in contributing to the project, please spare a moment to read our [CONTRIBUTING Guide](./docs/CONTRIBUTING.md)\n\n# 7. Community\n\n- Join Slack [Workspace](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA) for requirements, issues, and development.\n- [MegaEase on Twitter](https://twitter.com/megaease)\n\n# 8. License\n\nEaseProbe is under the Apache 2.0 license. See the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmegaease%2Feaseprobe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmegaease%2Feaseprobe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmegaease%2Feaseprobe/lists"}