你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure HDInsight 中通过脚本操作使用选择性日志记录

Azure Monitor 日志是用于监视云和本地环境的 Azure Monitor 服务。 该监视服务有助于维持上述环境的可用性和性能。

Azure Monitor 日志将收集云、本地环境和其他监视工具中由资源生成的数据。 它使用数据跨多个源提供分析。 若要获取分析,请在 Azure 门户中使用 HDInsight 的脚本操作启用选择性日志记录功能。

关于选择性日志记录

选择性日志记录是 Azure 中整体监视系统的一部分。 将群集连接到 Log Analytics 工作区并启用选择性日志记录后,可以查看日志和指标,例如 HDInsight 安全日志、Yarn 资源管理器和系统指标。 可以监视工作负载并查看它们如何影响群集稳定性。

使用选择性日志记录,可以在 Log Analytics 工作区中启用或禁用所有表,或启用选定的表。 可以调整每个表的源类型。

备注

如果在群集中重新安装 Log Analytics,则必须再次禁用所有表和日志类型。 重新安装会将所有配置文件重置为其原始状态。

脚本操作的注意事项

  • 监视系统使用元数据服务器守护程序(一种监视代理)和 Fluentd 通过统一的日志记录层收集日志。
  • 选择性日志记录使用脚本操作禁用或启用表及其日志类型。 由于选择性日志记录不打开任何新端口或更改任何现有安全设置,因此在安全性方面没有任何变化。
  • 脚本操作在所有指定的节点上并行运行,并更改配置文件以禁用或启用表及其日志类型。

先决条件

  • Log Analytics 工作区。 可将此工作区视为独特的 Azure Monitor 日志环境,包含自身的数据存储库、数据源和解决方案。 有关说明,请参阅创建 Log Analytics 工作区
  • 一个 Azure HDInsight 群集。 目前,可以对以下 HDInsight 群集类型使用选择性日志记录功能:
    • Hadoop
    • HBase
    • 交互式查询
    • Spark

有关如何创建 HDInsight 群集的说明,请参阅 Azure HDInsight 入门

对多个表和日志类型使用脚本操作以启用或禁用日志

  1. 转到群集中的“脚本操作”,然后选择“立即提交”以开始创建脚本操作的过程

    Screenshot that shows the button for starting the process of creating a script action.

    此时会显示“提交脚本操作”。

    Screenshot that shows the pane for submitting a script action.

  2. 对于脚本类型,选择“自定义”。

  3. 为脚本命名。 例如:“禁用两个表和两个源”。

  4. Bash 脚本 URI 必须是指向 selectiveLoggingScript.sh 的链接。

  5. 选择适用于群集的所有节点类型。 选项包括头节点、工作器节点和 ZooKeeper 节点。

  6. 定义参数。 例如:

    • Spark:spark HDInsightSparkLogs:SparkExecutorLog --disable
    • 交互式查询:interactivehive HDInsightSparkLogs:SparkExecutorLog --enable
    • Hadoop:hadoop HDInsightSparkLogs:SparkExecutorLog --disable
    • HBase:hbase HDInsightSparkLogs: HDInsightHBaseLogs --enable

    有关详细信息,请参阅参数语法部分。

  7. 选择“创建”。

  8. 几分钟后,脚本操作历史记录旁边会显示一个绿色复选标记。 这意味着脚本已成功运行。

    Screenshot that shows a successful run of a script to enable tables and log types.

你将在 Log Analytics 工作区中看到所做的更改。

疑难解答

Log Analytics 工作区中未显示任何更改

如果提交了脚本操作,但 Log Analytics 工作区中没有更改:

  1. 在“仪表板”下,选择“Ambari 主页”检查调试信息。

    Screenshot that shows the location of the Ambari home dashboard.

  2. 选择“设置”按钮。

    Screenshot that shows the Settings button.

  3. 在后台操作列表的顶部选择最新的脚本运行。

    Screenshot that shows background operations.

  4. 逐个验证所有节点中的脚本运行状态。

    Screenshot that shows the script run status for hosts.

  5. 检查参数语法节中的参数语法是否正确。

  6. 检查 Log Analytics 工作区是否已连接到群集,以及 Log Analytics 监视是否已启用。

  7. 检查是否为运行的脚本操作选中了“在将新节点添加到群集时,坚持执行此脚本操作以便重新运行”复选框。

    Screenshot that shows the checkbox for persisting a script action.

  8. 查看最近是否已将新节点添加到群集。

    备注

    要使脚本在最新群集内运行,脚本必须坚持执行。

  9. 确保选择了脚本操作所需的所有节点类型。

    Screenshot that shows selected node types.

脚本操作失败

如果脚本操作在脚本操作历史记录中显示“失败”状态:

  1. 检查参数语法节中的参数语法是否正确。
  2. 检查脚本链接是否正确。 该链接应为:https://hdiconfigactions.blob.core.windows.net/log-analytics-patch/selectiveLoggingScripts/selectiveLoggingScript.sh

表名

Spark 群集

以下表名称适用于 Spark 表中的不同日志类型(源)。

源编号 表名称 日志类型 说明
1. HDInsightAmbariCluster 警报 无日志类型 此表包含来自群集内每个节点(边缘节点除外)的 Ambari 群集警报。 每个警报都是此表中的一个记录。
2. HDInsightAmbariSystem 指标 无日志类型 此表包含从 Ambari 收集的系统指标。 指标现在来自群集中的每个节点(边缘节点除外),而不只是两个头节点。 每个指标现在都是一列,并且每个指标对每个记录报告一次。
3. HDInsightHadoopAndYarnLogs 头节点:MRJobSummary、资源管理器、TimelineServer 工作器节点:NodeManager 此表包含从 Hadoop 和 YARN 框架生成的所有日志。
4. HDInsightSecurityLogs AmbariAuditLog、AuthLog 此表包含来自 Ambari 审核和身份验证日志的记录。
5. HDInsightSparkLogs 头节点:JupyterLog、LivyLog、SparkThriftDriverLog 工作器节点:SparkExecutorLog、SparkDriverLog 此表包含与 Spark 及其相关组件(Livy 和 Jupyter)相关的所有日志。
6. HDInsightHadoopAndYarnMetrics 无日志类型 此表包含来自 Hadoop 和 YARN 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标,以及我们认为重要的更多指标。 我们添加了时间线服务器、节点管理器和作业历史记录服务器指标。 它对每个记录包含一个指标。
7. HDInsightOozieLogs Oozie 此表包含从 Oozie 框架生成的所有日志。

Interactive Query 群集

以下表名称适用于 Interactive Query 表中的不同日志类型(源)。

源编号 表名称 日志类型 说明
1. HDInsightAmbariClusterAlerts 无日志类型 此表包含来自群集内每个节点(边缘节点除外)的 Ambari 群集警报。 每个警报都是此表中的一个记录。
2. HDInsightAmbariSystem 指标 无日志类型 此表包含从 Ambari 收集的系统指标。 指标现在来自群集中的每个节点(边缘节点除外),而不只是两个头节点。 每个指标现在都是一列,并且每个指标对每个记录报告一次。
3. HDInsightHadoopAndYarnLogs 头节点:MRJobSummary、资源管理器、TimelineServer 工作器节点:NodeManager 此表包含从 Hadoop 和 YARN 框架生成的所有日志。
4. HDInsightHadoopAndYarnMetrics 无日志类型 此表包含来自 Hadoop 和 YARN 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标,以及我们认为重要的更多指标。 我们添加了时间线服务器、节点管理器和作业历史记录服务器指标。 它对每个记录包含一个指标。
5. HDInsightHiveAndLLAPLogs 头节点:InteractiveHiveHSILog、InteractiveHiveMetastoreLog、ZeppelinLog 此表包含从 Hive、LLAP 及其相关组件(WebHCat 和 Zeppelin)生成的日志。
6. HDInsightHiveAndLLAPmetrics 无日志类型 此表包含来自 Hive 和 LLAP 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标。 它对每个记录包含一个指标。
7. HDInsightHiveTezAppStats 无日志类型
8. HDInsightSecurityLogs 头节点:AmbariAuditLog、AuthLog ZooKeeper 节点、工作器节点:AuthLog 此表包含来自 Ambari 审核和身份验证日志的记录。

HBase 群集

以下表名称适用于 HBase 表中的不同日志类型(源)。

源编号 表名称 日志类型 说明
1. HDInsightAmbariClusterAlerts 没有其他日志类型 此表包含来自群集内每个节点(边缘节点除外)的 Ambari 群集警报。 每个警报都是此表中的一个记录。
2. HDInsightAmbariSystem 指标 没有其他日志类型 此表包含从 Ambari 收集的系统指标。 指标现在来自群集中的每个节点(边缘节点除外),而不只是两个头节点。 每个指标现在都是一列,并且每个指标对每个记录报告一次。
3. HDInsightHadoopAndYarnLogs 头节点:MRJobSummary、资源管理器、TimelineServer 工作器节点:NodeManager 此表包含从 Hadoop 和 YARN 框架生成的所有日志。
4. HDInsightSecurityLogs 头节点:AmbariAuditLog、AuthLog 工作器节点:AuthLog ZooKeeper 节点:AuthLog 此表包含来自 Ambari 审核和身份验证日志的记录。
5. HDInsightHBaseLogs 头节点:HDFSGarbageCollectorLog、HDFSNameNodeLog 工作器节点:PhoenixServerLog、HBaseRegionServerLog、HBaseRestServerLog ZooKeeper 节点:HBaseMasterLog 此表包含 HBase 及其相关组件(Phoenix 和 HDFS)中的日志。
6. HDInsightHBaseMetrics 无日志类型 此表包含 HBase 中的 JMX 指标。 它包含“旧架构”列中所列表中的所有相同 JMX 指标。 与旧表不同,每行都包含一个指标。
7. HDInsightHadoopAndYarn 指标 无日志类型 此表包含来自 Hadoop 和 YARN 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标,以及我们认为重要的更多指标。 我们添加了时间线服务器、节点管理器和作业历史记录服务器指标。 它对每个记录包含一个指标。

Hadoop 群集

以下表名称适用于 Hadoop 表中的不同日志类型(源)。

源编号 表名称 日志类型 说明
1. HDInsightAmbariClusterAlerts 无日志类型 此表包含来自群集内每个节点(边缘节点除外)的 Ambari 群集警报。 每个警报都是此表中的一个记录。
2. HDInsightAmbariSystem 指标 无日志类型 此表包含从 Ambari 收集的系统指标。 指标现在来自群集中的每个节点(边缘节点除外),而不只是两个头节点。 每个指标现在都是一列,并且每个指标对每个记录报告一次。
3. HDInsightHadoopAndYarnLogs 头节点:MRJobSummary、资源管理器、TimelineServer 工作器节点:NodeManager 此表包含从 Hadoop 和 YARN 框架生成的所有日志。
4. HDInsightHadoopAndYarnMetrics 无日志类型 此表包含来自 Hadoop 和 YARN 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标,以及我们认为重要的更多指标。 我们添加了时间线服务器、节点管理器和作业历史记录服务器指标。 它对每个记录包含一个指标。
5. HDInsightHiveAndLLAPLogs 头节点:HiveMetastoreLog、HiveServer2Log、WebHcatLog 此表包含从 Hive、LLAP 及其相关组件(WebHCat 和 Zeppelin)生成的日志。
6. HDInsight Hive 和 LLAP 指标 无日志类型 此表包含来自 Hive 和 LLAP 框架的 JMX 指标。 它包含与旧自定义日志表相同的所有 JMX 指标。 它对每个记录包含一个指标。
7. HDInsight 安全日志 头节点:AmbariAuditLog、AuthLog ZooKeeper 节点:AuthLog 此表包含来自 Ambari 审核和身份验证日志的记录。

参数语法

参数定义群集类型、表名、源名称和操作。

Screenshot that shows the parameter syntax box.

参数包含三个部分:

  • 群集类型
  • 表和日志类型
  • 操作(--disable--enable

多个表的语法

如果有多个表,则用逗号分隔它们。 例如:

spark HDInsightSecurityLogs, HDInsightAmbariSystemMetrics --disable

hbase HDInsightSecurityLogs, HDInsightAmbariSystemMetrics --enable

多个源类型或日志类型的语法

如果有多个源类型或日志类型,则用空格分隔它们。

若要禁用源,请写入包含日志类型的表名称,后跟冒号,然后写入实际日志类型名称:

TableName : LogTypeName

例如,假设 spark HDInsightSecurityLogs 是一个具有 AmbariAuditLogAuthLog 日志类型的表。 若要禁用这两种日志类型,正确的语法为:

spark HDInsightSecurityLogs: AmbariAuditLog AuthLog --disable

多个表和源类型的语法

如果需要禁用两个表和两个源类型,请使用以下语法:

  • Spark:HDInsightHiveAndLLAPLogs 表中的 InteractiveHiveMetastoreLog 日志类型
  • Hbase:HDInsightHiveAndLLAPLogs 表中的 InteractiveHiveHSILog 日志类型
  • Hadoop:HDInsightHiveAndLLAPMetrics
  • Hadoop:HDInsightHiveTezAppStats

用逗号分隔表。 源是用其所在表名之后的冒号来表示的。

适用于这些情况的正确参数语法将是:

interactivehive HDInsightHiveAndLLAPLogs: InteractiveHiveMetastoreLog, HDInsightHiveAndLLAPMetrics, HDInsightHiveTezAppStats, HDInsightHiveAndLLAPLogs: InteractiveHiveHSILog --enable 

后续步骤