Log Service提供多語言SDK,而且都支援Log Service消費介面。本文介紹普通消費日誌的SDK樣本及控制台的消費預覽功能。
前提條件
已開通Log Service。更多資訊,請參見開通Log Service。
已建立RAM使用者並完成授權。具體操作,請參見建立RAM使用者並完成授權。
已配置環境變數ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。具體操作,請參見在Linux、macOS和Windows系統配置環境變數。
重要阿里雲帳號的AccessKey擁有所有API的存取權限,建議您使用RAM使用者的AccessKey進行API訪問或日常營運。
強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
已安裝SDK開發環境。具體操作,請參見SDK參考概述。
使用SDK消費
SDK消費
步驟
本樣本中,調用介面讀取日誌資料,完成普通消費的示範。樣本如下所示。關於Log ServiceSDK的更多資訊,請參見SDK參考概述。
添加Maven依賴。 在Java專案的根目錄下,開啟pom.xml檔案,添加以下代碼:
<dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-log</artifactId> <version>0.6.99</version> </dependency>
建立PullLogsWithSPLDemo.java檔案。
import com.aliyun.openservices.log.Client; import com.aliyun.openservices.log.common.Consts; import com.aliyun.openservices.log.common.LogGroupData; import com.aliyun.openservices.log.common.Shard; import com.aliyun.openservices.log.exception.LogException; import com.aliyun.openservices.log.request.PullLogsRequest; import com.aliyun.openservices.log.response.ListShardResponse; import com.aliyun.openservices.log.response.PullLogsResponse; import java.util.HashMap; import java.util.List; import java.util.Map; public class PullLogsDemo { // Log Service的服務存取點。此處以杭州為例,其它地區請根據實際情況填寫 private static final String endpoint = "cn-hangzhou.log.aliyuncs.com"; // 本樣本從環境變數中擷取 AccessKey ID 和 AccessKey Secret。 private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); // Project 名稱 private static final String project = "your_project"; // LogStore 名稱 private static final String logStore = "your_logstore"; public static void main(String[] args) throws Exception { // 建立Log Service Client Client client = new Client(endpoint, accessKeyId, accessKeySecret); // 查詢 LogStore 的 Shard ListShardResponse resp = client.ListShard(project, logStore); System.out.printf("%s has %d shards\n", logStore, resp.GetShards().size()); Map<Integer, String> cursorMap = new HashMap<Integer, String>(); for (Shard shard : resp.GetShards()) { int shardId = shard.getShardId(); // 從頭開始消費,擷取遊標。(如果是從尾部開始消費,使用 Consts.CursorMode.END) cursorMap.put(shardId, client.GetCursor(project, logStore, shardId, Consts.CursorMode.BEGIN).GetCursor()); } try { while (true) { // 從每個Shard中擷取日誌 for (Shard shard : resp.GetShards()) { int shardId = shard.getShardId(); PullLogsRequest request = new PullLogsRequest(project, logStore, shardId, 1000, cursorMap.get(shardId)); PullLogsResponse response = client.pullLogs(request); // 日誌都在日誌組(LogGroup)中,按照邏輯拆分即可。 List<LogGroupData> logGroups = response.getLogGroups(); System.out.printf("Get %d logGroup from logStore:%s:\tShard:%d\n", logGroups.size(), logStore, shardId); // 完成處理拉取的日誌後,移動遊標。 cursorMap.put(shardId, response.getNextCursor()); } } } catch (LogException e) { System.out.println("error code :" + e.GetErrorCode()); System.out.println("error message :" + e.GetErrorMessage()); throw e; } }
SDK基於SPL消費
步驟
本樣本中,調用PullLog介面讀取日誌資料,完成使用Java SDK基於SPL消費日誌資料的示範。關於Log ServiceSDK的更多資訊,請參見SDK參考概述。
添加Maven依賴。
在Java專案的根目錄下,開啟pom.xml檔案,添加以下代碼:
<dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>aliyun-log</artifactId> <version>0.6.99</version> </dependency>
建立PullLogsWithSPLDemo.java檔案。
import com.aliyun.openservices.log.Client; import com.aliyun.openservices.log.common.*; import com.aliyun.openservices.log.common.Consts; import com.aliyun.openservices.log.exception.LogException; import com.aliyun.openservices.log.request.PullLogsRequest; import com.aliyun.openservices.log.response.ListShardResponse; import com.aliyun.openservices.log.response.PullLogsResponse; import java.util.HashMap; import java.util.List; import java.util.Map; public class PullLogsWithSPLDemo { // Log Service的服務存取點。此處以杭州為例,其它地區請根據實際情況填寫 private static final String endpoint = "cn-hangzhou.log.aliyuncs.com"; // 本樣本從環境變數中擷取 AccessKey ID 和 AccessKey Secret。 private static final String accessKeyId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static final String accessKeySecret = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); // Project 名稱 private static final String project = "your_project"; // LogStore 名稱 private static final String logStore = "your_logstore"; public static void main(String[] args) throws Exception { // 建立Log Service Client Client client = new Client(endpoint, accessKeyId, accessKeySecret); // 查詢 LogStore 的 Shard ListShardResponse resp = client.ListShard(project, logStore); System.out.printf("%s has %d shards\n", logStore, resp.GetShards().size()); Map<Integer, String> cursorMap = new HashMap<Integer, String>(); for (Shard shard : resp.GetShards()) { int shardId = shard.getShardId(); // 從頭開始消費,擷取遊標。(如果是從尾部開始消費,使用 Consts.CursorMode.END) cursorMap.put(shardId, client.GetCursor(project, logStore, shardId, Consts.CursorMode.BEGIN).GetCursor()); } try { while (true) { // 從每個Shard中擷取日誌 for (Shard shard : resp.GetShards()) { int shardId = shard.getShardId(); PullLogsRequest request = new PullLogsRequest(project, logStore, shardId, 1000, cursorMap.get(shardId)); request.setQuery("* | where cast(body_bytes_sent as bigint) > 14000"); request.setPullMode("scan_on_stream"); PullLogsResponse response = client.pullLogs(request); // 日誌都在日誌組(LogGroup)中,按照邏輯拆分即可。 List<LogGroupData> logGroups = response.getLogGroups(); System.out.printf("Get %d logGroup from logStore:%s:\tShard:%d\n", logGroups.size(), logStore, shardId); // 完成處理拉取的日誌後,移動遊標。 cursorMap.put(shardId, response.getNextCursor()); } } } catch (LogException e) { System.out.println("error code :" + e.GetErrorCode()); System.out.println("error message :" + e.GetErrorMessage()); throw e; } } }
消費預覽
消費預覽也是一種日誌消費。Log Service控制台提供消費預覽功能,協助您通過控制台直接預覽Logstore中的部分日誌資料。
在Project列表地區,單擊目標Project。
在控制台左側,單擊日誌儲存,在日誌庫列表中單擊目標Logstore。
選擇目標Logstore右側的 。
在消費預覽頁面,選擇指定預覽的Shard與時間段,單擊預覽。
消費預覽頁面向您展示指定時間區間開始的10個資料包的日誌資料。