访问 Azure Data Lake Storage Gen1 的诊断日志

了解如何为 Azure Data Lake Storage Gen1 帐户启用诊断日志记录,以及如何查看为帐户收集的日志。

组织可以为其 Azure Data Lake Storage Gen1 帐户启用诊断日志记录,以收集访问数据的用户列表、访问数据的频率、帐户中存储的数据量等信息。启用后,会尽力记录诊断和/或请求。 仅当针对服务终结点发出请求时,才会创建请求和诊断日志条目。

先决条件

为 Data Lake Storage Gen1 帐户启用诊断日志记录

  1. 登录到新的 Azure 门户

  2. 打开 Data Lake Storage Gen1 帐户,在 Data Lake Storage Gen1 帐户边栏选项卡中,单击 诊断设置

  3. 诊断设置 边栏选项卡中,单击 打开诊断

    Data Lake Storage Gen 1 帐户的屏幕截图,其中显示了“诊断设置”选项和“启用诊断”选项。

  4. 诊断设置 边栏中,进行以下更改以配置诊断日志记录。

    “诊断设置”部分的屏幕截图,其中显示了“名称”文本框和“保存”选项。

    • 对于 名称,请输入诊断日志配置的值。

    • 可以选择以不同的方式存储/处理数据。

      • 选择 存档到存储帐户的选项 以将日志存储到 Azure 存储帐户。 如果要存档将在以后批处理的数据,请使用此选项。 如果选择此选项,则必须提供一个 Azure 存储帐户才能将日志保存到其中。

      • 选择此选项可将流 式传输到事件中心 将日志数据流式传输到 Azure 事件中心。 如果具有下游处理管道来实时分析传入日志,则很可能使用此选项。 如果选择此选项,则必须提供要使用的 Azure 事件中心的详细信息。

      • 选择 发送到 Log Analytics 的选项,以使用 Azure Monitor 服务分析生成的日志数据。 如果选择此选项,则必须提供将使用执行日志分析的 Log Analytics 工作区的详细信息。 有关使用 Azure Monitor 日志的详细信息,请参阅 查看或分析使用 Azure Monitor 日志搜索 收集的数据。

    • 指定是要获取审核日志还是请求日志,还是同时获取两者。

    • 指定必须保留数据的天数。 仅当使用 Azure 存储帐户存档日志数据时,保留期才适用。

    • 单击“ 保存”。

启用诊断设置后,可以在 诊断日志 选项卡中查看日志。

查看 Data Lake Storage Gen1 帐户的诊断日志

可通过两种方法查看 Data Lake Storage Gen1 帐户的日志数据。

  • 从 Data Lake Storage Gen1 帐户设置视图
  • 从存储数据的 Azure 存储帐户

使用 Data Lake Storage Gen1 设置视图

  1. 在 Data Lake Storage Gen1 帐户 设置 边栏选项卡中,单击 诊断日志

    查看诊断日志

  2. 诊断日志 边栏选项卡中,您应该会看到按 审核日志请求日志分类的日志。

    • 请求日志捕获 Data Lake Storage Gen1 帐户上发出的每个 API 请求。
    • 审计日志类似于请求日志,但提供了对 Data Lake Storage Gen1 账户执行操作的更详细细目。 例如,请求日志中的单个上传 API 调用可能会导致审核日志中出现多个“追加”操作。
  3. 若要下载日志,请单击针对每个日志条目的 下载 链接。

从包含日志数据的 Azure 存储帐户

  1. 打开与 Data Lake Storage Gen1 关联的 Azure 存储帐户工具以进行日志记录,然后单击“Blob”。 Blob 服务 面板列出了两个容器。

    Data Lake Storage Gen 1 刀片的屏幕截图,其中选择了“Blob”选项和“Blob 服务”刀片,并指示了两个 Blob 服务的名称。

    • 容器 insights-logs-audit 包含审核日志。
    • 容器 insights-logs-requests 包含请求日志。
  2. 在这些容器中,日志存储在以下结构下。

    存储在容器中的日志结构的屏幕截图。

    例如,审核日志的完整路径可以是 https://adllogs.blob.core.windows.net/insights-logs-audit/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=04/m=00/PT1H.json

    同样,请求日志的完整路径可能是类似于https://adllogs.blob.core.windows.net/insights-logs-requests/resourceId=/SUBSCRIPTIONS/<sub-id>/RESOURCEGROUPS/myresourcegroup/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/mydatalakestorage/y=2016/m=07/d=18/h=14/m=00/PT1H.json的格式。

了解日志数据的结构

审核和请求日志采用 JSON 格式。 本部分介绍请求和审核日志的 JSON 结构。

请求日志

下面是 JSON 格式的请求日志中的示例条目。 每个 blob 都有一个名为 记录的根对象,其中包含一个由日志对象组成的数组

{
"records": 
  [        
    . . . .
    ,
    {
        "time": "2016-07-07T21:02:53.456Z",
        "resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
        "category": "Requests",
        "operationName": "GETCustomerIngressEgress",
        "resultType": "200",
        "callerIpAddress": "::ffff:1.1.1.1",
        "correlationId": "4a11c709-05f5-417c-a98d-6e81b3e29c58",
        "identity": "1808bd5f-62af-45f4-89d8-03c5e81bac30",
        "properties": {"HttpMethod":"GET","Path":"/webhdfs/v1/Samples/Outputs/Drivers.csv","RequestContentLength":0,"StoreIngressSize":0 ,"StoreEgressSize":4096,"ClientRequestId":"3b7adbd9-3519-4f28-a61c-bd89506163b8","StartTime":"2016-07-07T21:02:52.472Z","EndTime":"2016-07-07T21:02:53.456Z","QueryParameters":"api-version=<version>&op=<operationName>"}
    }
    ,
    . . . .
  ]
}

请求日志架构

名字 类型 说明
时间 字符串 日志的时间戳(以 UTC 为单位)
资源ID 字符串 操作发生在的资源的 ID
类别 字符串 日志类别。 例如,请求
操作名称 字符串 被记录的操作的名称。 例如,getfilestatus。
resultType 字符串 操作的状态,例如 200。
呼叫者IP地址 字符串 发出请求的客户端的 IP 地址
correlationId 字符串 可以用于将一组相关日志条目组合在一起的日志 ID
身份 对象 生成日志的主体身份
性能 JSON(JavaScript 对象表示法) 有关详细信息,请参阅下文

请求日志属性架构

名字 类型 说明
HTTP方法 字符串 用于操作的 HTTP 方法。 例如,GET。
路径 字符串 操作执行的路径
请求内容长度 整数 (int) HTTP 请求的内容长度
ClientRequestId 字符串 唯一标识此请求的 ID
开始时间 字符串 服务器收到请求的时间
结束时间 字符串 服务器发送响应的时间
StoreIngressSize Long 传入 Data Lake Store 的大小(以字节为单位)
StoreEgressSize Long 从 Data Lake Store 传出数据的大小(字节为单位)
查询参数 字符串 说明:这些是 http 查询参数。 示例 1:api-version=2014-01-01&op=getfilestatus 示例 2: op=APPEND&append=true&syncFlag=DATA&filesessionid=bee3355a-4925-4435-bb4d-ceea52811aeb&leaseid=bee3355a-4925-4435-bb4d-ceea52811aeb&offset=28313319&api-version=2017-08-01

审核日志

下面是 JSON 格式审核日志中的示例条目。 每个 blob 都有一个名为 的记录根对象,其中 包含日志对象的数组。

{
"records": 
  [        
    . . . .
    ,
    {
        "time": "2016-07-08T19:08:59.359Z",
        "resourceId": "/SUBSCRIPTIONS/<subscription_id>/RESOURCEGROUPS/<resource_group_name>/PROVIDERS/MICROSOFT.DATALAKESTORE/ACCOUNTS/<data_lake_storage_gen1_account_name>",
        "category": "Audit",
        "operationName": "SeOpenStream",
        "resultType": "0",
        "resultSignature": "0",
        "correlationId": "381110fc03534e1cb99ec52376ceebdf;Append_BrEKAmg;25.66.9.145",
        "identity": "A9DAFFAF-FFEE-4BB5-A4A0-1B6CBBF24355",
        "properties": {"StreamName":"adl://<data_lake_storage_gen1_account_name>.azuredatalakestore.net/logs.csv"}
    }
    ,
    . . . .
  ]
}

审核日志架构

名字 类型 说明
时间 字符串 日志的时间戳(以 UTC 为单位)
资源ID 字符串 操作所作用的资源的 ID
类别 字符串 日志类别。 例如,审核
operationName 字符串 被记录的操作的名称。 例如,getfilestatus。
结果类型 字符串 操作的状态,例如 200。
结果签名 字符串 有关操作的其他详细信息。
correlationId 字符串 可用于组合一组相关日志条目的日志的 ID
身份 对象 日志生成的身份
性能 JSON(JavaScript 对象表示法) 有关详细信息,请参阅下文

审核日志属性架构

名字 类型 说明
StreamName 字符串 执行操作的路径

处理日志数据的示例

将日志从 Azure Data Lake Storage Gen1 发送到 Azure Monitor 日志(请参阅 查看或分析使用 Azure Monitor 日志搜索收集的数据,以获取有关使用 Azure Monitor 日志的详细信息)时,以下查询将返回包含用户显示名称列表、事件时间以及事件时间以及视觉图表的事件计数的表。 可以轻松修改它以显示用户 GUID 或其他属性:

search *
| where ( Type == "AzureDiagnostics" )
| summarize count(TimeGenerated) by identity_s, TimeGenerated

Azure Data Lake Storage Gen1 提供了有关如何处理和分析日志数据的示例。 可以在 https://github.com/Azure/AzureDataLake/tree/master/Samples/AzureDiagnosticsSample找到示例。

另请参阅