全部產品
Search
文件中心

Simple Log Service:採集指令碼執行日誌

更新時間:Jun 30, 2024

本文介紹如何通過Log Service控制台建立Logtail採集配置來採集指令碼執行日誌。

前提條件

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

功能說明

Logtail通過配置的使用者,調用配置的指令碼命令,執行配置的指令碼內容,從而擷取指令碼執行日誌。

  • 支援設定bash、shell、python2、python3四種指令碼命令。

  • 支援設定運行命令使用的使用者,以實現指令碼可訪問的資源限制。

  • 指令碼執行逾時的時候,系統自動停止指令碼執行,Logtail不會採集本次指令碼執行日誌。

操作步驟

  1. 登入Log Service控制台

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

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

  4. 建立機器組。

    • 如果您已有可用的機器組,請單擊使用現有機器組

    • 如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。

      1. ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立

        具體操作,請參見安裝Logtail(ECS執行個體)

        重要

        如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識

      2. 安裝完成後,單擊確認安裝完畢

      3. 建立機器組頁面,輸入名稱,單擊下一步

        Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組建立使用者自訂標識機器組

  5. 選中目標機器組,將該機器組從源機器組移動到應用機器組,單擊下一步

    重要

    建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組問題排查思路(主機情境)

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

    • inputs為Logtail採集配置,必選項,請根據您的資料來源配置。

      重要

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

    • processors為Logtail處理配置,可選項。您可以配置一種或多種處理方式。

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

    {
        "inputs":[
            {
                "type":"input_command",
                "detail":{
                    "ScriptType":"python2",
                    "User":"test",
                    "ScriptContent":"print(\"test input_command 0\")\nprint(\"test input_command 1\")\nprint(\"test input_command 2\")\nprint(\"test input_command 3\")\nprint(\"test input_command 4\")\nprint(\"test input_command 5\")\nprint(\"test input_command 6\")\nprint(\"test input_command 7\")\nprint(\"test input_command 8\")\nprint(\"test input_command 9\")\n",
                    "ContentEncoding":"PlainText",
                    "CmdPath":"/usr/bin/python",
                    "TimeoutMilliSeconds":1000,
                    "IgnoreError":false,
                    "Environments":[
                        "DEBUG=true"
                    ],
                    "IntervalMs":5000
                }
            }
        ]
    }

    參數

    類型

    是否必選

    說明

    type

    string

    資料來源類型,固定為input_command

    ScriptType

    string

    指定指令碼內容的類型,目前支援bash、shell、python2、python3。

    User

    string

    運行命令使用的使用者名稱,只支援非Root使用者。

    說明
    • 請確保指定的使用者名稱在機器中存在。

    • 建議配置最小許可權,只授予需要關注的目錄或檔案rwx許可權 。

    ScriptContent

    string

    指令碼內容,支援PlainText和Base64加密的內容,長度在512*1024位元組內。

    ContentEncoding

    string

    指令碼內容的文字格式設定,可選值。

    • PlainText(預設值):純文字,不編碼。

    • Base64:Base64編碼。

    LineSplitSep

    string

    指令碼輸出內容的分隔字元,為空白時不進行分割,全部作為一條資料返回。

    CmdPath

    string

    執行指令碼命令的路徑,如果為空白,則使用預設路徑。預設路徑如下:

    • bash:/usr/bin/bash

    • shell:/usr/bin/sh

    • python2:/usr/bin/python2

    • python3:/usr/bin/python3

    TimeoutMilliSeconds

    string

    執行指令碼的逾時時間,單位為毫秒,預設值為3000。

    IgnoreError

    Bool

    外掛程式執行出錯時是否輸出Error日誌。預設值為false,表示不忽略。

    Environments

    []string

    環境變數,預設為os.Environ()的值,如果設定了Environments,則在os.Environ()的基礎上追加設定的環境變數。

    IntervalMs

    int

    採集觸發頻率或指令碼執行頻率。單位為毫秒,預設值為5000。

  7. 預覽資料及建立索引,然後單擊下一步

    Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。具體操作,請參見建立索引

    重要

    如果您要查詢和分析日誌,那麼全文索引和欄位索引必須至少啟用一種。同時啟用時,以欄位索引為準。

  8. 單擊查詢日誌,系統將跳轉至Logstore查詢分析頁面。

    您需要等待1分鐘左右,待索引生效後,才能在原始日誌頁簽中,查看已採集到的日誌。具體操作,請參見查詢和分析日誌

使用樣本

通過python2指令碼擷取系統時間。

  • Logtail採集配置

    {
        "inputs":[
            {
                "type":"input_command",
                "detail":{
                    "ScriptType":"python2",
                    "User":"test",
                    "ScriptContent":"print(\"test input_command 0\")\nprint(\"test input_command 1\")\nprint(\"test input_command 2\")\nprint(\"test input_command 3\")\nprint(\"test input_command 4\")\nprint(\"test input_command 5\")\nprint(\"test input_command 6\")\nprint(\"test input_command 7\")\nprint(\"test input_command 8\")\nprint(\"test input_command 9\")\n",
                    "ContentEncoding":"PlainText",
                    "CmdPath":"/usr/bin/python",
                    "TimeoutMilliSeconds":1000,
                    "IgnoreError":false,
                    "Environments":[
                        "DEBUG=true"
                    ],
                    "IntervalMs":5000
                }
            }
        ]
    }
  • 採集到的日誌

    content:"Mon Aug  7 02:17:52 UTC 2023"
    script_md5:"a9564ebc3289b7a14551baf8ad5ec60a"
    __pack_meta__:"1|MTY4OTI1MzExNTU2NTE2MzQ1NA==|2|1"
    __topic__:""
    __source__:"172.17.0.2"
    __tag__:__pack_id__:"D7B7F988051A3019-0"
    __tag__:__hostname__:"bc6c7472f257"
    __tag__:__client_ip__:"8.218.101.91"
    __tag__:__receive_time__:"1691374673"
    __time__:"1691374672"
  • 欄位說明

    欄位

    說明

    content

    採集到的指令碼執行日誌。

    script_md5

    指令碼內容的MD5值。

相關文檔