#web-apps #axum #analytics #dashboard #middleware #api

axum-analytics

为 Axum 网络应用程序提供监控和数据分析

12 个稳定版本

1.1.3 2024年3月5日
1.1.2 2023年5月17日
1.1.1 2023年4月7日
1.0.7 2023年3月5日
1.0.2 2022年11月30日

#4#dashboard 排名中

MIT 许可证

14KB
198

Axum Analytics

一个轻量级的 API 分析解决方案,包含仪表板。

入门指南

1. 生成 API 密钥

前往 https://apianalytics.dev/generate,点击一次即可生成您的唯一 API 密钥。此密钥用于监控您的 API 服务器,应私密存储。它还用于查看您的 API 分析仪表板和数据。

2. 将中间件添加到您的 API

将我们的轻量级中间件添加到您的 API。几乎所有处理都由我们的服务器完成,因此对您 API 的性能影响最小。

cargo add axum-analytics
use axum::{
    routing::get,
    Json, Router,
};
use serde::Serialize;
use std::net::SocketAddr;
use tokio;
use axum_analytics::Analytics;

#[derive(Serialize)]
struct JsonData {
    message: String,
}

async fn root() -> Json<JsonData> {
    let json_data = JsonData {
        message: "Hello World!".to_string(),
    };
    Json(json_data)
}

#[tokio::main]
async fn main() {
    let app = Router::new()
        .layer(Analytics::new(<API-KEY>))  // Add middleware
        .route("/", get(root));

    let addr = SocketAddr::from(([127, 0, 0, 1], 8080));
    axum::Server::bind(&addr)
        .serve(app.into_make_service())
        .await
        .unwrap();
}

3. 查看您的分析

您的 API 现在将记录和存储所有有效路由上的传入请求数据。您可以使用以下两种方法查看已记录的数据

  1. 通过我们仪表板上的可视化和统计数据
  2. 直接通过我们的数据 API 访问

您可以在多个 API 中使用相同的 API 密钥,但所有数据都将显示在同一仪表板上。我们建议为每个需要分析的额外 API 服务器生成一个新的 API 密钥。

仪表板

前往 https://apianalytics.dev/dashboard 并粘贴您的 API 密钥以访问仪表板。

演示: https://apianalytics.dev/dashboard/demo

Dashboard

数据 API

所有请求的已记录数据都可以通过我们的 REST API 访问。只需将 API 密钥设置为 https://apianalytics-server.com/api/data 中的头信息 X-AUTH-TOKEN 发送 GET 请求。

Python
import requests

headers = {
 "X-AUTH-TOKEN": <API-KEY>
}

response = requests.get("https://apianalytics-server.com/api/data", headers=headers)
print(response.json())
Node.js
fetch("https://apianalytics-server.com/api/data", {
  headers: { "X-AUTH-TOKEN": <API-KEY> },
})
  .then((response) => {
    return response.json();
  })
  .then((data) => {
    console.log(data);
  });
cURL
curl --header "X-AUTH-TOKEN: <API-KEY>" https://apianalytics-server.com/api/data
参数

您可以通过在请求中提供 URL 参数来过滤您的数据。

  • date - 指定请求发生的特定日期 (YYYY-MM-DD)
  • dateFrom - 指定请求发生的日期范围的下限(YYYY-MM-DD
  • dateTo - 指定请求发生的日期范围的上限(YYYY-MM-DD
  • ipAddress - 客户端的 IP 地址字符串
  • status - 响应的整数状态码
  • location - 客户端的两位位置代码

示例

curl --header "X-AUTH-TOKEN: <API-KEY>" https://apianalytics-server.com/api/data?dateFrom=2022-01-01&dateTo=2022-06-01&status=200

监控(即将推出)

即将推出可选的 API 监控,我们的服务器将定期ping您的 API 端点以监控正常运行时间和响应时间。您可以订阅可选的电子邮件警报,当您的端点出现故障时通知您。

Monitoring

数据和安全性

所有数据都安全存储,符合欧盟通用数据保护条例(GDPR)。

对于您 API 的任何请求,记录的数据限于

  • 客户端请求的路径
  • 客户端 IP 地址
  • 客户端操作系统
  • 客户端浏览器
  • 请求方法(GET、POST、PUT 等)
  • 请求时间
  • 状态码
  • 响应时间
  • API 主机名
  • API 框架(FastAPI、Flask、Express 等)

收集的数据仅用于填充您的分析仪表板。存储的所有数据都是匿名的,API 密钥是您和已记录的请求数据之间的唯一链接。如果您丢失了 API 密钥,您将无法访问您的 API 分析。

数据删除

您可以在任何时间通过访问 https://apianalytics.dev/delete 并输入您的 API 密钥来删除与您的 API 密钥关联的所有存储数据。

API 密钥及其关联的 API 请求数据将在 6 个月的不活跃后预定删除。

贡献

欢迎贡献、问题和功能请求。

  • 分叉它(https://github.com/tom-draper/api-analytics
  • 创建您的功能分支(git checkout -b my-new-feature
  • 提交您的更改(git commit -am 'Add some feature'
  • 推送到分支(git push origin my-new-feature
  • 创建新的 Pull Request

依赖项

~11–23MB
~329K SLoC