Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/megaease/easeprobe
A simple, standalone, and lightweight tool that can do health/status checking, written in Go.
https://github.com/megaease/easeprobe
alerting go golang monitoring notifications probe prometheus
Last synced: 2 days ago
JSON representation
A simple, standalone, and lightweight tool that can do health/status checking, written in Go.
- Host: GitHub
- URL: https://github.com/megaease/easeprobe
- Owner: megaease
- License: apache-2.0
- Created: 2022-02-24T04:55:32.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2024-12-03T05:28:03.000Z (9 days ago)
- Last Synced: 2024-12-03T14:05:46.620Z (9 days ago)
- Topics: alerting, go, golang, monitoring, notifications, probe, prometheus
- Language: Go
- Homepage:
- Size: 6.03 MB
- Stars: 2,182
- Watchers: 31
- Forks: 231
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
- Roadmap: docs/Roadmap.md
Awesome Lists containing this project
- awesome-go - EaseProbe - A simple, standalone, and lightWeight tool that can do health/status checking daemon, support HTTP/TCP/SSH/Shell/Client/... probes, and Slack/Discord/Telegram/SMS... notification. (Utilities / Utility/Miscellaneous)
- awesome-repositories - megaease/easeprobe - A simple, standalone, and lightweight tool that can do health/status checking, written in Go. (Go)
- awesome-golang-repositories - easeprobe
- awesome-go-extra - easeprobe - 02-24T04:55:32Z|2022-08-25T10:42:06Z| (Utilities / Fail injection)
- awesome-go - EaseProbe - A simple, standalone, and lightWeight tool that can do health/status checking daemon, support HTTP/TCP/SSH/Shell/Client/... probes, and Slack/Discord/Telegram/SMS... notification. Stars:`2.2K`. (Utilities / Utility/Miscellaneous)
- my-awesome - megaease/easeprobe - 12 star:2.2k fork:0.2k A simple, standalone, and lightweight tool that can do health/status checking, written in Go. (Go)
README
EaseProbe
[![Go Report Card](https://goreportcard.com/badge/github.com/megaease/easeprobe)](https://goreportcard.com/report/github.com/megaease/easeprobe)
[![codecov](https://codecov.io/gh/megaease/easeprobe/branch/main/graph/badge.svg?token=L7SR8X6SRN)](https://codecov.io/gh/megaease/easeprobe)
[![Build](https://github.com/megaease/easeprobe/actions/workflows/test.yaml/badge.svg)](https://github.com/megaease/easeprobe/actions/workflows/test.yaml)
[![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)
[![Join MegaEase Slack](https://img.shields.io/badge/slack-megaease-brightgreen?logo=slack)](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA)EaseProbe is a simple, standalone, and lightweight tool that can do health/status checking, written in Go.
![](docs/overview.png)
Table of Contents
- [1. Introduction](#1-introduction)
- [1.1 Probe](#11-probe)
- [1.2 Notification](#12-notification)
- [1.3 Report \& Metrics](#13-report--metrics)
- [2. Getting Started](#2-getting-started)
- [2.1 Build](#21-build)
- [2.2 Configure](#22-configure)
- [2.3 Run](#23-run)
- [3. Deployment](#3-deployment)
- [4. User Manual](#4-user-manual)
- [5. Benchmark](#5-benchmark)
- [6. Contributing](#6-contributing)
- [7. Community](#7-community)
- [8. License](#8-license)# 1. Introduction
EaseProbe is designed to do three kinds of work - **Probe**, **Notify**, and **Report**.
## 1.1 Probe
EaseProbe supports a variety of methods to perform its probes such as:
- **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) )
- **TCP**. Check whether a TCP connection can be established or not. ( [TCP Probe Manual](./docs/Manual.md#13-tcp) )
- **Ping**. Ping a host to see if it is reachable or not. ( [Ping Probe Manual](./docs/Manual.md#14-ping) )
- **Shell**. Run a Shell command and check the result. ( [Shell Command Probe Manual](./docs/Manual.md#15-shell) )
- **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))
- **TLS**. Connect to a given port using TLS and (optionally) validate for revoked or expired certificates ( [TLS Probe Manual](./docs/Manual.md#17-tls) )
- **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) )
- **Client**. The following native clients are supported. They all support mTLS and data checking. ( [Native Client Probe Manual](./docs/Manual.md#19-native-client) )
- **MySQL**. Connect to a MySQL server and run the `SHOW STATUS` SQL.
- **Redis**. Connect to a Redis server and run the `PING` command.
- **Memcache**. Connect to a Memcache server and run the `version` command or validate a given key/value pair.
- **MongoDB**. Connect to a MongoDB server and perform a ping.
- **Kafka**. Connect to a Kafka server and perform a list of all topics.
- **PostgreSQL**. Connect to a PostgreSQL server and run `SELECT 1` SQL.
- **Zookeeper**. Connect to a Zookeeper server and run `get /` command.## 1.2 Notification
EaseProbe supports notification delivery to the following:
- **Slack**. Using Slack Webhook for notification delivery
- **Discord**. Using Discord Webhook for notification delivery
- **Telegram**. Using Telegram Bot for notification delivery
- **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
- **Email**. Support email notification delivery to one or more email addresses
- **AWS SNS**. Support the AWS Simple Notification Service
- **WeChat Work**. Support Enterprise WeChat Work notification delivery
- **DingTalk**. Support the DingTalk notification delivery
- **Lark**. Support the Lark(Feishu) notification delivery
- **SMS**. SMS notification delivery with support for multiple SMS service providers
- [Twilio](https://www.twilio.com/sms)
- [Vonage(Nexmo)](https://developer.vonage.com/messaging/sms/overview)
- [YunPian](https://www.yunpian.com/official/document/sms/en/domestic_list?lang=en)
- **Log**. Write the notification into a log file or Syslog.
- **Shell**. Run a shell command to deliver the notification (see [example](resources/scripts/notify/notify.sh))
- **RingCentral**. Using RingCentral Webhook for notification delivery> **Note**:
>
> 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).
>
> 2) Windows platforms do not support syslog as notification method.Check the [Notification Manual](./docs/Manual.md#2-notification) to see how to configure it.
## 1.3 Report & Metrics
EaseProbe supports the following report and metrics:
- **SLA Report Notify**. EaseProbe would send the daily, weekly, or monthly SLA report using the defined **`notify:`** methods.
- **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`
- **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.For more information, please check the [Global Setting Configuration](./docs/Manual.md#73-global-setting-configuration)
- **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`.
The metrics are prefixed with `easeprobe_` and are documented in [Prometheus Metrics Exporter](./docs/Manual.md#6-prometheus-metrics-exporter)
# 2. Getting Started
You can get started with EaseProbe, by any of the following methods:
* Download the release for your platform from https://github.com/megaease/easeprobe/releases
* Use the available EaseProbe docker image `docker run -it megaease/easeprobe`
* Build `easeprobe` from sources## 2.1 Build
Compiler `Go 1.21+` (Generics Programming Support), checking the [Go Installation](https://go.dev/doc/install) to see how to install Go on your platform.
Use `make` to build and produce the `easeprobe` binary file. The executable is produced under the `build/bin` directory.
```shell
$ make
```
## 2.2 ConfigureRead the [User Manual](./docs/Manual.md) for detailed instructions on how to configure all EaseProbe parameters.
Create 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.
The following simple configuration example can be used to get started:
```YAML
http: # http probes
- name: EaseProbe Github
url: https://github.com/megaease/easeprobe
notify:
log:
- name: log file # local log file
file: /var/log/easeprobe.log
settings:
probe:
timeout: 30s # the time out for all probes
interval: 1m # probe every minute for all probes
```You 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.
## 2.3 Run
You can run the following command to start EaseProbe once built
```shell
$ build/bin/easeprobe -f config.yaml
```
* `-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`
* `-d` dry run. Can also be achieved by setting the environment variable `PROBE_DRY`# 3. Deployment
EaseProbe can be deployed by Systemd, Docker, Docker-Compose, & Kubernetes.
You can find the details in [Deployment Guide](./docs/Deployment.md)
# 4. User Manual
For detailed instructions and features please refer to the [User Manual](./docs/Manual.md)
# 5. Benchmark
We have performed an extensive benchmark on EaseProbe. For the benchmark results please refer to - [Benchmark Report](./docs/Benchmark.md)
# 6. Contributing
If you're interested in contributing to the project, please spare a moment to read our [CONTRIBUTING Guide](./docs/CONTRIBUTING.md)
# 7. Community
- Join Slack [Workspace](https://join.slack.com/t/openmegaease/shared_invite/zt-upo7v306-lYPHvVwKnvwlqR0Zl2vveA) for requirements, issues, and development.
- [MegaEase on Twitter](https://twitter.com/megaease)# 8. License
EaseProbe is under the Apache 2.0 license. See the [LICENSE](./LICENSE) file for details.