文档

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

MinIO 将所有 minio 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 端点相关的所有环境变量。最低所需的变量是

set MINIO_LOGGER_WEBHOOK_ENABLE_<IDENTIFIER>="on"
set MINIO_LOGGER_WEBHOOK_ENDPOINT_<IDENTIFIER>="https://webhook-1.example.net"
set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_<IDENTIFIER>="TOKEN"
  • 用唯一描述性的字符串替换 <IDENTIFIER>,用于表示 HTTP Webhook 端点。对于与新日志 HTTP Webhook 相关的所有环境变量,使用相同的 <IDENTIFIER>

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

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

  • 用适合该端点的身份验证令牌替换 TOKEN。对于不需要身份验证的端点,请省略。

    为了允许各种令牌类型,MinIO 使用完全相同的指定值来创建请求身份验证头。根据端点的不同,您可能需要包含其他信息。

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

    set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
    

    根据端点要求修改值。自定义身份验证格式可能类似于以下内容

    set MINIO_LOGGER_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
    

    请参阅所需服务的文档以获取更多详细信息。

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

MinIO 支持使用 mc admin config set 命令和 logger_webhook 配置键在 MinIO 部署上添加或更新日志 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 端点。

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

  • 用适合该端点的身份验证令牌替换 TOKEN。对于不需要身份验证的端点,请省略。

    为了允许各种令牌类型,MinIO 使用完全相同的指定值来创建请求身份验证头。根据端点的不同,您可能需要包含其他信息。

    例如,对于 Bearer 令牌,请在前面加上 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 端点相关的所有环境变量。最低所需的变量是

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

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

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

  • 用适合该端点的身份验证令牌替换 TOKEN。对于不需要身份验证的端点,请省略。

    为了允许各种令牌类型,MinIO 使用完全相同的指定值来创建请求身份验证头。根据端点的不同,您可能需要包含其他信息。

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

    set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
    

    根据端点要求修改值。自定义身份验证格式可能类似于以下内容

    set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
    

    请参阅所需服务的文档以获取更多详细信息。

  • 用 x.509 TLS 证书的公钥和私钥替换 cert.pemcert.key,以呈现给 HTTP Webhook 服务器。对于不需要客户端提供 TLS 证书的端点,请省略。

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

MinIO 支持使用 mc admin config set 命令和 audit_webhook 配置键在 MinIO 部署上添加或更新审计日志 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 端点。

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

  • 用适合该端点的身份验证令牌替换 TOKEN。对于不需要身份验证的端点,请省略。

    为了允许各种令牌类型,MinIO 使用完全相同的指定值来创建请求身份验证头。根据端点的不同,您可能需要包含其他信息。

    例如,对于 Bearer 令牌,请在前面加上 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"
    

    请参阅所需服务的文档以获取更多详细信息。

  • 用 x.509 TLS 证书的公钥和私钥替换 cert.pemcert.key,以呈现给 HTTP Webhook 服务器。对于不需要客户端提供 TLS 证书的端点,请省略。

审计日志结构

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

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

  • 对于 擦除编码设置tags.objectErasureMap 提供有关以下内容的每个对象的详细信息:

    • 执行对象操作的 服务器池

    • 执行对象操作的 擦除集

    • 参与对象操作的擦除集中的驱动器列表。

{
   "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"
}