共用方式為


教學課程:針對在 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 應用程式記錄傳送至 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。

  1. 在搜尋列中,輸入 「診斷」,然後選取 [ 診斷設定 ]。

  2. 從資源清單中選擇資源,然後選取 [新增診斷設定 ] 以開啟 該資源的 [診斷設定 ] 面板。

    Diagnostics settings panel

  3. 為您的診斷設定指定 名稱

  4. 選取 [ 串流至事件中樞 ],然後選取 [設定 ] 以開啟 [ 選取事件中 ] 面板。

  5. 選擇您的事件中樞:

    • 選取事件中樞命名空間 :選擇以 Logzio 開頭的命名空間( LogzioNS6nvkqdcci10p 例如)。
    • 選取事件中樞名稱 :針對記錄選擇 insights-operational-logs ,而計量選擇 insights-operational-metrics
    • 選取事件中樞原則名稱 :選擇 [LogzioSharedAccessKey ]。
  6. 選取 [ 確定 ] 返回 [ 診斷設定 ] 面板。

  7. 在 [記錄] 區段中,選取您要串流的資料,然後選取 [ 儲存 ]。

選取的資料現在會串流至事件中樞。

將資料視覺化

接下來,為您的資料提供一些時間,以從系統取得 Logz.io,然後開啟 Kibana。 您應該會看到填滿儀表板的資料(類型 為 eventhub )。 如需如何建立儀表板的詳細資訊,請參閱 Kibana - 建立儀表板

您可以從該處查詢 [探索 ] 索引標籤中的 特定資料,或建立 Kibana 物件,以在 [視覺化] 索引標籤中 將資料視覺化

清除資源

當您完成本教學課程中建立的 Azure 資源時,您可以使用下列命令加以刪除:

az group delete --name <resource group>

下一步

在本教學課程中,您已瞭解如何設定 JAVA 應用程式和 Azure 服務,以將記錄和計量傳送至 Logz.io。

接下來,深入瞭解如何使用事件中樞來監視您的應用程式: