教學課程:針對在 Azure 上執行的 Java 應用程式,開始使用 Logz.io 進行監視和記錄
本教學課程說明如何設定傳統 Java 應用程式,以將記錄傳送至 Logz.io 服務以進行擷取和分析。 Logz.io 提供以 Elasticsearch/Logstash/Kibana (ELK) 和 Grafana 為基礎的完整監視解決方案。
本教學課程假設您使用Log4J或Logback。 這些連結庫是 Java 中記錄最常使用的兩個連結庫,因此本教學課程適用於在 Azure 上執行的大部分應用程式。 如果您已經使用彈性堆疊來監視 Java 應用程式,本教學課程會示範如何重新設定為以 Logz.io 端點為目標。
在本教學課程中,您將瞭解如何:
- 將記錄從現有的 Java 應用程式傳送至 Logz.io。
- 將診斷記錄和計量從 Azure 服務傳送至 Logz.io。
先決條件
- Java 開發人員工具包版本 11 或更新版本
- 來自 Azure Marketplace 的 Logz.io 帳戶
- 使用Log4J或Logback的現有Java應用程式
將 Java 應用程式記錄傳送至 Logz.io
首先,您將瞭解如何使用令牌來設定 Java 應用程式,以存取您的 Logz.io 帳戶。
取得您的 Logz.io 存取令牌
若要取得您的令牌,請登入您的 Logz.io 帳戶,選取左下角的齒輪圖示,然後選取 [設定]>[管理令牌],然後選取 [數據傳送令牌] 索引卷標。複製顯示的 預設存取令牌,以及 接聽程式 URL,以便稍後使用。
安裝和設定 Log4J 或 Logback 的 Logz.io 程式庫
Logz.io Java 連結庫可在 Maven Central 上取得,因此您可以將它新增為應用程式組態的相依性。 檢查 Maven Central 上的版本號碼,並使用下列組態設定中的最新版本。
如果您使用 Maven,請將下列相依性新增至您的 pom.xml 檔案:
Log4J:
<dependency>
<groupId>io.logz.log4j2</groupId>
<artifactId>logzio-log4j2-appender</artifactId>
<version>2.0.0</version>
</dependency>
Logback:
<dependency>
<groupId>io.logz.logback</groupId>
<artifactId>logzio-logback-appender</artifactId>
<version>2.0.0</version>
</dependency>
如果您使用 Gradle,請將下列相依性新增至組建腳稿:
Log4J:
implementation 'io.logz.log4j:logzio-log4j-appender:2.0.0'
Logback:
implementation 'io.logz.logback:logzio-logback-appender:2.0.0'
接下來,更新您的Log4J或Logback組態檔:
Log4J:
<Appenders>
<LogzioAppender name="Logzio">
<logzioToken><your-logz-io-token></logzioToken>
<logzioType>java</logzioType>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
</LogzioAppender>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="Logzio"/>
</Root>
</Loggers>
Logback:
<configuration>
<!-- Use shutdownHook so that we can close gracefully and finish the log drain -->
<shutdownHook class="ch.qos.logback.core.hook.DelayingShutdownHook"/>
<appender name="LogzioLogbackAppender" class="io.logz.logback.LogzioLogbackAppender">
<token><your-logz-io-token></token>
<logzioUrl>https://<your-logz-io-listener-host>:8071</logzioUrl>
<logzioType>java</logzioType>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
</appender>
<root level="debug">
<appender-ref ref="LogzioLogbackAppender"/>
</root>
</configuration>
將 <your-logz-io-token>
佔位元替換為您的存取令牌,並將 <your-logz-io-listener-host>
佔位元替換為您區域的聆聽主機,例如, listener.logz.io
。 如需尋找帳戶區域的詳細資訊,請參閱 帳戶區域。
logzioType
元素是指 Elasticsearch 中的邏輯字段,用來將不同的檔彼此分開。 請務必正確設定此參數,以充分利用 Logz.io。
Logz.io 「類型」是記錄格式,例如:Apache、NGinx、MySQL,而不是您的來源,例如:server1
、server2
、server3
。 在本教學課程中,我們會呼叫類型 java
,因為我們正在設定Java應用程式,而且我們預期這些應用程式都有相同的格式。
針對進階使用方式,您可以將 Java 應用程式分組為不同類型的應用程式,這些類型全都有自己的特定記錄格式(可使用 Log4J 和 Logback 進行設定)。 例如,您可以有 spring-boot-monolith
類別和 spring-boot-microservice
類別。
在 Logz.io 上測試組態和記錄分析
設定 Logz.io 連結庫之後,您的應用程式現在應該會直接將記錄傳送至該連結庫。 若要測試一切是否正常運作,請移至 Logz.io 操作介面,選取 [記錄>即時] 標籤,然後選取 [執行]。 您應該會看到類似下列的訊息,告知連線正常運作:
Requesting Live Tail access...
Access granted. Opening connection...
Connected. Tailing...
接下來,啟動您的應用程式,或使用它來產生一些記錄。 記錄應該會直接出現在畫面上。 例如,以下是 Spring Boot 應用程式的第一個啟動訊息:
2019-09-19 12:54:40.685Z Starting JavaApp on javaapp-default-9-5cfcb8797f-dfp46 with PID 1 (/workspace/BOOT-INF/classes started by cnb in /workspace)
2019-09-19 12:54:40.686Z The following profiles are active: prod
2019-09-19 12:54:42.052Z Bootstrapping Spring Data repositories in DEFAULT mode.
2019-09-19 12:54:42.169Z Finished Spring Data repository scanning in 103ms. Found 6 repository interfaces.
2019-09-19 12:54:43.426Z Bean 'spring.task.execution-org.springframework.boot.autoconfigure.task.TaskExecutionProperties' of type [org.springframework.boot.autoconfigure.task.TaskExecutionProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
既然 Logz.io 處理您的記錄,您可以受益於所有平台的服務。
將 Azure 服務數據傳送至 Logz.io
接下來,您將瞭解如何將記錄和計量從 Azure 資源傳送至 Logz.io。
部署範本
第一個步驟是部署 Logz.io - Azure 整合範本。 整合基於現成的 Azure 部署範本,能設定管線所需的所有基礎組件。 此範本會建立事件中樞命名空間、事件中樞、兩個儲存 Blob,以及所有必要的正確許可權和連線。 自動化部署所設定的資源可以收集單一 Azure 區域的數據,並將該數據寄送至 Logz.io。
尋找存放庫自述檔
當您選取 [部署至 Azure時,Azure 入口網站中的 [自定義部署] 頁面會顯示預先填入的欄位清單。
您可以將大部分欄位保留 as-is,但請務必輸入下列設定:
- 資源群組:選取現有的群組或建立新的群組。
-
Logzio Logs/Metrics Host:輸入 Logz.io 接聽程式的 URL。 如果您不確定此 URL 是什麼,請檢查您的登入 URL。 如果
app.logz.io
,請使用listener.logz.io
(這是預設設定)。 如果app-eu.logz.io
,請使用listener-eu.logz.io
。 - Logzio Logs/Metrics Token:輸入您所需的 Logz.io 帳戶 token,將 Azure 日誌或度量傳送到該帳戶。 您可以在 Logz.io UI 的帳戶頁面上找到此令牌。
同意頁面底部的條款,然後選取 [購買]。 然後,Azure 會部署範本,這可能需要一兩分鐘的時間。 您最終會在入口網站頂端看到「部署成功」訊息。
您可以瀏覽已定義的資源群組,以檢閱已部署的資源。
若要瞭解如何設定 logzio-azure-serverless
將資料備份至 Azure Blob 記憶體,請參閱 寄送 Azure 活動記錄。
將 Azure 記錄和計量串流至 Logz.io
現在您已部署整合範本,您必須設定 Azure,將診斷數據串流至您剛才部署的事件中樞。 當數據進入事件中樞時,函式應用程式會將該數據轉送至 Logz.io。
在搜尋列中,輸入 Diagnostic,然後選取 診斷設定。
從資源清單中選擇資源,然後選取 [[新增診斷設定],以開啟該資源的 [診斷設定] 面板。
為您的診斷設定命名為 名稱。
選取 [Stream 至事件中樞],然後選取 [設定] 以開啟 [選取事件中樞] 面板。
選擇您的事件中樞:
-
選取事件中樞命名空間:選擇 以 logzio 開頭的命名空間(例如
LogzioNS6nvkqdcci10p
)。 - 選取事件中樞名稱:針對記錄,請選擇 [insights-operational-logs],針對計量選擇 [insights-operational-metrics]。
選取事件中樞原則名稱 :選擇logzioSharedAccessKey。
-
選取事件中樞命名空間:選擇 以 logzio 開頭的命名空間(例如
選取 [確定] 返回 [診斷設定] 面板。
在 [記錄] 區段中,選取您要串流的數據,然後選取 [儲存]。
選取的數據現在會串流至事件中樞。
將數據可視化
接下來,給您的數據一些時間從您的系統傳輸到 Logz.io,然後打開 Kibana。 您應該會看到類型為 eventhub
的數據填滿您的儀錶板。 如需如何建立儀錶板的詳細資訊,請參閱 Kibana - 建立儀錶板。
您可以從該處查詢 [探索] 索引標籤中的特定數據,或建立Kibana物件,以在 [可視化] 索引卷標中將數據可視化。
清除資源
當您完成本教學課程中建立的 Azure 資源時,您可以使用下列命令加以刪除:
az group delete --name <resource group>
後續步驟
在本教學課程中,您已瞭解如何設定 Java 應用程式和 Azure 服務,以將記錄和計量傳送至 Logz.io。
接下來,深入瞭解如何使用事件中樞來監視您的應用程式: