我有很多来自我正在管理的 Azure Databricks 群集的审核日志。日志是简单的应用程序审计日志,格式为JSON
. 您有关于作业、集群、笔记本等的信息,您可以在此处查看一条记录的示例:
{
"TenantId": "<your tenant id",
"SourceSystem": "|Databricks|",
"TimeGenerated": "2019-05-01T00:18:58Z",
"ResourceId": "/SUBSCRIPTIONS/SUBSCRIPTION_ID/RESOURCEGROUPS/RESOURCE_GROUP/PROVIDERS/MICROSOFT.DATABRICKS/WORKSPACES/PAID-VNET-ADB-PORTAL",
"OperationName": "Microsoft.Databricks/jobs/create",
"OperationVersion": "1.0.0",
"Category": "jobs",
"Identity": {
"email": "mail@contoso.com",
"subjectName": null
},
"SourceIPAddress": "131.0.0.0",
"LogId": "201b6d83-396a-4f3c-9dee-65c971ddeb2b",
"ServiceName": "jobs",
"UserAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36",
"SessionId": "webapp-cons-webapp-01exaj6u94682b1an89u7g166c",
"ActionName": "create",
"RequestId": "ServiceMain-206b2474f0620002",
"Response": {
"statusCode": 200,
"result": "{\"job_id\":1}"
},
"RequestParams": {
"name": "Untitled",
"new_cluster": "{\"node_type_id\":\"Standard_DS3_v2\",\"spark_version\":\"5.2.x-scala2.11\",\"num_workers\":8,\"spark_conf\":{\"spark.databricks.delta.preview.enabled\":\"true\"},\"cluster_creator\":\"JOB_LAUNCHER\",\"spark_env_vars\":{\"PYSPARK_PYTHON\":\"/databricks/python3/bin/python3\"},\"enable_elastic_disk\":true}"
},
"Type": "DatabricksJobs"
}
目前,我将日志存储到 Elasticsearch 中,并计划在此类日志上使用他们的异常检测工具。因此,我不需要实现任何算法,而是选择正确的属性,或者执行正确的聚合,或者使用多变量分析组合更多属性。但是,我不熟悉此类主题,也没有此背景。我已阅读异常检测:Chandola 等人的调查。,这对于将我指向正确的子字段非常有用。因此,我明白我正在处理时间序列,并且根据我将执行的聚合类型,我可能会面临序列数据的集体异常(例如:ActionName
这些日志的字段)或序列数据的上下文异常。
我想知道您是否可以为我指明正确的方向,因为我还没有设法在审计日志上找到任何与异常检测相关的工作。更具体地说,我应该调查什么样的异常?哪种聚合将是有益的?
请记住,我有大量数据。此外,我将不胜感激任何形式的反馈,即使它不涉及 Elasticsearch;因此,请随意为这种异常检测场景提出一个完整的无监督机器学习方法,而不是 Elasticsearch 的简单用例。