采集脚本执行日志

本文介绍如何通过日志服务控制台创建Logtail采集配置来采集脚本执行日志。

前提条件

已在服务器上安装Linux Logtail 1.7.1及以上版本。具体操作,请参见安装Logtail(Linux系统)

功能说明

Logtail通过配置的用户,调用配置的脚本命令,执行配置的脚本内容,从而获取脚本执行日志。

  • 支持设置bash、shell、python2、python3四种脚本命令。

  • 支持设置运行命令使用的用户,以实现脚本可访问的资源限制。

  • 脚本执行超时的时候,系统自动停止脚本执行,Logtail不会采集本次脚本执行日志。

操作步骤

  1. 登录日志服务控制台

  2. 接入数据区域,选择自定义数据插件

  3. 选择目标Project和Logstore,单击下一步

  4. 创建机器组。

    • 如果您已有可用的机器组,请单击使用现有机器组

    • 如果您还没有可用的机器组,请执行以下操作(以ECS为例)。

      1. ECS机器页签中,通过手动选择实例方式选择目标ECS实例,单击创建

        具体操作,请参见安装Logtail(ECS实例)

        重要

        如果您的服务器是与日志服务属于不同账号的ECS、其他云厂商的服务器和自建IDC时,您需要手动安装Logtail。具体操作,请参见安装Logtail(Linux系统)安装Logtail(Windows系统)。手动安装Logtail后,您必须在该服务器上手动配置用户标识。具体操作,请参见配置用户标识

      2. 安装完成后,单击确认安装完毕

      3. 创建机器组页面,输入名称,单击下一步

        日志服务支持创建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. 预览数据及创建索引,然后单击下一步

    日志服务默认开启全文索引。您也可以根据采集到的日志,手动创建字段索引,或者单击自动生成索引,日志服务将自动生成字段索引。具体操作,请参见创建索引

    重要

    如果您要查询和分析日志,那么全文索引和字段索引必须至少启用一种。同时启用时,以字段索引为准。

  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值。

问题排查

使用Logtail采集日志后,如果预览页面或查询页面无数据,您可以参见Logtail采集日志失败的排查思路进行排查。