» Rust:使用Rocket构建REST API » 2. 开发 » 2.2 健康端点

健康端点

健康端点指服务器提供的特定端点或路由,用于确定服务器或应用程序的健康状态。该端点通常用于监控和管理目的,允许外部系统或监控工具通过其 API 检测系统否正常运行。

修改 src/main.rs:

@@ -3,9 +3,11 @@ extern crate rocket;
 
 use rocket::response::content;
 
-#[get("/ping")]
+// Define a health endpoint handler, use `/health` or `/`
+#[get("/")]
 fn ping() -> content::RawJson<&'static str> {
-    content::RawJson("{\"message\": \"pong\"}")
+    // Return a simple response indicating the server is healthy
+    content::RawJson("{\"status\":\"ok\"}")
 }
 
 #[launch]

/ 端点的响应:

{"status":"ok"}

可选
如果想在健康端点的响应中包括 CPU 或内存数据,需要你在 Rust 程序的运行环境中收集相关数据。

[可选] CPU 和内存使用数据

添加 sysinfo 依赖:

cargo add sysinfo

修改 src/main.rs [可选]:

@@ -2,12 +2,27 @@
 extern crate rocket;
 
 use rocket::response::content;
+use sysinfo::System;
 
 // Define a health endpoint handler, use `/health` or `/`
 #[get("/")]
-fn ping() -> content::RawJson<&'static str> {
-    // Return a simple response indicating the server is healthy
-    content::RawJson("{\"status\":\"ok\"}")
+fn ping() -> content::RawJson<String> {
+    let mut sys = System::new_all();
+    sys.refresh_all();
+    // sys.refresh_cpu();
+
+    let result_json = format!(
+        r#"{{
+    "cpu": "{:.2}%",
+    "used_memory": "{:.2} MB",
+    "total_memory": "{:.2} MB",
+    "status": "ok"
+}}"#,
+        sys.global_cpu_info().cpu_usage(),
+        sys.used_memory() as f32 / 1024.0 / 1024.0,
+        sys.total_memory() as f32 / 1024.0 / 1024.0
+    );
+    content::RawJson(result_json)
 }
 
 #[launch]

r# 是一个用于创建原始字符串变量的前缀。
原始字符串字面量在需要包含特殊字符、转义序列或多行字符串时非常有用。其帮助开发者省去频繁的转义操作。

该响应如下所示:

{
    "cpu": "70.83%",
    "used_memory": "10655.54 MB",
    "total_memory": "16384.00 MB",
    "status": "ok"
}