你当前正在访问 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. 转到群集中的“脚本操作”,然后选择“立即提交”以开始创建脚本操作的过程

    显示用于开始创建脚本操作过程的按钮的屏幕截图。

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

    显示用于提交脚本操作的窗格的屏幕截图。

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

    显示成功运行脚本以启用表和日志类型的屏幕截图。

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

疑难解答

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

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

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

    显示“Ambari 主页”仪表板位置的屏幕截图。

  2. 选择“设置”按钮。

    显示“设置”按钮的屏幕截图。

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

    显示后台操作的屏幕截图。

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

    显示主机的脚本运行状态的屏幕截图。

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

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

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

    显示用于坚持执行脚本操作的复选框的屏幕截图。

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

    备注

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

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

    显示所选节点类型的屏幕截图。

脚本操作失败

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

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

表名

有关不同日志类型(源)的表名称的完整列表,请参阅 Azure Monitor 日志表

参数语法

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

显示参数语法框的屏幕截图。

参数包含三个部分:

  • 群集类型
  • 表和日志类型
  • 操作(--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 

后续步骤