本文介紹如何通過Log Service控制台建立Logtail採集配置來採集指令碼執行日誌。
前提條件
已在伺服器上安裝Linux Logtail 1.7.1及以上版本。具體操作,請參見安裝Logtail(Linux系統)。
功能說明
Logtail通過配置的使用者,調用配置的指令碼命令,執行配置的指令碼內容,從而擷取指令碼執行日誌。
支援設定bash、shell、python2、python3四種指令碼命令。
支援設定運行命令使用的使用者,以實現指令碼可訪問的資源限制。
指令碼執行逾時的時候,系統自動停止指令碼執行,Logtail不會採集本次指令碼執行日誌。
操作步驟
在接入資料地區,選擇自訂資料外掛程式。
選擇目標Project和Logstore,單擊下一步。
建立機器組。
如果您已有可用的機器組,請單擊使用現有機器組。
如果您還沒有可用的機器組,請執行以下操作(以ECS為例)。
在ECS機器頁簽中,通過手動選擇執行個體方式選擇目標ECS執行個體,單擊建立。
具體操作,請參見安裝Logtail(ECS執行個體)。
重要如果您的伺服器是與Log Service屬於不同帳號的ECS、其他雲廠商的伺服器和自建IDC時,您需要手動安裝Logtail。具體操作,請參見安裝Logtail(Linux系統)或安裝Logtail(Windows系統)。手動安裝Logtail後,您必須在該伺服器上手動設定使用者標識。具體操作,請參見配置使用者標識。
安裝完成後,單擊確認安裝完畢。
在建立機器組頁面,輸入名稱,單擊下一步。
Log Service支援建立IP地址機器組和使用者自訂標識機器組,詳細參數說明請參見建立IP地址機器組和建立使用者自訂標識機器組。
選中目標機器組,將該機器組從源機器組移動到應用機器組,單擊下一步。
重要建立機器組後立刻應用,可能因為串連未生效,導致心跳為FAIL,您可單擊自動重試。如果還未解決,請參見Logtail機器組問題排查思路(主機情境)。
在資料來源設定頁簽中,設定配置名稱和外掛程式配置,然後單擊下一步。
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。
預覽資料及建立索引,然後單擊下一步。
Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。具體操作,請參見建立索引。
重要如果您要查詢和分析日誌,那麼全文索引和欄位索引必須至少啟用一種。同時啟用時,以欄位索引為準。
單擊查詢日誌,系統將跳轉至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值。
相關文檔
Log Service為Linux系統提供Logtail自動診斷工具,可以根據工具提示快速定位並解決問題。請參見如何使用Logtail自動診斷工具。
使用Logtail採集日誌後,如果預覽頁面為空白或查詢頁面無資料,請按照Logtail採集日誌失敗的排查思路進行排查。
在使用Logtail採集日誌時,可能遇到正則解析失敗、檔案路徑不正確、流量超過Shard服務能力等錯誤。查看Logtail採集錯誤的步驟,請參見如何查看Logtail採集錯誤資訊。採集資料常見的錯誤類型請參見Log Service採集資料常見的錯誤類型。
預設情況下,一個記錄檔只能匹配一個Logtail配置。如果同一份日誌需要被採集多份,請參見如何?檔案中的日誌被採集多份。
將企業內網伺服器日誌採集到Log Service,請參見採集企業內網伺服器日誌。
不同伺服器上的日誌的儲存路徑或檔案名稱相同,需要區分不同伺服器,請參見機器組Topic屬性。區分不同使用者或執行個體產生的日誌資料,請參見檔案路徑正則。