文档

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

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 端点。

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

  • 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 端点。

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

  • 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 端点。

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

  • TOKEN 替换为端点所需的相应类型的身份验证令牌。对于不需要身份验证的端点,请省略。

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

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

    set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_myendpoint="Bearer 1a2b3c4f5e"
    

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

    set MINIO_AUDIT_WEBHOOK_AUTH_TOKEN_xyz="ServiceXYZ 1a2b3c4f5e"
    

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

  • cert.pemcert.key 替换为要呈现给 HTTP Webhook 服务器的 x.509 TLS 证书的公钥和私钥。对于不需要客户端呈现 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 端点。

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

  • 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"
    

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

  • cert.pemcert.key 替换为要呈现给 HTTP Webhook 服务器的 x.509 TLS 证书的公钥和私钥。对于不需要客户端呈现 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"
}