在 Azure HDInsight 中使用選擇性記錄搭配指令碼動作來監視 Azure 監視器代理程式 (AMA)
Azure 監視器記錄是監視您的雲端和內部部署環境的 Azure 監視器服務。 監視可協助維護其可用性和效能。
Azure 監視器記錄會收集由雲端中的資源、內部部署環境的資源,以及其他監視工具所產生的資料, 並使用這些資料來提供跨多個來源的分析。 若要取得分析,您可以在 Azure 入口網站中使用 HDInsight 的指令碼動作來啟用選擇性記錄功能。
關於選擇性記錄
選擇性記錄是 Azure 整體監視系統的一部分。 當您將叢集連線至 Log Analytics 工作區並啟用選擇性記錄後,便能看到 HDInsight 安全性記錄、Yarn Resource Manager 和系統計量等記錄和計量。 您可以監視工作負載,並查看其如何影響叢集穩定性。
選擇性記錄可讓您在 Log Analytics 工作區中啟用或停用所有資料表,或啟用已選擇的資料表。 您可以調整每個資料表的來源類型。
注意
如果在叢集中重新安裝 Log Analytics,您必須再次停用所有資料表和記錄類型。 重新安裝會將所有組態檔重設至原始狀態。
指令碼動作的考量
- 監視系統使用中繼資料伺服器精靈 (監視代理程式) 與 Fluentd ,運用整合的記錄層來收集記錄。
- 選擇性記錄使用指令碼動作來停用或啟用資料表及其記錄類型。 由於選擇性記錄不會開啟任何新的連接埠,或變更任何現有的安全性設定,因此沒有任何安全性變更。
- 指令碼動作會在所有指定的節點上平行執行,並變更組態檔以停用或啟用資料表及其記錄類型。
必要條件
- Log Analytics 工作區。 您可以將此工作區視為唯一的 Azure 監視器記錄環境,有其自己的資料存放庫、資料來源和解決方案。 如需指示,請參閱建立 Log Analytics 工作區。
- Azure HDInsight 叢集。 目前,您可以使用選擇性記錄功能搭配下列 HDInsight 叢集類型:
- Hadoop
- hbase
- 互動式查詢
- Spark
如需如何建立 HDInsight 叢集的指示,請參閱開始使用 Azure HDInsight。
使用指令碼動作為多個資料表和記錄類型啟用或停用記錄
移至叢集中的 [指令碼動作],然後選取 [提交新的] 以開始建立指令碼動作程序。
[提交指令碼動作] 窗格隨即出現。
在指令碼類型中,選取 [自訂]。
為指令碼命名。 例如:停用兩個資料表和兩個來源。
Bash 指令碼 URI 必須是指向 selectiveLoggingScript.sh 的連結。
選取適用於叢集的所有節點類型。 這些選項包括前端節點、背景工作角色節點和 ZooKeeper 節點。
定義參數。 例如:
- Spark:
spark HDInsightSparkLogs:SparkExecutorLog --disable
- Interactive Query:
interactivehive HDInsightHadoopAndYarnLogs:NodeManager --enable
- Hadoop:
hadoop HDInsightHiveAndLLAPLogs:HiveServer2Log --disable
- HBase:
hbase HDInsightHBaseLogs:HBaseRegionServerLog --enable
如需詳細資訊,請參閱參數語法一節。
- Spark:
選取 建立。
幾分鐘後,指令碼動作歷程記錄旁邊會出現綠色的核取記號。 這表示指令碼已成功執行。
您會在 Log Analytics 工作區中看到變更。
疑難排解
Log Analytics 工作區中不會顯示任何變更
如果提交了指令碼動作,但 Log Analytics 工作區中沒有任何變更:
在 [儀表板] 底下,選取 [Ambari 首頁] 以檢查偵錯資訊。
選取 [設定] 按鈕。
選取背景作業清單頂端的最新指令碼執行。
個別驗證所有節點中指令碼的執行狀態。
檢查參數語法區段的參數語法是否正確。
檢查 Log Analytics 工作區是否已連線至叢集,並開啟 Log Analytics 監視。
檢查您是否已針對執行的指令碼動作選取了 [保存此指令碼動作,以在將新節點新增至叢集核時重新執行] 核取方塊。
查看最近是否有一個新節點新增至叢集中。
注意
若要讓指令碼在最新叢集中執行,則必須保存指令碼。
請確定您已選取指令碼動作所需的所有節點類型。
指令碼動作失敗
如果指令碼動作在指令碼動作歷程記錄中顯示失敗狀態:
- 檢查參數語法區段的參數語法是否正確。
- 檢查指令碼連結是否正確。 連結必須為:
https://hdiconfigactions.blob.core.windows.net/log-analytics-patch/selectiveLoggingScriptsAma/selectiveLoggingScript.sh
。
資料表名稱
如需不同記錄類型 (來源) 之資料表名稱的完整清單,請參閱 Azure 監視器記錄資料表。
參數語法
參數會定義叢集類型、資料表名稱、來源名稱和動作。
參數包含三個部分:
- 叢集類型
- 資料表和記錄類型
- 動作 (
--disable
或--enable
)
多個資料表的語法
當您有多個資料表時,其會以逗號分隔。 例如:
spark HDInsightSecurityLogs, HDInsightAmbariSystemMetrics --disable
hbase HDInsightSecurityLogs, HDInsightAmbariSystemMetrics --enable
多個來源類型或記錄類型的語法
當您有多個來源類型或記錄類型時,其會以空格分隔。
若要停用來源,請寫入包含記錄類型的資料表名稱,後面接著冒號,再來是實際的記錄類型名稱:
TableName : LogTypeName
例如,假設 spark HDInsightSecurityLogs
是具有兩種記錄類型的資料表:AmbariAuditLog
和 AuthLog
。 若要停用這兩種記錄類型,正確的語法會是:
spark HDInsightSecurityLogs: AmbariAuditLog AuthLog --disable
多個資料表和來源類型的語法
如果您需要停用兩個資料表和兩個來源類型,請使用下列語法:
- Spark:
HDInsightHiveAndLLAPLogs
資料表中的InteractiveHiveMetastoreLog
記錄類型 - Hbase:
HDInsightHiveAndLLAPLogs
資料表中的InteractiveHiveHSILog
記錄類型 - Hadoop:
HDInsightHiveAndLLAPMetrics
資料表 - Hadoop:
HDInsightHiveTezAppStats
資料表
以逗號分隔資料表。 在來源所在的資料表名稱後使用冒號來表示來源。
這類案例的正確參數語法會是:
interactivehive HDInsightHiveAndLLAPLogs: InteractiveHiveMetastoreLog, HDInsightHiveAndLLAPMetrics, HDInsightHiveTezAppStats, HDInsightHiveAndLLAPLogs: InteractiveHiveHSILog --enable