全部產品
Search
文件中心

Simple Log Service:使用Syslog協議上傳日誌

更新時間:Apr 09, 2025

您可以使用Syslog-ng採集日誌並通過Syslog協議上傳到Log Service。本文介紹通過Syslog協議將日誌上傳到Log Service的操作步驟。

相關限制

  • Syslog協議必須為標準的RFC5424協議。如果是其他Syslog協議, 推薦使用採集Linux系統Syslog

  • 每條日誌最大支援64 KB。

  • 為保證資料轉送安全性,資料轉送必須使用基於TCP的TLS1.2(Transport-level security)。

配置方式

重要

通常線下的VPN、路由器等裝置不支援TLS協議或配置RFC5424格式,建議使用Logtail的Syslog外掛程式採集這些裝置的資料。具體操作,請參見採集Linux系統Syslog

使用Syslog協議上傳日誌時,需配置日誌上傳地址,格式為Project名稱.Log ServiceEndpoint:Syslog協議連接埠,例如test-project-1.cn-hangzhou-intranet.log.aliyuncs.com:10009。請根據您的Log ServiceProject所在地區選擇Endpoint。更多資訊,請參見服務存取點。Syslog的連接埠為10009。同時您需要在STRUCTURED-DATA欄位中配置Log ServiceProject、Logstore,阿里雲帳號AccessKey等資訊。

參數

說明

樣本

STRUCTURED-DATA

固定為logservice。

logservice

Project

Log ServiceProject名稱,請提前在Log Service中建立Project。具體操作,請參見建立專案Project

test-project-1

Logstore

Log ServiceLogstore名稱,請提前在Log Service中建立Logstore。具體操作,請參見建立Logstore

test-logstore-1

access-key-id

AccessKey ID。建議使用RAM使用者的AccessKey。更多資訊,請參見授權

LTAI****************

access-key-secret

AccessKey Secret。建議使用RAM使用者的AccessKey。更多資訊,請參見授權

yourAccessKeySecret

樣本1:使用Syslog-ng採集日誌

syslog-ng是基於syslog協議的Unix和類Unix系統的開源軟體。您可以執行sudo yum install syslog-ngsudo apt-get install syslog-ng命令安裝Syslog-ng。

說明

Linux伺服器上預設安裝Rsyslog,但是Rsyslog和Syslog-ng無法同時工作,如果您要使用Syslog-ng請先卸載Rsyslog。

  1. 開啟Syslog-ng設定檔。

    通常Syslog-ng設定檔地址為/etc/syslog-ng/syslog-ng.conf

  2. 根據實際情況,配置如下資訊,並添加到Syslog-ng設定檔的末尾。

    ### Syslog-ng Logging Config for LogService ### 
    template LogServiceFormat { 
        template("<${PRI}>1 ${ISODATE} ${HOST:--} ${PROGRAM:--} ${PID:--} ${MSGID:--} [logservice project=\"test-project-1\" logstore=\"test-logstore-1\" access-key-id=\"<yourAccessKeyId>\" access-key-secret=\"<yourAccessKeySecret>\"] $MSG\n"); template_escape(no); 
    }; 
    destination d_logservice{ 
         tcp("test-project-1.cn-hangzhou.log.aliyuncs.com" port(10009) 
         tls(peer-verify(required-untrusted)) 
         template(LogServiceFormat)); 
    }; 
    log { 
         source(s_sys); # default use s_sys 
         destination(d_logservice); 
    }; 
    ### END Syslog-ng Logging Config for LogService ###
  3. 重啟Syslog-ng。

    執行sudo /etc/init.d/syslog-ng restartsudo service syslog-ng restartsudo systemctl restart syslog-ng命令重啟Syslog-ng。

  4. 使用logger命令產生測試日誌。

    例如執行logger hello world!命令組建記錄檔。

日誌範例

上傳日誌後,您需要先配置索引,然後才能在Log Service控制台中查看日誌。具體操作,請參見建立索引

日誌欄位說明,請參見RFC5424協議

重要

為避免泄露AccessKey資訊,Log Service預設刪除Logservice欄位。

日誌範例

欄位名

說明

__source__

原始日誌中的hostname欄位。

__topic__

固定為syslog-forwarder。

__facility__

facility(裝置、模組)資訊。

__program__

進程名。

__serverity__

日誌嚴重性。

__priority__

日誌優先順序。

__unixtimestamp__

原始日誌中的時間戳記(單位:納秒)。

content

原始日誌中的msg欄位。

常見問題與排查

  • 測試日誌上傳

    您可以使用Netcat測試日誌上傳,以檢查網路是否連通以及AccessKey是否具有上傳許可權。

    1. 登入要測試日誌上傳的伺服器。

    2. 執行以下命令安裝Netcat。

      sudo yum install nmap-ncat
    3. 執行以下命令串連Log Service。

      ncat --ssl <yourProject>.<yourEndpoint> 10009

      樣本命令:

      ncat --ssl test-project-1.cn-hangzhou.log.aliyuncs.com 10009
    4. Netcat不會自動判斷網路連接是否中斷,您需要在執行ncat命令後的30秒內,輸入要發送的日誌,然後按斷行符號鍵。

      <34>1 2019-03-28T03:00:15.003Z mymachine.example.com su - ID47 [logservice project="<yourProject>" logstore="<yourLogstore>" access-key-id="<yourAccessKeyID>" access-key-secret="<yourAccessKeySecret>"] this is a test message

      樣本命令:

      <34>1 2019-03-28T03:00:15.003Z mymachine.example.com su - ID47 [logservice project="trace-doc-test" logstore="doc-test-001-logs" access-key-id="<yourAccessKeyID>" access-key-secret="<yourAccessKeySecret>"] this is a test message
    5. 在Log Service控制台預覽日誌,驗證日誌是否上傳成功。

      具體操作,請參見日誌預覽

      ncat_output

  • 診斷採集錯誤

    如果手動上傳日誌失敗,您可通過診斷採集錯誤查看具體報錯資訊。更多資訊,請參見如何查看Logtail採集錯誤資訊