文档

将服务日志或审计日志发布到外部服务

MinIO 会将所有 minio server 操作输出到系统控制台。 如何读取这些日志取决于 server 进程的管理方式。 例如,如果 server 通过 systemd 脚本进行管理, 你可以使用 journalctl -u SERVICENAME.service 读取日志。 请将 SERVICENAME 替换为 MinIO 服务名称。

MinIO 还支持将服务日志和审计日志发布到 HTTP Webhook。

  • 服务日志 包含与系统控制台中相同的 minio server 操作日志。服务日志适用于常规监控与运维排障。

  • 审计日志 会以更细粒度描述 MinIO 部署上的每一次操作。审计日志适用于要求对操作进行详细追踪的 安全标准与合规规范。

MinIO 会将日志作为 JSON 文档,通过 PUT 请求发送到每个已配置端点。 端点服务器负责处理这些 JSON 文档。 MinIO 要求显式配置每个 Webhook 端点,默认情况下 不会 向 Webhook 发布日志。

将服务日志发布到 HTTP Webhook

你可以通过环境变量 运行时配置项,配置一个新的 HTTP Webhook 端点, 让 MinIO 将 minio server 日志发布到该端点。

MinIO 支持使用 环境变量 指定 minio server 日志 HTTP Webhook 端点及其相关配置项。

下面的示例代码设置了配置日志 HTTP Webhook 端点所需的 全部 环境变量。 其中最少 必须 配置的变量为:

   export MINIO_LOGGER_WEBHOOK_ENABLE_<IDENTIFIER>="on"
   export MINIO_LOGGER_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
   export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
  • <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。 与新日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>

    如果指定的 <IDENTIFIER> 与现有日志端点匹配, 新设置将 覆盖 该端点的现有设置。 可使用 mc admin config get logger_webhook 查看当前已配置的日志 HTTP Webhook 端点。

  • https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • TOKEN 替换为适用于该端点的认证令牌类型。 对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。 根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer

    export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
    

    请根据端点要求调整该值。 自定义认证格式可能类似如下:

    export MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
    

    详情请参阅目标服务的文档。

重启 MinIO server 以应用新的配置项。 你必须在部署中的 所有 MinIO server 上指定相同的环境变量和设置。

MinIO 支持在 MinIO 部署上使用 mc admin config set 命令和 logger_webhook 配置键新增或更新日志 HTTP Webhook 端点。 应用任何新增或更新后的配置项都需要重启 MinIO 部署。

下面的示例代码设置了配置日志 HTTP Webhook 端点相关的 全部 配置项。 其中最少 必须 配置的项为 logger_webhook endpoint

mc admin config set ALIAS/ logger_webhook:IDENTIFIER  \
   endpoint="https://webhook-1.example.net"           \
   auth_token="TOKEN"
  • <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。 与新日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>

    如果指定的 <IDENTIFIER> 与现有日志端点匹配, 新设置将 覆盖 该端点的现有设置。 可使用 mc admin config get logger_webhook 查看当前已配置的日志 HTTP Webhook 端点。

  • https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • TOKEN 替换为适用于该端点的认证令牌类型。 对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。 根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer

     mc admin config set ALIAS/ logger_webhook    \
        endpoint="https://webhook-1.example.net"  \
        auth_token="Bearer 1a2b3c4f5e"
    

    请根据端点要求调整该值。 自定义认证格式可能类似如下:

    mc admin config set ALIAS/ logger_webhook    \
       endpoint="https://webhook-1.example.net"  \
       auth_token="ServiceXYZ 1a2b3c4f5e"
    

    详情请参阅目标服务的文档。

将审计日志发布到 HTTP Webhook

你可以通过环境变量 运行时配置项,配置一个新的 HTTP Webhook 端点, 让 MinIO 将审计日志发布到该端点:

MinIO 支持使用 环境变量 指定审计日志 HTTP Webhook 端点及其相关配置项。

下面的示例代码设置了配置审计日志 HTTP Webhook 端点所需的 全部 环境变量。 其中最少 必须 配置的变量为:

export MINIO_AUDIT_WEBHOOK_ENABLE_<IDENTIFIER>="on"
export MINIO_AUDIT_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
export MINIO_AUDIT_WEBHOOK_CLIENT_CERT_<IDENTIFIER>="cert.pem"
export MINIO_AUDIT_WEBHOOK_CLIENT_KEY_<IDENTIFIER>="cert.key"
  • <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。 与新审计日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>

    如果指定的 <IDENTIFIER> 与现有日志端点匹配, 新设置将 覆盖 该端点的现有设置。 可使用 mc admin config get audit_webhook 查看当前已配置的审计日志 HTTP Webhook 端点。

  • https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • TOKEN 替换为适用于该端点的认证令牌类型。 对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。 根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer

    export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
    

    请根据端点要求调整该值。 自定义认证格式可能类似如下:

    export MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
    

    详情请参阅目标服务的文档。

  • cert.pemcert.key 替换为要向 HTTP Webhook server 提交的 x.509 TLS 证书公钥与私钥。 对于不要求客户端出示 TLS 证书的端点,可省略该项。

重启 MinIO server 以应用新的配置项。 你必须在部署中的 所有 MinIO server 上指定相同的环境变量和设置。

MinIO 支持在 MinIO 部署上使用 mc admin config set 命令和 audit_webhook 配置键新增或更新审计日志 HTTP Webhook 端点。 应用任何新增或更新后的配置项都需要重启 MinIO 部署。

下面的示例代码设置了配置审计日志 HTTP Webhook 端点相关的 全部 配置项。 其中最少 必须 配置的项为 audit_webhook endpoint

mc admin config set ALIAS/ audit_webhook:IDENTIFIER  \
   endpoint="https://webhook-1.example.net"          \
   auth_token="TOKEN"                                \
   client_cert="cert.pem"                            \
   client_key="cert.key"
  • <IDENTIFIER> 替换为该 HTTP Webhook 端点的唯一描述字符串。 与新审计日志 HTTP Webhook 相关的所有环境变量都应使用同一个 <IDENTIFIER>

    如果指定的 <IDENTIFIER> 与现有日志端点匹配, 新设置将 覆盖 该端点的现有设置。 可使用 mc admin config get audit_webhook 查看当前已配置的审计日志 HTTP Webhook 端点。

  • https://webhook-1.example.net 替换为 HTTP Webhook 端点的 URL。

  • TOKEN 替换为适用于该端点的认证令牌类型。 对于无需认证的端点,可省略该项。

    为支持多种令牌类型,MinIO 会按 原样 使用该值创建请求认证头。 根据端点不同,你可能需要包含额外信息。

    例如,对于 Bearer token,请在前面加上 Bearer

     mc admin config set ALIAS/ audit_webhook     \
        endpoint="https://webhook-1.example.net"  \
        auth_token="Bearer 1a2b3c4f5e"
    

    请根据端点要求调整该值。 自定义认证格式可能类似如下:

    mc admin config set ALIAS/ audit_webhook     \
       endpoint="https://webhook-1.example.net"  \
       auth_token="ServiceXYZ 1a2b3c4f5e"
    

    详情请参阅目标服务的文档。

  • cert.pemcert.key 替换为要向 HTTP Webhook server 提交的 x.509 TLS 证书公钥与私钥。 对于不要求客户端出示 TLS 证书的端点,可省略该项。

审计日志结构

MinIO 审计日志类似于以下 JSON 文档:

  • api.timeToFirstByteapi.timeToResponse 字段以纳秒表示。

  • 对于 纠删码部署tags.objectErasureMap 提供与对象相关的以下详细信息:

    • 执行该对象操作所在的 Server Pool

    • 执行该对象操作所在的 纠删码集合

    • 参与该对象操作的纠删码集合驱动器列表。

{
   "version": "1",
   "deploymentid": "8ca2b7ad-20cf-4d07-9efb-28b2f519f4a5",
   "time": "2024-02-29T19:39:25.744431903Z",
   "event": "",
   "trigger": "incoming",
   "api": {
      "name": "CompleteMultipartUpload",
      "bucket": "data",
      "object": "test-data.csv",
      "status": "OK",
      "statusCode": 200,
      "rx": 267,
      "tx": 358,
      "txHeaders": 387,
      "timeToFirstByte": "2096989ns",
      "timeToFirstByteInNS": "2096989",
      "timeToResponse": "2111986ns",
      "timeToResponseInNS": "2111986"
   },
   "remotehost": "127.0.0.1",
   "requestID": "17B86CB0ED88EBE9",
   "userAgent": "MinIO (linux; amd64) minio-go/v7.0.67 mc/RELEASE.2024-02-24T01-33-20Z",
   "requestPath": "/data/test-data.csv",
   "requestHost": "minio.example.net:9000",
   "requestQuery": {
      "uploadId": "OGNhMmI3YWQtMjBjZi00ZDA3LTllZmItMjhiMmY1MTlmNGE1LmU3MjNlNWI4LTNiYWYtNDYyNy1hNzI3LWMyNDE3NTVjMmMzNw"
   },
   "requestHeader": {
      "Accept-Encoding": "zstd,gzip",
      "Authorization": "AWS4-HMAC-SHA256 Credential=minioadmin/20240229/us-east-1/s3/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=ccb3acdc1763509a88a7e4a3d7fe431ef0ee5ca3f66ccb430d5a09326e87e893",
      "Content-Length": "267",
      "Content-Type": "application/octet-stream",
      "User-Agent": "MinIO (linux; amd64) minio-go/v7.0.67 mc/RELEASE.2024-02-24T01-33-20Z",
      "X-Amz-Content-Sha256": "d61969719ee94f43c4e87044229b7a13b54cab320131e9a77259ad0c9344f6d3",
      "X-Amz-Date": "20240229T193925Z"
   },
   "responseHeader": {
      "Accept-Ranges": "bytes",
      "Content-Length": "358",
      "Content-Type": "application/xml",
      "ETag": "1d9fdc88af5e74f5eac0a3dd750ce58e-2",
      "Server": "MinIO",
      "Strict-Transport-Security": "max-age=31536000; includeSubDomains",
      "Vary": "Origin,Accept-Encoding",
      "X-Amz-Id-2": "dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8",
      "X-Amz-Request-Id": "17B86CB0ED88EBE9",
      "X-Content-Type-Options": "nosniff",
      "X-Xss-Protection": "1; mode=block"
   },
   "tags": {
      "objectLocation": {
            "name": "Mousepad Template-v03final.jpg",
            "poolId": 1,
            "setId": 1,
            "disks": [
               "/mnt/drive-1",
               "/mnt/drive-2",
               "/mnt/drive-3",
               "/mnt/drive-4"
            ]
      }
   },
   "accessKey": "minioadmin"
}