采集腳本執(zhí)行日志
本文介紹如何通過(guò)日志服務(wù)控制臺(tái)創(chuàng)建Logtail采集配置來(lái)采集腳本執(zhí)行日志。
前提條件
已在服務(wù)器上安裝Linux Logtail 1.7.1及以上版本。具體操作,請(qǐng)參見安裝Logtail(Linux系統(tǒng))。
功能說(shuō)明
Logtail通過(guò)配置的用戶,調(diào)用配置的腳本命令,執(zhí)行配置的腳本內(nèi)容,從而獲取腳本執(zhí)行日志。
支持設(shè)置bash、shell、python2、python3四種腳本命令。
支持設(shè)置運(yùn)行命令使用的用戶,以實(shí)現(xiàn)腳本可訪問(wèn)的資源限制。
腳本執(zhí)行超時(shí)的時(shí)候,系統(tǒng)自動(dòng)停止腳本執(zhí)行,Logtail不會(huì)采集本次腳本執(zhí)行日志。
操作步驟
在接入數(shù)據(jù)區(qū)域,選擇自定義數(shù)據(jù)插件。
選擇目標(biāo)Project和Logstore,單擊下一步。
創(chuàng)建機(jī)器組。
如果您已有可用的機(jī)器組,請(qǐng)單擊使用現(xiàn)有機(jī)器組。
如果您還沒(méi)有可用的機(jī)器組,請(qǐng)執(zhí)行以下操作(以ECS為例)。
在ECS機(jī)器頁(yè)簽中,通過(guò)手動(dòng)選擇實(shí)例方式選擇目標(biāo)ECS實(shí)例,單擊創(chuàng)建。
具體操作,請(qǐng)參見安裝Logtail(ECS實(shí)例)。
重要如果您的服務(wù)器是與日志服務(wù)屬于不同賬號(hào)的ECS、其他云廠商的服務(wù)器和自建IDC時(shí),您需要手動(dòng)安裝Logtail。具體操作,請(qǐng)參見安裝Logtail(Linux系統(tǒng))或安裝Logtail(Windows系統(tǒng))。手動(dòng)安裝Logtail后,您必須在該服務(wù)器上手動(dòng)配置用戶標(biāo)識(shí)。具體操作,請(qǐng)參見配置用戶標(biāo)識(shí)。
安裝完成后,單擊確認(rèn)安裝完畢。
在創(chuàng)建機(jī)器組頁(yè)面,輸入名稱,單擊下一步。
日志服務(wù)支持創(chuàng)建IP地址機(jī)器組和用戶自定義標(biāo)識(shí)機(jī)器組,詳細(xì)參數(shù)說(shuō)明請(qǐng)參見創(chuàng)建IP地址機(jī)器組和創(chuàng)建用戶自定義標(biāo)識(shí)機(jī)器組。
選中目標(biāo)機(jī)器組,將該機(jī)器組從源機(jī)器組移動(dòng)到應(yīng)用機(jī)器組,單擊下一步。
重要創(chuàng)建機(jī)器組后立刻應(yīng)用,可能因?yàn)檫B接未生效,導(dǎo)致心跳為FAIL,您可單擊自動(dòng)重試。如果還未解決,請(qǐng)參見Logtail機(jī)器組問(wèn)題排查思路(主機(jī)場(chǎng)景)。
在數(shù)據(jù)源設(shè)置頁(yè)簽中,設(shè)置配置名稱和插件配置,然后單擊下一步。
inputs
為L(zhǎng)ogtail采集配置,必選項(xiàng),請(qǐng)根據(jù)您的數(shù)據(jù)源配置。重要一個(gè)
inputs
中只允許配置一個(gè)類型的數(shù)據(jù)源。processors
為L(zhǎng)ogtail處理配置,可選項(xiàng)。您可以配置一種或多種處理方式。如果當(dāng)前的
inputs
配置無(wú)法滿足日志解析需求,您可以在插件配置中添加processors配置,即添加Logtail插件處理數(shù)據(jù)。例如提取字段、提取日志時(shí)間、脫敏數(shù)據(jù)、過(guò)濾日志等。更多信息,請(qǐng)參見概述。
{ "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 } } ] }
參數(shù)
類型
是否必選
說(shuō)明
type
string
是
數(shù)據(jù)源類型,固定為
input_command
。ScriptType
string
是
指定腳本內(nèi)容的類型,目前支持bash、shell、python2、python3。
User
string
是
運(yùn)行命令使用的用戶名,只支持非Root用戶。
說(shuō)明請(qǐng)確保指定的用戶名在機(jī)器中存在。
建議配置最小權(quán)限,只授予需要關(guān)注的目錄或文件rwx權(quán)限 。
ScriptContent
string
是
腳本內(nèi)容,支持PlainText和Base64加密的內(nèi)容,長(zhǎng)度在512*1024字節(jié)內(nèi)。
ContentEncoding
string
否
腳本內(nèi)容的文本格式,可選值。
PlainText(默認(rèn)值):純文本,不編碼。
Base64:Base64編碼。
LineSplitSep
string
否
腳本輸出內(nèi)容的分隔符,為空時(shí)不進(jìn)行分割,全部作為一條數(shù)據(jù)返回。
CmdPath
string
否
執(zhí)行腳本命令的路徑,如果為空,則使用默認(rèn)路徑。默認(rèn)路徑如下:
bash:/usr/bin/bash
shell:/usr/bin/sh
python2:/usr/bin/python2
python3:/usr/bin/python3
TimeoutMilliSeconds
string
否
執(zhí)行腳本的超時(shí)時(shí)間,單位為毫秒,默認(rèn)值為3000。
IgnoreError
Bool
否
插件執(zhí)行出錯(cuò)時(shí)是否輸出Error日志。默認(rèn)值為false,表示不忽略。
Environments
[]string
否
環(huán)境變量,默認(rèn)為os.Environ()的值,如果設(shè)置了Environments,則在os.Environ()的基礎(chǔ)上追加設(shè)置的環(huán)境變量。
IntervalMs
int
是
采集觸發(fā)頻率或腳本執(zhí)行頻率。單位為毫秒,默認(rèn)值為5000。
預(yù)覽數(shù)據(jù)及創(chuàng)建索引,然后單擊下一步。
日志服務(wù)默認(rèn)開啟全文索引。您也可以根據(jù)采集到的日志,手動(dòng)創(chuàng)建字段索引,或者單擊自動(dòng)生成索引,日志服務(wù)將自動(dòng)生成字段索引。具體操作,請(qǐng)參見創(chuàng)建索引。
重要如果您要查詢和分析日志,那么全文索引和字段索引必須至少啟用一種。同時(shí)啟用時(shí),以字段索引為準(zhǔn)。
單擊查詢?nèi)罩?/b>,系統(tǒng)將跳轉(zhuǎn)至Logstore查詢分析頁(yè)面。
您需要等待1分鐘左右,待索引生效后,才能在原始日志頁(yè)簽中,查看已采集到的日志。具體操作,請(qǐng)參見查詢和分析日志。
使用示例
通過(guò)python2腳本獲取系統(tǒng)時(shí)間。
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"
字段說(shuō)明
字段
說(shuō)明
content
采集到的腳本執(zhí)行日志。
script_md5
腳本內(nèi)容的MD5值。
問(wèn)題排查
使用Logtail采集日志后,如果預(yù)覽頁(yè)面或查詢頁(yè)面無(wú)數(shù)據(jù),您可以參見Logtail采集日志失敗的排查思路進(jìn)行排查。