Git Product home page Git Product logo

easeprobe's Introduction

EaseProbe

Go Report Card codecov Build GitHub go.mod Go version Join MegaEase Slack

EaseProbe is a simple, standalone, and lightweight tool that can do health/status checking, written in Go.

Table of Contents

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, and can set the Request Header/Body. ( HTTP Probe Configuration )
  • TCP. Check whether a TCP connection can be established or not. ( TCP Probe Configuration )
  • Shell. Run a Shell command and check the result. ( Shell Command Probe Configuration )
  • SSH. Run a remote command via SSH and check the result. Support the bastion/jump server (SSH Command Probe Configuration)
  • TLS. Connect to a given port using TLS and (optionally) validate for revoked or expired certificates ( TLS Probe Configuration )
  • Host. Run an SSH command on a remote host and check the CPU, Memory, and Disk usage. ( Host Load Probe )
  • Client. The following native clients are supported. They all supports the mTLS and the data checking, please refer to Native Client Probe Configuration
    • 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 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
  • Log. Write the notification into a log file or syslog.
  • Shell. Run a shell command to deliver the notification (see example)
  • RingCentral. Using RingCentral Webhook for notification delivery

Note:

  1. The notification is Edge-Triggered Mode, this means that these notifications are triggered when the status changes.

  2. Windows platforms do not support syslog as notification method.

Check the Notification Configuration 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 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

  • 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

2. Getting Started

You can get started with EaseProbe, by any of the following methods:

2.1 Build

Compiler Go 1.18+ (Generics Programming Support), checking the Go Installation 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.

$ make

2.2 Configure

Read the User Manual 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, which includes the complete list of configuration parameters.

The following simple configuration example can be used to get started:

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 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

$ build/bin/easeprobe -f config.yaml
  • -f configuration file or URL or path for multiple files which will be auto 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, & Kubernetes.

You can find the details in Deployment Guide

4. User Manual

For detailed instructions and features please refer to the User Manual

5. Benchmark

We have performed an extensive benchmark on EaseProbe. For the benchmark results please refer to - Benchmark Report

6. Contributing

If you're interested in contributing to the project, please spare a moment to read our CONTRIBUTING Guide

7. Community

8. License

EaseProbe is under the Apache 2.0 license. See the LICENSE file for details.

easeprobe's People

Contributors

haoel avatar dependabot[bot] avatar proditis avatar tg123 avatar actions-user avatar samanhappy avatar allenxuxu avatar gelleson avatar youniverse-zhao avatar xiaoxuanzi avatar xiekeyi98 avatar cuishuang avatar hellojukay avatar ken8203 avatar muicoder avatar nullsimon avatar jordy1024 avatar xiaomao87 avatar douglarek avatar zhangjunjie6b avatar zhangtaomox avatar zhzy0077 avatar hesstina-yui avatar superk- avatar tigerlee avatar suchen-sci avatar wuqinqiang avatar xhkyyy avatar zhao-kun avatar onyas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.