#健康检查 #异步 #moon #http #tcp #http2 #udp

moon-healthcheck

为 Rust 提供的异步健康检查库

2 个不稳定版本

0.2.0 2023年4月2日
0.1.0 2023年4月2日

#12#moon

每月 23 次下载

MIT/Apache

76KB
1.5K SLoC

Moon Healthcheck

Build & Test codecov

为 Rust 提供的异步健康检查库。

文档

https://docs.rs/moon-healthcheck


lib.rs:

Moon Healthcheck

为 Rust 提供的异步健康检查库。

功能

  • TCP 健康检查
  • HTTP 健康检查
    • HTTP GET、POST、PUT、DELETE、HEAD、PATCH
    • HTTP/1.1、HTTP/2
  • UDP 健康检查
  • 主动(后台)健康检查
  • 被动(手动报告)健康检查

示例

TCP 健康检查

use moon_healthcheck::tcp::TcpChecker;
use moon_healthcheck::dispatcher::Dispatcher;
use tokio::time::Duration;
use tokio::time::sleep;

#[tokio::main]
async fn main() {
    let mut dispatcher: Dispatcher<TcpChecker> = Dispatcher::new();
    
    let tcp_checker = TcpChecker::new("really.really.not.exists.host", 80, 1);
    let uuid = dispatcher.schedule(tcp_checker, Duration::from_secs(1)).unwrap();
    
    sleep(Duration::from_secs(3)).await;
    assert_eq!(dispatcher.is_healthy(&uuid).await.unwrap(), false);
}

UDP 健康检查

use moon_healthcheck::udp::UdpChecker;
use moon_healthcheck::dispatcher::Dispatcher;
use tokio::time::Duration;
use tokio::time::sleep;

#[tokio::main]
async fn main() {
    let mut dispatcher: Dispatcher<UdpChecker> = Dispatcher::new();

    let udp_checker = UdpChecker::new("really.really.not.exists.host", 53, &vec![1, 2, 3], &vec![1, 2, 3], 1);
    let uuid = dispatcher.schedule(udp_checker, Duration::from_secs(1)).unwrap();

    sleep(Duration::from_secs(3)).await;
    assert_eq!(dispatcher.is_healthy(&uuid).await.unwrap(), false);
}

HTTP 健康检查

use moon_healthcheck::http::HttpChecker;
use moon_healthcheck::dispatcher::Dispatcher;
use tokio::time::Duration;
use tokio::time::sleep;

#[tokio::main]
async fn main() {
    let mut dispatcher: Dispatcher<HttpChecker> = Dispatcher::new();

    let http_checker = HttpChecker::new("https://really.really.not.exists.host", 1);
    let uuid = dispatcher.schedule(http_checker, Duration::from_secs(1)).unwrap();

    sleep(Duration::from_secs(3)).await;
    assert_eq!(dispatcher.is_healthy(&uuid).await.unwrap(), false);
}

依赖

~6–18MB
~274K SLoC