全部產品
Search
文件中心

Simple Log Service:採集PostgreSQL查詢結果

更新時間:Jul 11, 2024

本文介紹如何通過Log Service控制台建立Logtail採集配置來採集PostgreSQL查詢結果。

前提條件

  • 已在伺服器上安裝Linux Logtail 0.16.0及以上版本或Windows Logtail 1.0.0.8及以上版本。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)

    重要

    請確保用於安裝Logtail的伺服器可串連目標資料庫。

  • 在PostgreSQL資料庫中,設定白名單為Logtail所在伺服器的IP地址。

    例如RDS PostgreSQL資料庫的白名單設定,請參見設定白名單

原理

Logtail根據Logtail採集配置定期執行指定的SELECT語句,將查詢結果作為資料上傳到Log Service。

Logtail擷取到查詢結果時,會將結果中的CheckPoint欄位儲存到本地。當下次執行SELECT語句時,會將上一次儲存的CheckPoint帶入到SELECT語句中,以此實現增量資料擷取。

重要

開啟CheckPoint時,需要在SELECT語句中對CheckPoint欄位進行排序,否則會造成資料重複或其他問題。

功能

  • 支援採集PostgreSQL資料庫的查詢結果。

  • 支援分頁設定。

  • 支援時區設定。

  • 支援逾時設定。

  • 支援儲存CheckPoint狀態。

  • 支援限制每次最大採集數量。

應用情境

  • 根據資料中的自增ID或時間等標識採集增量資料。

  • 根據篩選條件自訂同步。

操作步驟

  1. 登入Log Service控制台

  2. 接入資料地區,選擇自訂資料外掛程式

  3. 選擇目標Project和Logstore,單擊下一步

  4. 機器組配置頁面,配置機器組。

    1. 根據實際需求,選擇使用情境和安裝環境。

      重要

      無論是否已有機器組,都必鬚根據實際需求正確選擇使用情境和安裝環境,這將影響後續的頁面配置。

    2. 確認目標機器組已在應用機器組地區,單擊下一步

      已有機器組

      源機器組列表選擇目標機器組。

      image

      沒有可用機器組

      單擊建立機器組,在建立機器組面板設定相關參數。機器組標識分為IP地址使用者自訂標識,更多資訊請參見建立使用者自訂標識機器組(推薦)建立IP地址機器組

      重要

      建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊重試。如果還未解決,請參見Logtail機器組無心跳進行排查。

  5. 資料來源設定頁簽中,設定配置名稱外掛程式配置,單擊下一步

    • inputs為資料來源配置,必選項。

      重要

      一個inputs中只允許配置一個類型的資料來源。

    • processors為處理配置,用於解析資料。可選項,您可以配置一種或多種處理方式。

      如果當前的inputs配置無法滿足日誌解析需求,您可以在外掛程式配置中添加processors配置,即添加Logtail外掛程式處理資料。例如提取欄位、提取日誌時間、脫敏資料、過濾日誌等。更多資訊,請參見使用Logtail外掛程式處理資料

    {
      "inputs": [
        {
          "type": "service_pgsql",
          "detail": {
            "Address": "pgm-****.pg.rds.aliyuncs.com",
            "User": "****",
            "Password": "*******",
            "DataBase": "****",
            "Limit": true,
            "PageSize": 100,
            "StateMent": "select * from specialalarmtest where id > $1 order by id",
            "CheckPoint": true,
            "CheckPointColumn": "id",
            "CheckPointStart": "0",
            "CheckPointSavePerPage": true,
            "CheckPointColumnType": "int",
            "IntervalMs": 1000
          }
        }
      ]
    }

    參數

    類型

    是否必選

    說明

    type

    string

    資料來源類型,固定為service_pgsql

    Address

    string

    PostgreSQL地址。例如pgm-****.pg.rds.aliyuncs.com

    不配置時,預設使用127.0.0.1:5432

    User

    string

    用於登入PostgreSQL資料庫的帳號名稱。

    不配置時,預設使用root

    Password

    string

    用於登入PostgreSQL資料庫的帳號密碼。不配置時,預設為空白。

    如果安全需求較高,建議將使用者名稱和密碼配置為xxx,待採集配置同步至本地機器後,在本地檔案/usr/local/ilogtail/user_log_config.json找到對應配置進行修改。具體操作,請參見修改本地配置

    重要

    如果您在控制台上修改了此參數,同步至本地後會覆蓋當前本地的配置。

    DataBase

    string

    PostgreSQL資料庫名稱。

    DialTimeOutMs

    int

    串連PostgreSQL資料庫逾時時間,單位:ms。

    不配置時,預設使用5000 ms。

    ReadTimeOutMs

    int

    讀取PostgreSQL查詢結果的逾時時間,單位:ms。

    不配置時,預設使用5000 ms。

    StateMent

    string

    SELECT語句。

    設定CheckPointtrue時,StateMent中SELECT語句的where條件中必須包含CheckPoint列(CheckPointColumn參數),並將該列的值設定為$1。例如:設定CheckPointColumnid,設定StateMentSELECT * from ... where id > $1

    Limit

    boolean

    是否使用Limit分頁。

    不配置時,預設使用false,表示不使用Limit分頁。

    建議使用Limit進行分頁。設定Limittrue後,進行SQL查詢時,會自動在StateMent中追加LIMIT語句。

    PageSize

    int

    分頁大小,Limittrue時必須配置。

    MaxSyncSize

    int

    每次同步最大記錄數。

    不配置時,預設使用0,表示無限制。

    CheckPoint

    boolean

    是否使用CheckPoint。

    不配置時,預設使用false,表示不使用CheckPoint。

    CheckPointColumn

    string

    CheckPoint列名稱。

    CheckPointtrue時必須配置。

    警告

    該列的值必須遞增,否則可能會出現資料漏採集問題(每次查詢結果中的最大值將作為下次查詢的輸入)。

    CheckPointColumnType

    string

    CheckPoint列的資料類型,支援int和time。int類型的內部儲存為int64,time類型支援PostgreSQL的時間類型。

    CheckPointtrue時必須配置。

    CheckPointStart

    string

    CheckPoint列的初始值。

    CheckPointtrue時必須配置。

    CheckPointSavePerPage

    boolean

    是否每次分頁時儲存一次CheckPoint。

    • true:每次分頁時儲存一次CheckPoint。

    • false:每次同步完成後儲存一次CheckPoint。

    IntervalMs

    int

    同步間隔,單位:ms。

  6. 建立索引預覽資料,然後單擊下一步。Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引

    重要

    如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。

  7. 單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。更多資訊,請參見查詢和分析日誌

修改本地配置

如果您沒有在外掛程式配置中輸入真實的Address、User、Password等資訊,可以在採集配置下發到本地後進行手動修改。

Linux系統

  1. 登入Logtail所在伺服器。

  2. 開啟/usr/local/ilogtail/user_log_config.json檔案,找到service_pgsql關鍵字,修改AddressUserPassword等欄位。

  3. 執行以下命令重啟Logtail。

    sudo /etc/init.d/ilogtaild stop; sudo /etc/init.d/ilogtaild start

Windows系統

  1. 登入Logtail所在伺服器。

  2. 開啟C:\Program Files\Alibaba\Logtail\user_log_config.json檔案,找到service_pgsql關鍵字,修改AddressUserPassword等欄位。

    Windows 64位作業系統和Windows 32位作業系統檔案位置不同,具體請參見檔案路徑

  3. 執行以下命令重啟Logtail。

    1. 選擇開始 > 控制台 > 管理工具 > 服務

    2. 服務對話方塊中,選擇對應的服務。

      • 如果是0.x.x.x版本,選擇LogtailWorker服務。

      • 如果是1.0.0.0及以上版本,選擇LogtailDaemon服務。

    3. 右鍵選擇對應的操作,包括啟動停止重新啟動

相關文檔

資料庫表和日誌範例

PostgreSQL資料庫表結構範例和Logtail採集到的日誌範例如下所示。

  • 表結構範例

    //建立表。
    CREATE TABLE IF NOT EXISTS specialalarmtest (
        id BIGSERIAL NOT NULL,
        time TIMESTAMP NOT NULL,
        alarmtype varchar(64) NOT NULL,
        ip varchar(16) NOT NULL,
        COUNT INT NOT NULL,
        PRIMARY KEY (id)
    );
    
    //插入資料。
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 0);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 1);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 2);
    insert into specialalarmtest (time, alarmtype, ip, count) values(now(), 'NO_ALARM', '10.10.***.***', 3);
                            
  • 日誌範例 日誌範例