教學課程:針對在 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 Developer Kit ,第 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 ] 時, Azure 入口網站中的 [自訂部署 ] 頁面會顯示預先填入的欄位清單。
您可以將大部分欄位保留為目前,但請務必輸入下列設定:
- 資源群組 :選取現有的群組或建立新的群組。
- 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:輸入您要寄送 Azure 記錄或計量之 Logz.io 帳戶的權杖 。 您可以在 Logz.io UI 的帳戶頁面上找到此權杖。
同意頁面底部的條款,然後選取 [ 購買 ]。 然後,Azure 會部署範本,這可能需要一兩分鐘的時間。 您最終會在入口網站頂端看到「部署成功」訊息。
您可以流覽已定義的資源群組,以檢閱已部署的資源。
若要瞭解如何設定 logzio-azure-serverless 以將資料備份至Azure Blob 儲存體,請參閱 Ship Azure 活動記錄 。
將 Azure 記錄和計量串流至 Logz.io
既然您已部署整合範本,您必須設定 Azure,將診斷資料串流至您剛才部署的事件中樞。 當資料進入事件中樞時,函式應用程式接著會將該資料轉送至 Logz.io。
在搜尋列中,輸入 「診斷」,然後選取 [ 診斷設定 ]。
從資源清單中選擇資源,然後選取 [新增診斷設定 ] 以開啟 該資源的 [診斷設定 ] 面板。
為您的診斷設定指定 名稱 。
選取 [ 串流至事件中樞 ],然後選取 [設定 ] 以開啟 [ 選取事件中 樞 ] 面板。
選擇您的事件中樞:
- 選取事件中樞命名空間 :選擇以 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。
接下來,深入瞭解如何使用事件中樞來監視您的應用程式: