config

package
v1.5.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 18, 2020 License: Apache-2.0 Imports: 3 Imported by: 48

Documentation

Index

Constants

View Source
const (
	HideOptions  = "隐藏选项"
	NotBatch     = "不使用"
	BatchByTime  = "递增的时间列"
	BatchByOther = "递增的其他列"
)
View Source
const (
	// General
	KeyAuthUsername = "auth_username"
	KeyAuthPassword = "auth_password"

	KeyLogPath           = "log_path"
	KeyLogPathOld        = "log_path_old"
	KeyMetaPath          = "meta_path"
	KeyFileDone          = "file_done"
	KeyMode              = "mode"
	KeyBufSize           = "reader_buf_size"
	KeyWhence            = "read_from"
	KeyEncoding          = "encoding"
	KeyMysqlEncoding     = "encoding"
	KeyReadIOLimit       = "readio_limit"
	KeyDataSourceTag     = "datasource_tag"
	KeyEncodeTag         = "encode_tag"
	KeyTagFile           = "tag_file"
	KeyHeadPattern       = "head_pattern"
	KeyNewFileNewLine    = "newfile_newline"
	KeySkipFileFirstLine = "skip_first_line"
	KeyReadSameInode     = "read_same_inode"
	KeyInodeSensitive    = "inode_sensitive"

	// 忽略文件路径
	KeyIgnoreLogPath = "ignore_log_path"

	// 忽略隐藏文件
	KeyIgnoreHiddenFile = "ignore_hidden"
	KeyIgnoreFileSuffix = "ignore_file_suffix"
	KeyValidFilePattern = "valid_file_pattern"

	KeyExpire        = "expire"
	KeyExpireDelete  = "expire_delete"
	KeySubmetaExpire = "submeta_expire"
	KeyMaxOpenFiles  = "max_open_files"
	KeyStatInterval  = "stat_interval"
	KeyRunTime       = "run_time"

	KeyMysqlDataSource  = "mysql_datasource"
	KeyMysqlDataBase    = "mysql_database"
	KeyMysqlSQL         = "mysql_sql"
	KeyMysqlCron        = "mysql_cron"
	KeyMysqlExecOnStart = "mysql_exec_onstart"
	KeyMysqlHistoryAll  = "mysql_history_all"
	KeyMysqlTable       = "mysql_table"
	KeyMysqlParam       = "mysql_param"

	KeyMysqlFullQuery  = "mysql_fullQuery"
	KeyMysqlNeedOffset = "mysql_need_offset"
	KeyMysqlCalcTotal  = "mysql_calc_total"

	//递增的时间列相关
	KeyMysqlTimestampKey  = "mysql_timestamp_key"
	KeyMysqlStartTime     = "mysql_start_time"
	KeyMysqlTimestampInt  = "mysql_timestamp_int"
	KeyMysqlBatchDuration = "mysql_batch_intervel"

	//递增列(非时间)相关
	KeyMysqlOffsetKey = "mysql_offset_key"
	KeyMysqlReadBatch = "mysql_limit_batch"

	KeySQLSchema        = "sql_schema"
	KeyMagicLagDuration = "magic_lag_duration"

	KeyMssqlOffsetKey   = "mssql_offset_key"
	KeyMssqlReadBatch   = "mssql_limit_batch"
	KeyMssqlDataSource  = "mssql_datasource"
	KeyMssqlDataBase    = "mssql_database"
	KeyMssqlSchema      = "mssql_schema"
	KeyMssqlSQL         = "mssql_sql"
	KeyMssqlCron        = "mssql_cron"
	KeyMssqlExecOnStart = "mssql_exec_onstart"

	KeyPGsqlOffsetKey   = "postgres_offset_key"
	KeyPGtimestampKey   = "postgres_timestamp_key"
	KeyPGStartTime      = "postgres_start_time"
	KeyPGBatchDuration  = "postgres_batch_intervel"
	KeyPGtimestampInt   = "postgres_timestamp_int"
	KeyPGsqlReadBatch   = "postgres_limit_batch"
	KeyPGsqlDataSource  = "postgres_datasource"
	KeyPGsqlDataBase    = "postgres_database"
	KeyPGsqlSchema      = "postgres_schema"
	KeyPGsqlSQL         = "postgres_sql"
	KeyPGsqlCron        = "postgres_cron"
	KeyPGsqlExecOnStart = "postgres_exec_onstart"

	KeyESReadBatch   = "es_limit_batch"
	KeyESIndex       = "es_index"
	KeyESType        = "es_type"
	KeyESHost        = "es_host"
	KeyESKeepAlive   = "es_keepalive"
	KeyESVersion     = "es_version"
	KeyESCron        = "es_cron"
	KeyESExecOnstart = "es_exec_onstart"
	KeyESCronOffset  = "es_cron_offset"
	KeyESDateShift   = "es_date_shift"
	KeyESDateOffset  = "es_date_offset"

	KeyMongoHost        = "mongo_host"
	KeyMongoDatabase    = "mongo_database"
	KeyMongoCollection  = "mongo_collection"
	KeyMongoOffsetKey   = "mongo_offset_key"
	KeyMongoReadBatch   = "mongo_limit_batch"
	KeyMongoCron        = "mongo_cron"
	KeyMongoExecOnstart = "mongo_exec_onstart"
	KeyMongoFilters     = "mongo_filters"
	KeyMongoCert        = "mongo_cacert"
	KeyMongoTimeout     = "mongo_timeout"

	KeyKafkaGroupID          = "kafka_groupid"
	KeyKafkaTopic            = "kafka_topic"
	KeyKafkaZookeeper        = "kafka_zookeeper"
	KeyKafkaZookeeperChroot  = "kafka_zookeeper_chroot"
	KeyKafkaZookeeperTimeout = "kafka_zookeeper_timeout"
	KeyKafkaMaxProcessTime   = "kafka_maxprocessing_time"

	KeyScriptParams        = "script_params"
	KeyScriptParamsSpliter = "script_params_spliter"
	KeyScriptContent       = "script_content"
	KeyExecInterpreter     = "script_exec_interprepter"
	KeyScriptCron          = "script_cron"
	KeyScriptExecOnStart   = "script_exec_onstart"

	KeyErrDirectReturn = "errDirectReturn"

	KeyHttpExecOnStart     = "http_exec_onstart"
	KeyHttpCron            = "http_cron"
	KeyHttpMethod          = "http_method"
	KeyHttpHeaders         = "http_headers"
	KeyHttpPageSize        = "http_page_size"
	KeyHttpPageNo          = "http_page_no"
	KeyHttpBody            = "http_body"
	KeyHttpDialTimeout     = "http_dial_timeout"
	KeyHttpResponseTimeout = "http_response_timeout"
)

FileReader's conf keys

View Source
const (
	KeyS3Region          = "s3_region"
	KeyS3Endpoint        = "s3_endpoint"
	KeyS3AccessKey       = "s3_access_key"
	KeyS3SecretKey       = "s3_secret_key"
	KeyS3Bucket          = "s3_bucket"
	KeyS3Prefix          = "s3_prefix"
	KeyS3DatePrefix      = "s3_date_prefix"
	KeyS3PrefixDelimiter = "s3_prefix_delimiter"

	KeySyncDirectory  = "sync_directory"
	KeySyncMetastore  = "sync_metastore"
	KeySyncInterval   = "sync_interval"
	KeySyncConcurrent = "sync_concurrent"
	KeySyncRangeLeft  = "sync_range_left"
)

Constants for cloudtrail

View Source
const (
	KeyRegion = "region"

	/*
		认证顺序:
		1. role_arn
		2. ak,sk
		3. profile
		4. 环境变量
		5. shared_credential_file
		6. EC2 instance profile
	*/
	KeyRoleArn              = "role_arn"
	KeyAWSAccessKey         = "aws_access_key"
	KeyAWSSecretKey         = "aws_secret_key"
	KeyAWSToken             = "aws_token"
	KeyAWSProfile           = "aws_profile"
	KeySharedCredentialFile = "shared_credential_file"
	KeyCollectInterval      = "interval"
	KeyNamespace            = "namespace"
	KeyRateLimit            = "ratelimit"
	KeyMetrics              = "metrics"
	KeyDimension            = "dimensions"
	KeyCacheTTL             = "cache_ttl"
	KeyPeriod               = "period"
	KeyDelay                = "delay"
)

Constants for cloudwatch

View Source
const (
	ElasticVersion3 = "3.x"
	ElasticVersion5 = "5.x"
	ElasticVersion6 = "6.x"
)

Constants for Elastic

View Source
const (
	KeyHTTPServiceAddress = "http_service_address"
	KeyHTTPServicePath    = "http_service_path"

	DefaultHTTPServiceAddress = ":4000"
	DefaultHTTPServicePath    = "/logkit/data"
)

Constants for HTTP

View Source
const (
	DataTypeHash          = "hash"
	DataTypeSortedSet     = "zset"
	DataTypeSet           = "set"
	DataTypeString        = "string"
	DataTypeList          = "list"
	DataTypeChannel       = "channel"
	DataTypePatterChannel = "pattern_channel"

	KeyRedisDataType   = "redis_datatype" // 必填
	KeyRedisDB         = "redis_db"       //默认 是0
	KeyRedisKey        = "redis_key"      //必填
	KeyRedisHashArea   = "redisHash_area"
	KeyRedisAddress    = "redis_address" // 默认127.0.0.1:6379
	KeyRedisPassword   = "redis_password"
	KeyTimeoutDuration = "redis_timeout"
)

Constants for Redis

View Source
const (
	SocketRulePacket      = "按原始包读取"
	SocketRuleJson        = "按json格式读取"
	SocketRuleLine        = "按换行符读取"
	SocketRuleHeadPattern = "按行首正则读取"
)
View Source
const (
	KeySnmpReaderAgents    = "snmp_agents"
	KeySnmpTableInitHost   = "snmp_table_init_host"
	KeySnmpReaderTimeOut   = "snmp_time_out"
	KeySnmpReaderInterval  = "snmp_interval"
	KeySnmpReaderRetries   = "snmp_retries"
	KeySnmpReaderVersion   = "snmp_version"
	KeySnmpReaderCommunity = "snmp_community"

	KeySnmpReaderMaxRepetitions = "snmp_max_repetitions"

	KeySnmpReaderContextName           = "snmp_context_name"
	KeySnmpReaderSecLevel              = "snmp_sec_level"
	KeySnmpReaderSecName               = "snmp_sec_name"
	KeySnmpReaderAuthProtocol          = "snmp_auth_protocol"
	KeySnmpReaderAuthPassword          = "snmp_auth_password"
	KeySnmpReaderPrivProtocol          = "snmp_priv_protocol"
	KeySnmpReaderPrivPassword          = "snmp_priv_password"
	KeySnmpReaderEngineID              = "snmp_engine_id"
	KeySnmpReaderEngineBoots           = "snmp_engine_boots"
	KeySnmpReaderEngineTime            = "snmp_engine_time"
	KeySnmpReaderTables                = "snmp_tables"
	KeySnmpReaderName                  = "snmp_reader_name"
	KeySnmpReaderFields                = "snmp_fields"
	SnmpReaderAuthProtocolMd5          = "MD5"
	SnmpReaderAuthProtocolSha          = "SHA"
	SnmpReaderAuthProtocolNoAuth       = "NoAuth"
	SnmpReaderAuthProtocolDes          = "DES"
	SnmpReaderAuthProtocolAes          = "AES"
	SnmpReaderAuthProtocolNoPriv       = "NoPriv"
	SnmpReaderAuthProtocolNoAuthNoPriv = "noAuthNoPriv"
	SnmpReaderAuthProtocolAuthNoPriv   = "authNoPriv"
	SnmpReaderAuthProtocolAuthPriv     = "authPriv"

	KeySnmpTableName = "snmp_table"
	KeyTimestamp     = "timestamp"
)

Constants for SNMP

View Source
const (
	// 监听的url形式包括:
	// socket_service_address = "tcp://:3110"
	// socket_service_address = "tcp://127.0.0.1:http"
	// socket_service_address = "tcp4://:3110"
	// socket_service_address = "tcp6://:3110"
	// socket_service_address = "tcp6://[2001:db8::1]:3110"
	// socket_service_address = "udp://:3110"
	// socket_service_address = "udp4://:3110"
	// socket_service_address = "udp6://:3110"
	// socket_service_address = "unix:///tmp/sys.sock"
	// socket_service_address = "unixgram:///tmp/sys.sock"
	KeySocketServiceAddress  = "socket_service_address"
	KeySocketSplitByLine     = "socket_split_by_line"
	KeySocketRule            = "socket_rule"
	KeySocketRuleHeadPattern = "head_pattern"

	// 最大并发连接数
	// 仅用于 stream sockets (e.g. TCP).
	// 0 (default) 为无限制.
	// socket_max_connections = 1024
	KeySocketMaxConnections = "socket_max_connections"

	// 读的超时时间
	// 仅用于 stream sockets (e.g. TCP).
	// 0 (default) 为没有超时
	// socket_read_timeout = "30s"
	KeySocketReadTimeout = "socket_read_timeout"

	// Socket的Buffer大小,默认65535
	// socket_read_buffer_size = 65535
	KeySocketReadBufferSize = "socket_read_buffer_size"

	// TCP连接的keep_alive时长
	// 0 表示关闭keep_alive
	// 默认5分钟
	KeySocketKeepAlivePeriod = "socket_keep_alive_period"
)

Constants for Socket

View Source
const (
	ModeExtract      = "extract"
	ModeDir          = "dir"  // ModeDir 按时间顺序顺次读取文件夹下所有文件的模式
	ModeFile         = "file" // FileMode 读取单个文件模式
	ModeTailx        = "tailx"
	ModeFileAuto     = "fileauto"
	ModeDirx         = "dirx"
	ModeMySQL        = "mysql"
	ModeMSSQL        = "mssql"
	ModePostgreSQL   = "postgres"
	ModeElastic      = "elastic"
	ModeMongo        = "mongo"
	ModeKafka        = "kafka"
	ModeRedis        = "redis"
	ModeSocket       = "socket"
	ModeHTTP         = "http"
	ModeHTTPFETCH    = "httpfetch"
	ModeScript       = "script"
	ModeSnmp         = "snmp"
	ModeCloudWatch   = "cloudwatch"
	ModeCloudTrail   = "cloudtrail"
	ModeCloudTrailV2 = "cloudtrailv2"
)

FileReader's modes

View Source
const (
	ReadModeHeadPatternString = "mode_head_pattern_string"
	ReadModeHeadPatternRegexp = "mode_head_pattern_regexp"

	ReadModeRunTimeString = "mode_run_time_string"
	ReadModeRunTimeStruct = "mode_run_time_struct"
)
View Source
const (
	WhenceOldest = "oldest"
	WhenceNewest = "newest"
)

KeyWhence 的可选项

View Source
const (
	StatusInit int32 = iota
	StatusStopped
	StatusStopping
	StatusRunning
)
View Source
const (
	Loop = "loop"
)

Variables

View Source
var (
	ModeUsages = KeyValueSlice{
		{ModeFileAuto, "文件读取( fileauto 模式)", ""},
		{ModeFile, "文件读取( file 模式)", ""},
		{ModeTailx, "文件读取( tailx 模式)", ""},
		{ModeDir, "文件读取( dir 模式)", ""},
		{ModeDirx, "文件读取( dirx 模式)", ""},
		{ModeMySQL, "MySQL", ""},
		{ModeMSSQL, "MSSQL", ""},
		{ModePostgreSQL, "PostgreSQL", ""},
		{ModeElastic, "Elasticsearch", ""},
		{ModeMongo, "MongoDB", ""},
		{ModeKafka, "Kafka(0.8及以前版本)", "Kafka"},
		{ModeRedis, "Redis", ""},
		{ModeSocket, "Socket", ""},
		{ModeHTTP, "HTTP接收", ""},
		{ModeHTTPFETCH, "HTTP请求", ""},
		{ModeScript, "执行脚本", ""},
		{ModeSnmp, "SNMP 服务", ""},
		{ModeCloudWatch, "AWS Cloudwatch", ""},
		{ModeCloudTrail, "AWS S3", ""},
	}

	ModeToolTips = KeyValueSlice{
		{ModeFileAuto, "会自动根据路径匹配 dir, file, tailx 三种模式中的一种", ""},
		{ModeDir, "logkit会在启动时根据文件夹下文件时间顺序依次读取文件,当读到时间最新的文件时会不断读取追加的数据,直到该文件夹下出现新的文件。该模式的经典日志存储方式为整个文件夹下存储业务日志,文件夹下的日志使用统一前缀,后缀为时间戳,根据日志的大小rotate到新的文件。", ""},
		{ModeFile, "logkit会不断读取文件追加的数据。该模式的经典日志存储方式类似于nginx的日志rotate方式,日志名称为固定的名称,如access.log,rotate时直接move成新的文件如access.log.1,新的数据仍然写入到access.log。", ""},
		{ModeTailx, "展开并匹配所有符合表达式的文件,并持续读取所有有数据追加的文件。每隔stat_interval的时间,重新刷新一遍logpath模式串,添加新增的文件。该模式比较灵活,几乎可以读取所有日志更新,需要注意的是,使用tailx模式容易导致文件句柄打开过多。tailx模式的文件重复判断标准为文件名称,若使用rename, copy等方式改变日志名称,并且新的名字在logpath模式串的包含范围内,在read_from为oldest的情况下则会导致重复写入数据。", ""},
		{ModeDirx, "展开并匹配所有符合表达式的目录下的文件,并持续读取目录中新产生的文件,或者最新文件的数据追加。每隔stat_interval的时间,重新刷新一遍logpath模式串,监听新增的文件夹。该模式与tailx最大的区别时底层的实现方式是按文件夹读取(dir),而tailx是按文件读取,同样,使用dirx模式容易导致文件句柄打开过多,当相对于tailx会大大减少。dirx模式监听到文件夹后,会按文件夹内文件的最后更新依次读取,适合文件夹内文件依次滚动产生的场景。如果文件夹内的不同文件都会随时更新,则会导致重复读取,此时请选择tailx。", ""},
		{ModeMySQL, "MySQL Reader是以定时任务的形式去执行mysql语句,将mysql读取到的内容全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。", ""},
		{ModeMSSQL, "Microsoft SQL Server Reader是以定时任务的形式去执行sql语句,将sql读取到的内容全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。", ""},
		{ModePostgreSQL, "PostgreSQL Reader是以定时任务的形式去执行 PostgreSQL 查询语句,将 PostgreSQL 读取到的内容全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。", ""},
		{ModeElastic, "Elasticsearch Reader 是logkit提供的从Elasticsearch读取日志的配置方式。Elasticsearch Reader输出的是json字符串,需要使用json的parser解析。", ""},
		{ModeMongo, "MongoDB reader 是logkit提供的从MongoDB读取数据的配置方式。MongoDB reader 输出的是json字符串,需要使用json的parser解析。", ""},
		{ModeKafka, "Kafka reader 是logkit提供的从Kafka读取数据的配置方式。针对0.8及以前版本的Kafka服务", "Kafka"},
		{ModeRedis, "Redis Reader 是logkit提供的从Redis读取日志的配置方式。Redis Reader 输出的是redis中存储的字符串,具体字符串是什么格式,可以在parser中用对应方式解析。", ""},
		{ModeSocket, `Socket Reader 是logkit提供的以端口监听的方式接受并读取日志的形式,主要支持tcp\udp\unix套接字 这三大类协议。`, ""},
		{ModeHTTP, `Http Reader 是 logkit 提供的以 http post 请求的方式接受并读取日志的形式。该 reader 支持 gzip, 但请在请求头中添加Content-Encoding=gzip 或者 Content-Type=application/gzip,默认接收 request body 中所有的数据作为要读取的日志, 限制 request body 小于 100MB,默认将 request body 中的数据使用 \n 分割, 每行作为一条数据`, ""},
		{ModeScript, "Script Reader是以定时任务的形式执行脚本,将脚本执行的结果全部获取则任务结束,等到下一个定时任务的到来,也可以仅执行一次。", ""},
		{ModeSnmp, "Snmp Reader 可以从 Snmp 服务中收集数据。snmp_fields 和 snmp_tables 这两项配置需要填入符合 json数组 格式的字符串, 字符串内的双引号需要转义。", ""},
		{ModeCloudWatch, "CloudWatch Reader 可以从 AWS CloudWatch 服务的接口中获取数据。", ""},
		{ModeCloudTrail, "AWS S3 Reader 可以从 AWS S3 服务的接口中获取数据。", ""},
	}
)

ModeUsages 和 ModeTooltips 用途说明

View Source
var (
	OptionMetaPath = Option{
		KeyName:      KeyMetaPath,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "数据保存路径(meta_path)",
		Advance:      true,
		ToolTip:      "一个文件夹,记录本次reader的读取位置,默认会自动生成",
	}
	OptionIgnoreLogPath = Option{
		KeyName:      KeyIgnoreLogPath,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "忽略文件/文件夹路径(ignore_log_path)",
		Advance:      true,
		ToolTip:      "忽略文件/文件夹路径,不读取该文件/文件夹",
	}
	OptionDataSourceTag = Option{
		KeyName:      KeyDataSourceTag,
		ChooseOnly:   false,
		Default:      "datasource",
		DefaultNoUse: false,
		Description:  "来源标签(datasource_tag)",
		Advance:      true,
		ToolTip:      "把读取日志的路径名称也作为标签,记录到解析出来的数据结果中,此处填写标签名称",
	}
	OptionEncodeTag = Option{
		KeyName:      KeyEncodeTag,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "编码方式标签(encode_tag)",
		Advance:      true,
		ToolTip:      "把日志的编码方式也作为标签,记录到解析出来的数据结果中,此处填写标签名称,空值则不记录编码方式",
	}
	OptionBuffSize = Option{
		KeyName:      KeyBufSize,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "数据缓存大小(reader_buf_size)",
		CheckRegex:   "\\d+",
		Advance:      true,
		ToolTip:      "读取数据的缓存大小,默认4096,单位字节",
	}
	OptionEncoding = Option{
		KeyName:       KeyEncoding,
		ChooseOnly:    true,
		ChooseOptions: Encoding,
		Default:       "UTF-8",
		DefaultNoUse:  false,
		Description:   "编码方式(encoding)",
		Advance:       true,
		ToolTip:       "读取日志的编码方式,默认为UTF-8,即按照UTF-8的编码方式读取文件",
	}
	OptionWhence = Option{
		KeyName:       KeyWhence,
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{WhenceOldest, WhenceNewest},
		Default:       WhenceOldest,
		Description:   "读取起始位置(read_from)",
		ToolTip:       "在创建新文件或meta信息损坏的时候(即历史读取记录不存在),将从数据源的哪个位置开始读取,最新或最老",
	}
	OptionReadIoLimit = Option{
		KeyName:      KeyReadIOLimit,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "读取速度限制(readio_limit)",
		CheckRegex:   "\\d+",
		Advance:      true,
		ToolTip:      "读取文件的磁盘限速,填写正整数,单位为MB/s, 默认不限速",
	}
	OptionHeadPattern = Option{
		KeyName:      KeyHeadPattern,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "按正则表达式规则换行(head_pattern)",
		Advance:      true,
		ToolTip:      "reader每次读取一行,若要读取多行,请填写head_pattern,表示匹配多行时新的一行的开始符合该正则表达式",
	}
	OptionRunTime = Option{
		KeyName:      KeyRunTime,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "运行时间(run_time)",
		Advance:      true,
		ToolTip:      "reader每次读取时间范围,24小时制,请填写时间范围,例如 22-23,表示每天 22点到23点 之间进行采集,仅file和tailx模式支持",
	}
	OptionSQLSchema = Option{
		KeyName:      KeySQLSchema,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "手动定义SQL字段类型(sql_schema)",
		Advance:      true,
		ToolTip:      `默认情况下会自动识别数据字段的类型,当不能识别时,可以sql_schema指定 mysql 数据字段的类型,目前支持string、long、float三种类型,单个字段左边为字段名称,右边为类型,空格分隔 abc float;不同的字段用逗号分隔。支持简写为float=>f,long=>l,string=>s. 如:"sql_schema":"abc string,bcd float,xyz long"`,
	}
	OptionMagicLagDuration = Option{
		KeyName:      KeyMagicLagDuration,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "魔法变量时间延迟(magic_lag_duration)",
		Advance:      true,
		ToolTip:      `针对魔法变量进行时间延迟,单位支持h(时)、m(分)、s(秒),如写24h,则渲染出来的时间魔法变量往前1天`,
	}
	OptionKeyNewFileNewLine = Option{
		KeyName:       KeyNewFileNewLine,
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"false", "true"},
		Default:       "false",
		DefaultNoUse:  false,
		Description:   "文件末尾添加换行符(newfile_newline)",
		Advance:       true,
		ToolTip:       "开启后,不同文件结尾自动添加换行符",
	}
	OptionKeySkipFileFirstLine = Option{
		KeyName:       KeySkipFileFirstLine,
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"false", "true"},
		Default:       "false",
		DefaultNoUse:  false,
		Description:   "跳过新文件的第一行(skip_first_line)",
		Advance:       true,
		Required:      false,
		ToolTip:       "常用于带抬头的csv文件,抬头与实际数据类型不一致",
	}
	OptionKeyReadSameInode = Option{
		KeyName:       KeyReadSameInode,
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"false", "true"},
		Default:       "false",
		DefaultNoUse:  false,
		Description:   "是否读取已经读完的文件(read_same_inode)",
		Advance:       true,
		Required:      false,
		ToolTip:       "已经读完的文件(inode相同)是否继续读取",
	}
	OptionKeyValidFilePattern = Option{
		KeyName:      KeyValidFilePattern,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "以linux通配符匹配文件(valid_file_pattern)",
		Advance:      true,
		ToolTip:      `针对dir读取模式需要解析的日志文件,可以设置匹配文件名的模式串,匹配方式为linux通配符展开方式,默认为*,即匹配文件夹下全部文件`,
	}
	OptionKeyIgnoreHiddenFile = Option{
		KeyName:       KeyIgnoreHiddenFile,
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"true", "false"},
		Default:       "true",
		DefaultNoUse:  false,
		Description:   "是否忽略隐藏文件(ignore_hidden)",
		Advance:       true,
		ToolTip:       "读取的过程中是否忽略隐藏文件",
	}
	OptionKeyIgnoreFileSuffix = Option{
		KeyName:      KeyIgnoreFileSuffix,
		ChooseOnly:   false,
		Default:      strings.Join(DefaultIgnoreFileSuffixes, ","),
		DefaultNoUse: false,
		Description:  "忽略此类后缀文件(ignore_file_suffix)",
		Advance:      true,
		ToolTip:      `针对dir读取模式需要解析的日志文件,可以设置读取的过程中忽略哪些文件后缀名,默认忽略的后缀包括".pid", ".swap", ".go", ".conf", ".tar.gz", ".tar", ".zip",".a", ".o", ".so"`,
	}
	OptionKeySubmetaExpire = Option{
		KeyName:      KeySubmetaExpire,
		ChooseOnly:   false,
		Default:      "720h",
		DefaultNoUse: false,
		Description:  "清理元数据的过期时间(submeta_expire)",
		CheckRegex:   "\\d+[hms]",
		ToolTip:      `当元数据的文件达到expire时间,则对其进行清理操作。写法为:数字加单位符号,组成字符串duration写法,支持时h、分m、秒s为单位,类似3h(3小时),10m(10分钟),5s(5秒),默认的expire时间是720h,即30天。若最大过期时间(expire)为0s,则不会清理元数据`,
	}
	OptionKeyExpireDelete = Option{
		KeyName:       KeyExpireDelete,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"false", "true"},
		Default:       "false",
		DefaultNoUse:  false,
		Description:   "自动删除读取完毕的文件(" + KeyExpireDelete + ")",
		ToolTip:       "自动删除已经读取完毕并且已经达到过期时间的文件/文件夹,压缩文件读完就认为已经过期",
	}
	OptionKeyMaxOpenFiles = Option{
		KeyName:      KeyMaxOpenFiles,
		ChooseOnly:   false,
		Default:      "",
		DefaultNoUse: false,
		Description:  "最大打开文件数(max_open_files)",
		CheckRegex:   "\\d+",
		Advance:      true,
		ToolTip:      "最大同时追踪的文件数,默认为256",
	}
	OptionKeyStatInterval = Option{
		KeyName:      KeyStatInterval,
		ChooseOnly:   false,
		Default:      "3m",
		DefaultNoUse: false,
		Description:  "扫描间隔(stat_interval)",
		CheckRegex:   "\\d+[hms]",
		Advance:      true,
		ToolTip:      `感知新增日志的定时检查时间`,
	}
	OptionAuthUsername = Option{
		KeyName:      KeyAuthUsername,
		Default:      "",
		DefaultNoUse: false,
		Description:  "认证用户名(auth_username)",
		Advance:      true,
	}
	OptionAuthPassword = Option{
		KeyName:      KeyAuthPassword,
		Description:  "认证用户密码(auth_password)",
		Default:      "",
		DefaultNoUse: false,
		Secret:       true,
		Advance:      true,
		ToolTip:      `支持从自定义环境变量(如 YOUR_AUTH_PASSWORD_ENV)里读取对应值,填写方式为 ${YOUR_AUTH_PASSWORD_ENV}`,
	}
	OptionInodeSensitive = Option{
		KeyName:       KeyInodeSensitive,
		Description:   "文件的inode值是否固定(inode_sensitive)",
		Element:       Radio,
		ChooseOnly:    true,
		ChooseOptions: []interface{}{"true", "false"},
		Default:       "true",
		DefaultNoUse:  false,
		ToolTip:       "设置为false时以文件名唯一标识文件;设置为true时,以文件名+inode唯一标识文件",
		Advance:       true,
	}
)
View Source
var DefaultIgnoreFileSuffixes = []string{
	".pid", ".swap", ".go", ".conf", ".tar.gz", ".tar", ".zip",
	".a", ".o", ".so"}
View Source
var ModeKeyOptions = map[string][]Option{
	ModeDir: {
		{
			KeyName:      KeyLogPath,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "/home/users/john/log/",
			Required:     true,
			DefaultNoUse: true,
			Description:  "日志文件夹路径(log_path)",
			ToolTip:      "需要收集的日志的文件夹路径",
		},
		OptionMetaPath,
		OptionBuffSize,
		OptionWhence,
		OptionEncoding,
		OptionDataSourceTag,
		OptionEncodeTag,
		OptionReadIoLimit,
		OptionHeadPattern,
		OptionKeyNewFileNewLine,
		OptionKeySkipFileFirstLine,
		OptionKeyReadSameInode,
		OptionKeyIgnoreHiddenFile,
		OptionInodeSensitive,
		OptionKeyIgnoreFileSuffix,
		OptionKeyValidFilePattern,
	},
	ModeFile: {
		{
			KeyName:      KeyLogPath,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "/home/users/john/log/my.log",
			DefaultNoUse: true,
			Description:  "日志文件路径(log_path)",
			ToolTip:      "需要收集的日志的文件路径",
		},
		OptionMetaPath,
		OptionBuffSize,
		OptionWhence,
		OptionDataSourceTag,
		OptionEncodeTag,
		OptionEncoding,
		OptionReadIoLimit,
		OptionHeadPattern,
		OptionRunTime,
	},
	ModeTailx: {
		{
			KeyName:      KeyLogPath,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "/home/users/*/mylog/*.log",
			DefaultNoUse: true,
			Description:  "日志文件路径模式串(log_path)",
			ToolTip:      "需要收集的日志的文件(夹)模式串路径,写 * 代表通配",
		},
		OptionIgnoreLogPath,
		OptionMetaPath,
		OptionBuffSize,
		OptionWhence,
		OptionEncoding,
		OptionReadIoLimit,
		OptionDataSourceTag,
		OptionEncodeTag,
		OptionHeadPattern,
		OptionRunTime,
		{
			KeyName:      KeyExpire,
			ChooseOnly:   false,
			Default:      "24h",
			DefaultNoUse: false,
			Description:  "忽略文件的最大过期时间(expire)",
			CheckRegex:   "\\d+[hms]",
			ToolTip:      `当日志达到expire时间,则放弃追踪。写法为:数字加单位符号,组成字符串duration写法,支持时h、分m、秒s为单位,类似3h(3小时),10m(10分钟),5s(5秒),默认的expire时间是24h,当expire时间是0s时表示永不过期`,
		},
		OptionKeySubmetaExpire,
		OptionKeyExpireDelete,
		OptionKeyMaxOpenFiles,
		OptionKeyStatInterval,
	},
	ModeDirx: {
		{
			KeyName:      KeyLogPath,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "/home/users/*",
			Required:     true,
			DefaultNoUse: true,
			Description:  "日志文件夹路径模式串(log_path)",
			ToolTip:      "需要收集的日志的文件夹模式串路径,写 * 代表通配",
		},
		OptionIgnoreLogPath,
		OptionMetaPath,
		OptionBuffSize,
		OptionWhence,
		OptionEncoding,
		OptionDataSourceTag,
		OptionEncodeTag,
		OptionReadIoLimit,
		OptionHeadPattern,
		OptionKeyNewFileNewLine,
		OptionKeySkipFileFirstLine,
		OptionKeyReadSameInode,
		OptionKeyIgnoreHiddenFile,
		OptionKeyIgnoreFileSuffix,
		{
			KeyName:      KeyExpire,
			ChooseOnly:   false,
			Default:      "0s",
			DefaultNoUse: false,
			Description:  "忽略文件夹内文件的最大过期时间(expire)",
			CheckRegex:   "\\d+[hms]",
			ToolTip:      `当文件夹内所有的日志达到expire时间,则放弃追踪。写法为:数字加单位符号,组成字符串duration写法,支持时h、分m、秒s为单位,类似3h(3小时),10m(10分钟),5s(5秒),默认的expire时间是0s,即永不过期`,
		},
		OptionKeySubmetaExpire,
		OptionKeyExpireDelete,
		OptionKeyMaxOpenFiles,
		OptionKeyStatInterval,
		OptionKeyValidFilePattern,
	},
	ModeFileAuto: {
		{
			KeyName:      KeyLogPath,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "/your/log/dir/or/path*.log",
			DefaultNoUse: true,
			Description:  "日志路径(log_path)",
			ToolTip:      "需要收集的日志文件(夹)路径",
		},
		{
			KeyName:      KeyExpire,
			ChooseOnly:   false,
			DefaultNoUse: false,
			Description:  "忽略文件夹内文件的最大过期时间(expire)",
			CheckRegex:   "\\d+[hms]",
			ToolTip:      `当日志/文件夹内所有的日志达到expire时间,则放弃追踪。写法为:数字加单位符号,组成字符串duration写法,支持时h、分m、秒s为单位,类似3h(3小时),10m(10分钟),5s(5秒),默认的expire时间,dirx为0s,即永不过期,tailx为24h`,
		},
		OptionKeySubmetaExpire,
		OptionKeyExpireDelete,
		OptionMetaPath,
		OptionIgnoreLogPath,
		OptionWhence,
		OptionEncoding,
		OptionDataSourceTag,
		OptionEncodeTag,
		OptionReadIoLimit,
		OptionHeadPattern,
		OptionRunTime,
		OptionKeyNewFileNewLine,
		OptionKeySkipFileFirstLine,
		OptionKeyReadSameInode,
		OptionKeyIgnoreHiddenFile,
		OptionKeyIgnoreFileSuffix,
		OptionKeyMaxOpenFiles,
		OptionKeyStatInterval,
		OptionKeyValidFilePattern,
	},
	ModeMySQL: {
		{
			KeyName:      KeyMysqlDataSource,
			Element:      Text,
			ChooseOnly:   false,
			Required:     true,
			Placeholder:  "${YOUR_MYSQL_SOURCE_ENV}",
			Secret:       true,
			DefaultNoUse: true,
			Description:  "数据库地址(mysql_datasource)",
			ToolTip:      `mysql数据源所需信息,<username>:<password>@tcp(<hostname>:<port>),其中 username: 用户名, password: 用户密码, hostname: mysql地址, port: mysql端口, 示例:一个填写完整的字段类似于:"admin:123456@tcp(10.101.111.1:3306)",支持从自定义环境变量(如 YOUR_MYSQL_SOURCE_ENV)里读取对应值`,
		},
		{
			KeyName:      KeyMysqlDataBase,
			Required:     true,
			ChooseOnly:   false,
			Placeholder:  "<database>,默认读取所有用户数据库",
			DefaultNoUse: false,
			Default:      "",
			Description:  "数据库名称(mysql_database)",
			ToolTip:      `mysql数据库名称,支持魔法变量,*代表所有数据表`,
		},
		{
			KeyName:      KeyMysqlSQL,
			Element:      Text,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			Placeholder:  "select * from <table>;",
			DefaultNoUse: true,
			Description:  "数据查询语句(mysql_sql)",
			ToolTip:      "填写要执行的sql语句,不为空则数据库表名字段不生效",
		},
		{
			KeyName:       KeyMysqlTable,
			ChooseOnly:    false,
			Placeholder:   "<table>",
			DefaultNoUse:  true,
			Default:       "",
			Description:   "数据库表名(mysql_table)",
			ToolTip:       "mysql数据库表名,支持魔法变量,*代表所有数据表,若数据库查询语句不为空,则该字段不生效,否则,自动导入匹配数据库名和表名的数据",
			AdvanceDepend: KeyMysqlHistoryAll,
		},
		{
			KeyName:       KeyMysqlExecOnStart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(mysql_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		{
			KeyName:    KeyMysqlEncoding,
			ChooseOnly: true,
			ChooseOptions: []interface{}{"big5", "dec8", "cp850", "hp8", "koi8r",
				"latin1", "latin2", "swe7", "ascii", "ujis", "sjis", "hebrew", "tis620",
				"euckr", "koi8u", "gb2312", "greek", "cp1250", "gbk", "latin5", "armscii8",
				"utf8", "ucs2", "cp866", "keybcs2", "macce", "macroman", "cp852", "latin7",
				"utf8mb4", "cp1251", "utf16", "utf16le", "cp1256", "cp1257", "utf32",
				"binary", "geostd8", "cp932", "eucjpms", "gb18030"},
			Default:      "utf8",
			DefaultNoUse: false,
			Description:  "编码方式(encoding)",
			Advance:      true,
			ToolTip:      "读取数据库的编码方式,默认为utf8,即按照utf8的编码方式读取数据库",
		},
		{
			KeyName:       KeyMysqlNeedOffset,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{NotBatch, BatchByTime, BatchByOther, HideOptions},
			Default:       HideOptions,
			DefaultNoUse:  false,
			Description:   `分批次查询(` + KeyMysqlNeedOffset + `)`,
			Advance:       true,
			ToolTip:       "根据指定列名分批次查询, 隐藏选项不会改变已选择的结果,请按需选择",
		},
		{
			KeyName:            KeyMysqlTimestampKey,
			ChooseOnly:         false,
			Default:            "",
			DefaultNoUse:       true,
			Description:        `时间戳列名称(` + KeyMysqlTimestampKey + `)`,
			Advance:            true,
			ToolTip:            `指定一个 mysql 的时间戳(Date/Time/Timestamp/DateTime Types)`,
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByTime,
		},
		{
			KeyName:            KeyMysqlTimestampInt,
			ChooseOnly:         true,
			ChooseOptions:      []interface{}{"false", "true"},
			Default:            "false",
			DefaultNoUse:       true,
			Description:        `时间字段是否整型(` + KeyMysqlTimestampInt + `)`,
			Advance:            true,
			ToolTip:            `指定 mysql 的时间戳是否整型,默认为否,是时间类型(Date/Time Types)`,
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByTime,
		},
		{
			KeyName:            KeyMysqlStartTime,
			ChooseOnly:         false,
			Default:            "",
			Placeholder:        time.Now().Format("2006-01-02 15:04:05.000000"),
			DefaultNoUse:       true,
			Description:        `起始时间(` + KeyMysqlStartTime + `)`,
			Advance:            true,
			ToolTip:            `指定一个 mysql 的时间戳开始时间,按格式填写(2006-01-02 15:04:05.000000);如果时间戳类型是整型,此处填数字`,
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByTime,
		},
		{
			KeyName:            KeyMysqlBatchDuration,
			ChooseOnly:         false,
			Default:            "1m",
			DefaultNoUse:       true,
			Description:        `单次查询范围(` + KeyMysqlBatchDuration + `)`,
			Advance:            true,
			ToolTip:            `指定一个 mysql 搜索的范围(10s、2m、1h);如果时间戳类型是整型,此处填数字,仅在有效时间戳时生效`,
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByTime,
		},
		{
			KeyName:            KeyMysqlOffsetKey,
			ChooseOnly:         false,
			Default:            "",
			DefaultNoUse:       true,
			Description:        "递增的列名称(mysql_offset_key)",
			Advance:            true,
			ToolTip:            "指定一个 mysql 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段",
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByOther,
		},
		{
			KeyName:            KeyMysqlReadBatch,
			ChooseOnly:         false,
			Default:            "100",
			DefaultNoUse:       true,
			Description:        "分批查询的单批次大小(mysql_limit_batch)",
			CheckRegex:         "\\d+",
			Advance:            true,
			ToolTip:            "若数据量大,可以填写该字段,分批次查询",
			AdvanceDepend:      KeyMysqlNeedOffset,
			AdvanceDependValue: BatchByOther,
		},
		OptionMetaPath,
		OptionDataSourceTag,
		{
			KeyName:       KeyMysqlFullQuery,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "false",
			DefaultNoUse:  false,
			Description:   `全量采集(` + KeyMysqlFullQuery + `)`,
			Advance:       true,
			ToolTip:       "采集全量数据",
		},
		{
			KeyName:      KeyMysqlCron,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  `定时任务(` + KeyMysqlCron + `)`,
			Advance:      true,
			ToolTip:      `定时任务触发周期(选择全量采集时为全量采集的定时任务),直接写"loop"循环执行,crontab的写法, 类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:      KeyMysqlParam,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "数据库参数(mysql_param)",
			Advance:      true,
			ToolTip:      "指定 mysql 的参数,参数之间使用 \"&\" 符合连接, 示例: allowOldPasswords=true",
		},
		{
			KeyName:       KeyMysqlHistoryAll,
			Advance:       true,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "false",
			DefaultNoUse:  false,
			Description:   "导入匹配的数据(history_all)",
			ToolTip:       "帮助导入匹配和小于(如果使用了魔法变量)数据库名和表名的所有数据",
		},
		OptionSQLSchema,
		OptionMagicLagDuration,
	},
	ModeMSSQL: {
		{
			KeyName:      KeyMssqlDataSource,
			Element:      Text,
			ChooseOnly:   false,
			Placeholder:  "${YOUR_MSSQL_SOURCE_ENV}",
			DefaultNoUse: true,
			Required:     true,
			Secret:       true,
			Description:  "数据库地址(mssql_datasource)",
			ToolTip:      `mssql数据源所需信息,server=<hostname or instance>;user id=<username>;password=<password>;port=<port>,其中username: 用户名, password: 用户密码, hostname: mssql地址,实例,port: mssql端口,默认1433, 示例:一个填写完整的mssql_datasource字段类似于:"server=localhost\SQLExpress;user id=sa;password=PassWord;port=1433",支持从自定义环境变量(如 YOUR_MSSQL_SOURCE_ENV)里读取对应值`,
		},
		{
			KeyName:      KeyMssqlDataBase,
			Default:      "",
			Required:     true,
			ChooseOnly:   false,
			Placeholder:  "<database>",
			DefaultNoUse: true,
			Description:  "数据库名称(mssql_database)",
			ToolTip:      "数据库名称",
		},
		{
			KeyName:      KeyMssqlSchema,
			Default:      "",
			Required:     false,
			ChooseOnly:   false,
			Placeholder:  "<schema>",
			DefaultNoUse: true,
			Description:  "数据库模式名称(mssql_schema)",
			ToolTip:      "数据库模式名称",
		},
		{
			KeyName:      KeyMssqlSQL,
			Default:      "",
			Element:      Text,
			Required:     false,
			ChooseOnly:   false,
			Placeholder:  "select * from <table>;",
			DefaultNoUse: true,
			Description:  "数据查询语句(mssql_sql)",
			ToolTip:      "要执行的sql语句",
		},
		{
			KeyName:      KeyMssqlOffsetKey,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: true,
			Description:  "递增的列名称(mssql_offset_key)",
			Advance:      true,
			ToolTip:      `指定一个mssql的列名,作为offset的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段`,
		},
		OptionMetaPath,
		OptionDataSourceTag,
		{
			KeyName:      KeyMssqlReadBatch,
			ChooseOnly:   false,
			Default:      "100",
			DefaultNoUse: false,
			Description:  "分批查询的单批次大小(mssql_limit_batch)",
			CheckRegex:   "\\d+",
			Advance:      true,
			ToolTip:      "若数据量大,可以填写该字段,分批次查询",
		},
		{
			KeyName:      KeyMssqlCron,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  "定时任务(mssql_cron)",
			Advance:      true,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:       KeyMssqlExecOnStart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(mssql_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		OptionSQLSchema,
		OptionMagicLagDuration,
	},
	ModePostgreSQL: {
		{
			KeyName:      KeyPGsqlDataSource,
			Element:      Text,
			ChooseOnly:   false,
			Required:     true,
			Placeholder:  "${YOUR_PGSQL_SOURCE_ENV}",
			DefaultNoUse: true,
			Secret:       true,
			Description:  "数据库地址(postgres_datasource)",
			ToolTip:      `PostgreSQL数据源所需信息,host=localhost port=5432 connect_timeout=10 user=pqgotest password=123456 sslmode=disable 填写的形式如 host=localhost port=5432, 属性和实际的值用=(等于)符号连接,中间不要有空格,不同的属性用(空格)隔开,一个填写完整的 postgres_datasource 字段类似于:"host=localhost port=5432 connect_timeout=10 user=pqgotest password=123456 sslmode=disable",支持从自定义环境变量(如 YOUR_PGSQL_SOURCE_ENV)里读取对应值`,
		},
		{
			KeyName:      KeyPGsqlDataBase,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "<database>",
			DefaultNoUse: true,
			Description:  "数据库名称(postgres_database)",
			ToolTip:      "数据库名称",
		},
		{
			KeyName:      KeyPGsqlSchema,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			Placeholder:  "<schema>",
			DefaultNoUse: true,
			Description:  "数据库模式名称(postgres_schema)",
			ToolTip:      "数据库模式名称",
		},
		{
			KeyName:      KeyPGsqlSQL,
			Element:      Text,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			Placeholder:  "select * from <table>;",
			DefaultNoUse: true,
			Description:  "数据查询语句(postgres_sql)",
			ToolTip:      "要执行的查询语句",
		},
		{
			KeyName:      KeyPGsqlOffsetKey,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: true,
			Description:  "递增的列名称(postgres_offset_key)",
			Advance:      true,
			ToolTip:      `指定一个 PostgreSQL 的列名,作为 offset 的记录,类型必须是整型,建议使用插入(或修改)数据的时间戳(unixnano)作为该字段`,
		},
		{
			KeyName:      KeyPGtimestampKey,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: true,
			Description:  `时间戳列名称(` + KeyPGtimestampKey + `)`,
			Advance:      true,
			ToolTip:      `指定一个 PostgreSQL 的时间戳(Date/Time Types)`,
		},
		{
			KeyName:      KeyPGStartTime,
			ChooseOnly:   false,
			Default:      time.Now().Format("2006-01-02 15:04:05.000000"),
			DefaultNoUse: true,
			Description:  `起始时间(` + KeyPGStartTime + `)`,
			Advance:      true,
			ToolTip:      `指定一个 PostgreSQL 的时间戳开始时间,按格式填写(2006-01-02 15:04:05.000000);如果时间戳类型是整型,此处填数字`,
		},
		{
			KeyName:      KeyPGBatchDuration,
			ChooseOnly:   false,
			Default:      "1m",
			DefaultNoUse: true,
			Description:  `单次查询范围(` + KeyPGBatchDuration + `)`,
			Advance:      true,
			ToolTip:      `指定一个 PostgreSQL 搜索的范围(10s、2m、1h);如果时间戳类型是整型,此处填数字`,
		},
		{
			KeyName:       KeyPGtimestampInt,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"false", "true"},
			Default:       "false",
			DefaultNoUse:  true,
			Description:   `时间字段是否整型(` + KeyPGtimestampInt + `)`,
			Advance:       true,
			ToolTip:       `指定 PostgreSQL 的时间戳是否整型,默认为否,是时间类型(Date/Time Types)`,
		},
		OptionMetaPath,
		OptionDataSourceTag,
		{
			KeyName:      KeyPGsqlReadBatch,
			ChooseOnly:   false,
			Default:      "100",
			DefaultNoUse: false,
			Description:  "分批查询的单批次大小(postgres_limit_batch)",
			CheckRegex:   "\\d+",
			Advance:      true,
			ToolTip:      "若数据量大,可以填写该字段,分批次查询",
		},
		{
			KeyName:      KeyPGsqlCron,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  "定时任务(postgres_cron)",
			Advance:      true,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:       KeyPGsqlExecOnStart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(postgres_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		OptionSQLSchema,
		OptionMagicLagDuration,
	},
	ModeElastic: {
		{
			KeyName:      KeyESHost,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: true,
			Required:     true,
			Placeholder:  "http://localhost:9200",
			Description:  "数据库地址(es_host)",
			ToolTip:      "es的host地址以及端口,常用端口是9200",
		},
		{
			KeyName:       KeyESVersion,
			Default:       ElasticVersion5,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{ElasticVersion3, ElasticVersion5, ElasticVersion6},
			Description:   "版本(es_version)",
			ToolTip:       "版本,3.x包含了2.x",
		},
		{
			KeyName:      KeyESIndex,
			ChooseOnly:   false,
			Placeholder:  "app-repo-2006.01.02",
			DefaultNoUse: true,
			Default:      "",
			Required:     true,
			Description:  "索引名称(es_index)",
			ToolTip:      "如果需要按天读取,则要开启按照时间转换索引功能,在此处配置索引模板,日期年份固定为2006,月份为01,日期为02",
		},
		{
			KeyName:      KeyESType,
			ChooseOnly:   false,
			Placeholder:  "type_app",
			Default:      "",
			Required:     false,
			DefaultNoUse: true,
			Advance:      true,
			Description:  "app名称(es_type)",
		},
		OptionAuthUsername,
		OptionAuthPassword,
		OptionMetaPath,
		OptionDataSourceTag,
		{
			KeyName:      KeyESReadBatch,
			ChooseOnly:   false,
			Default:      "100",
			Required:     true,
			DefaultNoUse: false,
			Description:  "分批查询的单批次大小(es_limit_batch)",
			Advance:      true,
			ToolTip:      "单批次查询数据大小,默认100",
		},
		{
			KeyName:      KeyESKeepAlive,
			ChooseOnly:   false,
			Default:      "1d",
			Required:     true,
			DefaultNoUse: false,
			Description:  "offset保存时间(es_keepalive)",
			CheckRegex:   "\\d+[dms]",
			Advance:      true,
			ToolTip:      "logkit重启后可以继续读取ES数据的Offset记录在es服务端保存的时长,默认1d",
		},
		{
			KeyName:       KeyESExecOnstart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(es_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		{
			KeyName:      KeyESCron,
			ChooseOnly:   false,
			Default:      "loop 3s",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  "定时任务(es_cron)",
			Advance:      true,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行,loop模式为全量读取,cron模式为增量读取`,
		},
		{
			KeyName:      KeyESCronOffset,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "定时读取时作为offset字段的字段名",
			DefaultNoUse: false,
			Description:  "定时任务offset字段字段名(es_cron_offset)",
			Advance:      true,
			ToolTip:      `定时读取时作为offset字段的字段名,该字段只在es_cron中使用的是定时任务时生效,且此字段应该具有作为offset字段的特性(递增,例如:timestamp字段)`,
		},
		{
			KeyName:       KeyESDateShift,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"false", "true"},
			Default:       "false",
			DefaultNoUse:  false,
			Description:   "根据时间变换索引名称(" + KeyESDateShift + ")",
			Advance:       true,
			ToolTip:       `对索引(index)进行时间转换,开启此选项后index字段填写golang的时间格式,会根据当前时间渲染,默认按当前时间,可以通过时间偏移选项得到前一天的时间`,
		},
		{
			KeyName:       KeyESDateOffset,
			ChooseOnly:    false,
			Default:       "0",
			DefaultNoUse:  false,
			Description:   "时间向前偏移N小时(" + KeyESDateOffset + ")",
			Advance:       true,
			AdvanceDepend: KeyESDateShift,
			ToolTip:       `对索引(index)进行时间转换时,默认按当前时间,使用这个参数可以对时间进行偏移,单位为小时,如24表示往前偏移1天`,
		},
	},
	ModeMongo: {
		{
			KeyName:      KeyMongoHost,
			ChooseOnly:   false,
			Required:     true,
			Placeholder:  "${YOUR_MONGODB_HOST_ENV}",
			DefaultNoUse: true,
			Secret:       true,
			Description:  "数据库地址(mongo_host)",
			ToolTip:      `mongodb的url地址,基础的是mongo的host地址以及端口,可以写为: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]],支持从自定义环境变量(如 YOUR_MONGODB_HOST_ENV)里读取对应值`,
		},
		{
			KeyName:      KeyMongoDatabase,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "app123",
			DefaultNoUse: true,
			Description:  "数据库名称(mongo_database)",
			ToolTip:      "",
		},
		{
			KeyName:      KeyMongoCollection,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "collection1",
			DefaultNoUse: true,
			Description:  "数据表名称(mongo_collection)",
			ToolTip:      "",
		},
		{
			KeyName:      KeyMongoOffsetKey,
			ChooseOnly:   false,
			Default:      "_id",
			Required:     false,
			DefaultNoUse: false,
			Description:  "递增的主键(mongo_offset_key)",
			ToolTip:      `指定一个mongo的列名,作为offset的记录,类型必须是整型(比如unixnano的时间,或者自增的primary key);如果为空,则导出全量数据`,
		},
		OptionMetaPath,
		OptionDataSourceTag,
		{
			KeyName:      KeyMongoReadBatch,
			ChooseOnly:   false,
			Default:      "100",
			DefaultNoUse: false,
			Description:  "分批查询的单批次大小(mongo_limit_batch)",
			CheckRegex:   "\\d+",
			Advance:      true,
			ToolTip:      "单次请求获取的数据量",
		},
		{
			KeyName:      KeyMongoCron,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  "定时任务(mongo_cron)",
			Advance:      true,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:       KeyMongoExecOnstart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(mongo_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		{
			KeyName:      KeyMongoTimeout,
			ChooseOnly:   false,
			Default:      "30",
			DefaultNoUse: false,
			Placeholder:  "30",
			Description:  "超时时间(mongo_timeout)",
			Advance:      true,
			ToolTip:      "mongo连接超时时间设置,单位为秒",
		},
		{
			KeyName:      KeyMongoFilters,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Placeholder:  "{\"foo\": {\"i\": {\"$gt\": 10}}}",
			Description:  "数据过滤方式(mongo_filters)",
			Advance:      true,
			ToolTip:      "表示collection的过滤规则,默认不过滤,全部获取",
		},
	},
	ModeKafka: {
		{
			KeyName:      KeyKafkaGroupID,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "logkit1",
			DefaultNoUse: true,
			Description:  "consumer组名称(kafka_groupid)",
			ToolTip:      "kafka组名,多个logkit同时消费时写同一个组名可以协同读取数据",
		},
		{
			KeyName:      KeyKafkaTopic,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "test_topic1",
			DefaultNoUse: true,
			Description:  "topic名称(kafka_topic)",
		},
		{
			KeyName:      KeyKafkaZookeeper,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "localhost:2181",
			DefaultNoUse: true,
			Description:  "zookeeper地址(kafka_zookeeper)",
			ToolTip:      "zookeeper地址列表,多个用逗号分隔,常用端口是2181",
		},
		{
			KeyName:      KeyKafkaZookeeperChroot,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "zookeeper中kafka根路径(kafka_zookeeper_chroot)",
			Advance:      true,
			ToolTip:      "kafka在zookeeper根路径中的地址",
		},
		OptionWhence,
		{
			KeyName:      KeyKafkaZookeeperTimeout,
			ChooseOnly:   false,
			Default:      "1",
			Required:     true,
			DefaultNoUse: false,
			Description:  "zookeeper超时时间(kafka_zookeeper_timeout)",
			Advance:      true,
			ToolTip:      "zookeeper连接超时时间,单位为秒",
		},
		{
			KeyName:      KeyKafkaMaxProcessTime,
			ChooseOnly:   false,
			Default:      "1s",
			Required:     true,
			DefaultNoUse: false,
			Description:  "kafka单次请求最大处理时间(" + KeyKafkaMaxProcessTime + ")",
			Advance:      true,
			ToolTip:      "kafka单次请求最大处理时间,可以填写单位如1s(1秒)、2m(2分钟)、3h(3小时)",
		},
		OptionDataSourceTag,
	},
	ModeRedis: {
		{
			KeyName:       KeyRedisDataType,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{DataTypeList, DataTypeChannel, DataTypePatterChannel, DataTypeString, DataTypeSet, DataTypeSortedSet, DataTypeHash},
			Description:   "数据读取模式(redis_datatype)",
			ToolTip:       "",
		},
		{
			KeyName:      KeyRedisKey,
			ChooseOnly:   false,
			Default:      "",
			Required:     true,
			Placeholder:  "key1",
			DefaultNoUse: true,
			Description:  "redis键(redis_key)",
			ToolTip:      `Redis监听的键值,在不同模式(redis_datatype)下表示不同含义`,
		},
		{
			KeyName:      KeyRedisAddress,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "127.0.0.1:6379",
			DefaultNoUse: false,
			Description:  "数据库地址(redis_address)",
			ToolTip:      `Redis的地址(IP+端口),默认为"127.0.0.1:6379"`,
		},
		{
			KeyName:      KeyRedisDB,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "db",
			DefaultNoUse: true,
			Description:  "数据库名称(redis_db)",
			ToolTip:      `Redis的数据库名,默认为"0"`,
		},
		{
			KeyName:      KeyRedisHashArea,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "hash模式对应的数据结构域(redisHash_area)",
			Advance:      true,
			ToolTip:      "",
		},
		{
			KeyName:      KeyRedisPassword,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "密码(redis_password)",
			Secret:       true,
			Advance:      true,
		},
		{
			KeyName:      KeyTimeoutDuration,
			ChooseOnly:   false,
			Default:      "5s",
			Required:     true,
			DefaultNoUse: false,
			Description:  "单次读取超时时间(redis_timeout)",
			CheckRegex:   "\\d+[ms]",
			Advance:      true,
			ToolTip:      "每次等待键值数据的超时时间[m(分)、s(秒)]",
		},
		OptionDataSourceTag,
	},
	ModeSocket: {
		{
			KeyName:      KeySocketServiceAddress,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "tcp://127.0.0.1:3110",
			Required:     true,
			DefaultNoUse: true,
			Description:  "socket监听的地址(socket_service_address)",
			ToolTip:      "socket监听的地址[协议://端口],如udp://127.0.0.1:3110",
		},
		{
			KeyName:      KeySocketMaxConnections,
			ChooseOnly:   false,
			Default:      "0",
			DefaultNoUse: false,
			Description:  "最大并发连接数(socket_max_connections)",
			Advance:      true,
			ToolTip:      "仅tcp协议下生效",
		},
		{
			KeyName:       KeySocketSplitByLine,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"false", "true"},
			Default:       "false",
			Advance:       true,
			Description:   "是否按行分隔内容(socket_split_by_line)",
			ToolTip:       "开启后,对socket内容按行进行分隔",
		},
		{
			KeyName:       KeySocketRule,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{SocketRulePacket, SocketRuleLine, SocketRuleJson},
			Default:       SocketRulePacket,
			Advance:       true,
			Description:   "获取方式(socket_rule)",
			ToolTip:       "默认对socket内容按包获取, json仅对tcp有效",
		},
		OptionEncoding,

		{
			KeyName:      KeySocketReadTimeout,
			ChooseOnly:   false,
			Default:      "1m",
			DefaultNoUse: false,
			Description:  "连接超时时间(socket_read_timeout)",
			Advance:      true,
			ToolTip:      "填0为不设置超时",
		},
		{
			KeyName:      KeySocketReadBufferSize,
			ChooseOnly:   false,
			Default:      "65535",
			DefaultNoUse: false,
			Description:  "连接缓存大小(socket_read_buffer_size)",
			Advance:      true,
			ToolTip:      "仅udp协议下生效",
		},
		{
			KeyName:      KeySocketKeepAlivePeriod,
			ChooseOnly:   false,
			Default:      "5m",
			DefaultNoUse: false,
			Description:  "连接保持时长[0为关闭](socket_keep_alive_period)",
			Advance:      true,
			ToolTip:      "填0为关闭keep_alive",
		},
		OptionDataSourceTag,
	},
	ModeHTTP: {
		{
			KeyName:      KeyHTTPServiceAddress,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  DefaultHTTPServiceAddress,
			Required:     true,
			DefaultNoUse: true,
			Description:  "监听的地址和端口(http_service_address)",
			ToolTip:      "监听的地址和端口,格式为:[<http://|https://|不填><ip/host/不填>:port],如 :3000 , 监听3000端口的http请求",
		},
		{
			KeyName:      KeyHTTPServicePath,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  DefaultHTTPServicePath,
			Required:     true,
			DefaultNoUse: true,
			Description:  "监听地址前缀(http_service_path)",
			ToolTip:      "监听的请求地址,如 /data ",
		},
		OptionDataSourceTag,
	},
	ModeScript: {
		{
			KeyName:      KeyExecInterpreter,
			ChooseOnly:   false,
			Default:      "/bin/bash",
			Placeholder:  "/bin/bash",
			Required:     true,
			DefaultNoUse: false,
			Description:  "脚本执行解释器(script_exec_interpreter)",
			ToolTip:      "脚本的解释器",
		},
		{
			KeyName:      KeyScriptParams,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			Placeholder:  "your script interpreter params",
			DefaultNoUse: true,
			Description:  "脚本命令参数(script_params)",
			ToolTip:      "脚本命令参数",
		},
		{
			KeyName:      KeyScriptParamsSpliter,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			Placeholder:  "your script interpreter params spliter",
			DefaultNoUse: true,
			Description:  "脚本命令参数分隔符(script_params_spliter)",
			ToolTip:      "脚本命令参数分隔符,默认为.或者空格",
		},
		{
			KeyName:      KeyScriptContent,
			ChooseOnly:   false,
			Element:      Text,
			Default:      "",
			Required:     false,
			Placeholder:  "your script content/path",
			DefaultNoUse: true,
			Description:  "脚本内容(script_content)",
			ToolTip:      "脚本内容或路径",
		},
		{
			KeyName:      KeyScriptCron,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "00 00 04 * * *",
			DefaultNoUse: false,
			Description:  "定时任务(script_cron)",
			Advance:      true,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:       KeyScriptExecOnStart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(script_exec_onstart)",
			ToolTip:       "",
		},
	},
	ModeCloudWatch: {
		{
			KeyName:      KeyRegion,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "us-east-1",
			DefaultNoUse: true,
			Required:     true,
			Description:  "区域(region)",
			ToolTip:      "服务所在区域",
		},
		{
			KeyName:      KeyNamespace,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "AWS/ELB",
			DefaultNoUse: true,
			Required:     true,
			Description:  "命名空间(namespace)",
			ToolTip:      "Cloudwatch数据的命名空间",
		},
		{
			KeyName:      KeyRoleArn,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Description:  "授权角色(role_arn)",
			Advance:      true,
			ToolTip:      "AWS的授权角色(鉴权第一优先)",
		},
		{
			KeyName:      KeyAWSAccessKey,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Description:  "AK(aws_access_key)",
			ToolTip:      "AWS的access_key(鉴权第二优先), 支持从自定义环境变量(如 YOUR_AWS_AK_ENV)里读取对应值,填写方式为 ${YOUR_AWS_AK_ENV}",
		},
		{
			KeyName:      KeyAWSSecretKey,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Secret:       true,
			Description:  "SK(aws_secret_key)",
			ToolTip:      "AWS的secret_key(鉴权第二优先), 支持从自定义环境变量(如 YOUR_AWS_SK_ENV)里读取对应值,填写方式为 ${YOUR_AWS_SK_ENV}",
		},
		{
			KeyName:      KeyAWSToken,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Description:  "鉴权token(aws_token)",
			Secret:       true,
			ToolTip:      "AWS的鉴权token, 支持从自定义环境变量(如 YOUR_AWS_TOKEN_ENV)里读取对应值,填写方式为 ${YOUR_AWS_TOKEN_ENV}",
		},
		{
			KeyName:      KeyAWSProfile,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Description:  "共享profile(aws_profile)",
			ToolTip:      "鉴权第三优先, 支持从自定义环境变量(如 YOUR_AWS_PROFILE_ENV)里读取对应值,填写方式为 ${YOUR_AWS_PROFILE_ENV}",
		},
		{
			KeyName:      KeySharedCredentialFile,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "选填一种方式鉴权",
			DefaultNoUse: true,
			Description:  "鉴权文件(shared_credential_file)",
			ToolTip:      "鉴权文件路径(鉴权第四优先)",
		},
		{
			KeyName:      KeyCollectInterval,
			ChooseOnly:   false,
			Default:      "5m",
			Placeholder:  "",
			DefaultNoUse: false,
			Description:  "收集间隔(interval)",
			ToolTip:      "最小设置1分钟(1m)",
		},
		{
			KeyName:      KeyRateLimit,
			ChooseOnly:   false,
			Default:      "200",
			Placeholder:  "",
			DefaultNoUse: false,
			Required:     false,
			Description:  "每秒最大请求数(ratelimit)",
			Advance:      true,
			ToolTip:      "请求限速",
		},
		{
			KeyName:      KeyMetrics,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "Latency, RequestCount",
			DefaultNoUse: false,
			Required:     false,
			Description:  "metric名称(metrics)",
			ToolTip:      "可填写多个,逗号连接,为空全部收集",
		},
		{
			KeyName:      KeyDimension,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "LoadBalancerName p-example,LatencyName y-example",
			DefaultNoUse: false,
			Required:     false,
			Description:  "收集维度(dimensions)",
			ToolTip:      "可填写多个,逗号连接,为空全部收集",
		},
		{
			KeyName:      KeyDelay,
			ChooseOnly:   false,
			Default:      "5m",
			Placeholder:  "",
			DefaultNoUse: false,
			Required:     false,
			Description:  "收集延迟(delay)",
			Advance:      true,
			ToolTip:      "根据CloudWatch中数据产生的实际时间确定是否需要增加收集延迟",
		},
		{
			KeyName:      KeyCacheTTL,
			ChooseOnly:   false,
			Default:      "60m",
			Placeholder:  "60m",
			DefaultNoUse: false,
			Required:     false,
			Description:  "刷新metrics时间(cache_ttl)",
			Advance:      true,
			ToolTip:      "从namespace中刷新metrics的周期",
		},
		{
			KeyName:      KeyPeriod,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "1m",
			DefaultNoUse: false,
			Required:     false,
			Description:  "聚合间隔(period)",
			Advance:      true,
			ToolTip:      "从cloudwatch收集数据聚合的间隔",
		},
		OptionDataSourceTag,
	},
	ModeSnmp: {
		{
			KeyName:      KeySnmpReaderName,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "logkit_default_name",
			DefaultNoUse: true,
			Description:  "名称(snmp_reader_name)",
			Advance:      true,
			ToolTip:      "reader的读取名称",
		},
		{
			KeyName:      KeySnmpReaderAgents,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "127.0.0.1:161,10.10.0.1:161",
			Required:     true,
			DefaultNoUse: true,
			Description:  "agents列表(snmp_agents)",
			ToolTip:      "多个可用逗号','分隔",
		},
		{
			KeyName:      KeySnmpTableInitHost,
			ChooseOnly:   false,
			Default:      "127.0.0.1",
			Placeholder:  "127.0.0.1",
			DefaultNoUse: true,
			Description:  "tables初始化连的snmpd服务地址(snmp_table_init_host)",
			ToolTip:      "tables初始化连的snmpd服务地址,默认127.0.0.1",
		},
		{
			KeyName:      KeySnmpReaderTables,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "[{\"table_name\":\"udpLocalAddress\",\"table_oid\":\"1.3.6.1.2.1.31.1.1\"}]",
			DefaultNoUse: true,
			Description:  "tables配置(snmp_tables)",
			ToolTip:      "请填入json数组字符串",
		},
		{
			KeyName:      KeySnmpReaderFields,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: true,
			Description:  "fields配置(snmp_fields)",
			ToolTip:      "请填入json数组字符串",
		},
		{
			KeyName:       KeySnmpReaderVersion,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"1", "2", "3"},
			Default:       "2",
			DefaultNoUse:  true,
			Description:   "snmp协议版本(snmp_version)",
		},
		{
			KeyName:      KeySnmpReaderTimeOut,
			ChooseOnly:   false,
			Default:      "5s",
			Required:     true,
			DefaultNoUse: false,
			Description:  "连接超时时间(snmp_time_out)",
			Advance:      true,
			ToolTip:      "超时时间,单位支持m(分)、s(秒)",
		},
		{
			KeyName:      KeySnmpReaderInterval,
			ChooseOnly:   false,
			Default:      "30s",
			Required:     true,
			DefaultNoUse: false,
			Description:  "收集频率(snmp_interval)",
			Advance:      true,
			ToolTip:      "收集频率,单位支持m(分)、s(秒)",
		},
		{
			KeyName:      KeySnmpReaderRetries,
			ChooseOnly:   false,
			Default:      "3",
			Required:     true,
			DefaultNoUse: false,
			Description:  "重试次数(snmp_retries)",
			Advance:      true,
		},
		{
			KeyName:      KeySnmpReaderCommunity,
			ChooseOnly:   false,
			Default:      "public",
			Placeholder:  "public",
			DefaultNoUse: true,
			Description:  "community/秘钥(snmp_version)",
			ToolTip:      "community秘钥,没有特殊设置为public[版本1/2有效]",
		},
		{
			KeyName:      KeySnmpReaderMaxRepetitions,
			ChooseOnly:   false,
			Default:      "50",
			DefaultNoUse: false,
			Description:  "最大迭代次数(snmp_max_repetitions)",
			Advance:      true,
			ToolTip:      "版本2/3有效",
		},
		{
			KeyName:      KeySnmpReaderContextName,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "context名称(snmp_version)",
			Advance:      true,
			ToolTip:      "版本3有效",
		},
		{
			KeyName:       KeySnmpReaderSecLevel,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{SnmpReaderAuthProtocolNoAuthNoPriv, SnmpReaderAuthProtocolAuthNoPriv, SnmpReaderAuthProtocolAuthPriv},
			Default:       SnmpReaderAuthProtocolNoAuthNoPriv,
			DefaultNoUse:  true,
			Description:   "安全等级(snmp_sec_level)",
			Advance:       true,
			ToolTip:       "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderSecName,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "认证名称(snmp_sec_name)",
			Advance:      true,
			ToolTip:      "版本3有效",
		},
		{
			KeyName:       KeySnmpReaderAuthProtocol,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{SnmpReaderAuthProtocolMd5, SnmpReaderAuthProtocolSha, SnmpReaderAuthProtocolNoAuth},
			Default:       SnmpReaderAuthProtocolNoAuth,
			DefaultNoUse:  false,
			Description:   "认证协议(snmp_auth_protocol)",
			Advance:       true,
			ToolTip:       "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderAuthPassword,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "认证密码(snmp_auth_password)",
			Secret:       true,
			Advance:      true,
			ToolTip:      "版本3有效,支持从自定义环境变量(如 YOUR_AUTH_PASSWORD_ENV)里读取对应值,填写方式为 ${YOUR_AUTH_PASSWORD_ENV}",
		},
		{
			KeyName:       KeySnmpReaderPrivProtocol,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{SnmpReaderAuthProtocolDes, SnmpReaderAuthProtocolAes, SnmpReaderAuthProtocolNoPriv},
			Default:       SnmpReaderAuthProtocolNoPriv,
			DefaultNoUse:  false,
			Description:   "隐私协议(snmp_priv_protocol)",
			Advance:       true,
			ToolTip:       "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderPrivPassword,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "隐私密码(snmp_priv_password)",
			Secret:       true,
			Advance:      true,
			ToolTip:      "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderEngineID,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "snmp_priv_engine_id",
			Advance:      true,
			ToolTip:      "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderEngineBoots,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "snmp_engine_boots",
			Advance:      true,
			ToolTip:      "版本3有效",
		},
		{
			KeyName:      KeySnmpReaderEngineTime,
			ChooseOnly:   false,
			Default:      "",
			DefaultNoUse: false,
			Description:  "snmp_engine_time",
			Advance:      true,
			ToolTip:      "版本3有效",
		},
	},
	ModeCloudTrail: {
		{
			KeyName:      KeyS3Region,
			ChooseOnly:   false,
			Placeholder:  "us-east-1",
			DefaultNoUse: false,
			Required:     true,
			Description:  "区域(s3_region)",
			ToolTip:      "S3服务区域",
		},
		{
			KeyName:      KeyS3AccessKey,
			ChooseOnly:   false,
			Placeholder:  "访问密钥 ${YOUR_S3_AK_ENV}",
			DefaultNoUse: false,
			Required:     true,
			Description:  "AK(s3_access_key)",
			ToolTip:      "访问密钥ID(AK), 支持从自定义环境变量(如 YOUR_S3_AK_ENV)里读取对应值",
		},
		{
			KeyName:      KeyS3SecretKey,
			ChooseOnly:   false,
			Placeholder:  "访问密钥 ${YOUR_S3_SK_ENV}",
			DefaultNoUse: false,
			Required:     true,
			Secret:       true,
			Description:  "SK(s3_secret_key)",
			ToolTip:      "与访问密钥ID结合使用的密钥(SK), 支持从自定义环境变量(如 YOUR_S3_SK_ENV)里读取对应值",
		},
		{
			KeyName:      KeyS3Bucket,
			ChooseOnly:   false,
			Placeholder:  "",
			DefaultNoUse: false,
			Required:     true,
			Description:  "存储桶名称(s3_bucket)",
			ToolTip:      "存储桶名称",
		},
		{
			KeyName:      KeyS3Endpoint,
			ChooseOnly:   false,
			Placeholder:  "s3-REGION.amazonaws.com",
			DefaultNoUse: false,
			Required:     false,
			Description:  "终端节点地址(s3_endpoint)",
			Advance:      true,
			ToolTip:      "S3终端节点",
		},
		{
			KeyName:      KeyS3Prefix,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "",
			DefaultNoUse: false,
			Description:  "文件前缀(s3_prefix)",
			Advance:      true,
			ToolTip:      "文件前缀",
		},
		{
			KeyName:      KeySyncDirectory,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  "",
			DefaultNoUse: false,
			Advance:      true,
			Description:  "本地同步目录,不填自动生成(sync_directory)",
			ToolTip:      "本地同步目录,不填自动生成",
		},
		{
			KeyName:      KeySyncInterval,
			ChooseOnly:   false,
			Default:      "5m",
			Placeholder:  "",
			DefaultNoUse: false,
			Advance:      true,
			Description:  "文件同步间隔(sync_interval)",
			ToolTip:      "文件同步的最小间隔(1m)",
		},
		{
			KeyName:      KeySyncConcurrent,
			ChooseOnly:   false,
			Default:      "5",
			Placeholder:  "",
			DefaultNoUse: false,
			Advance:      true,
			Description:  "文件同步的并发个数(sync_concurrent)",
			ToolTip:      "文件同步的最小并发个数(1)",
		},
		OptionKeyValidFilePattern,
		OptionKeySkipFileFirstLine,
		OptionDataSourceTag,
	},
	ModeHTTPFETCH: {
		{
			KeyName:       KeyHttpMethod,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"GET", "POST", "PUT"},
			Default:       "GET",
			DefaultNoUse:  false,
			Description:   "Http 请求方法",
			Advance:       false,
			ToolTip:       "Http 请求方法,暂只支持 GET、POST 和 PUT 方法",
		},
		{
			KeyName:      KeyHTTPServiceAddress,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  DefaultHTTPServiceAddress,
			Required:     true,
			DefaultNoUse: true,
			Description:  "监听的地址和端口(http_service_address)",
			ToolTip:      "监听的地址和端口,格式为:[<ip/host>:port],如 :3000 , 监听3000端口的http请求",
		},
		{
			KeyName:      KeyHTTPServicePath,
			ChooseOnly:   false,
			Default:      "",
			Placeholder:  DefaultHTTPServicePath,
			Required:     true,
			DefaultNoUse: true,
			Description:  "监听地址前缀(http_service_path)",
			ToolTip:      "监听的请求地址,如 /data ",
		},
		{
			KeyName:      KeyHttpCron,
			ChooseOnly:   false,
			Default:      "00 10 * * * *",
			DefaultNoUse: false,
			Description:  "定时任务(http_cron)",
			Advance:      false,
			ToolTip:      `定时任务触发周期,直接写"loop"循环执行,crontab的写法,类似于* * * * * *,对应的是秒(0~59),分(0~59),时(0~23),日(1~31),月(1-12),星期(0~6),填*号表示所有遍历都执行`,
		},
		{
			KeyName:       KeyHttpExecOnStart,
			Element:       Radio,
			ChooseOnly:    true,
			ChooseOptions: []interface{}{"true", "false"},
			Default:       "true",
			DefaultNoUse:  false,
			Description:   "启动时立即执行(http_exec_onstart)",
			ToolTip:       "启动时立即执行一次",
		},
		{
			KeyName:      KeyHttpDialTimeout,
			ChooseOnly:   false,
			Default:      "30",
			Required:     true,
			DefaultNoUse: false,
			Description:  "http请求超时链接时间(http_dial_timeout)",
			Advance:      true,
			ToolTip:      "http 请求超时时间,单位为秒",
		},
		{
			KeyName:      KeyHttpResponseTimeout,
			ChooseOnly:   false,
			Default:      "30",
			Required:     true,
			DefaultNoUse: false,
			Description:  "http响应超时时间(http_response_timeout)",
			Advance:      true,
			ToolTip:      "http 请求超时时间,单位为秒",
		},
		{
			KeyName:      KeyHttpHeaders,
			ChooseOnly:   false,
			Default:      "{\"Content-Type\": \"application/json;charset=utf-8\", \"X-Appid\":\"1381140528\"}",
			Placeholder:  "{\"Content-Type\": \"application/json;charset=utf-8\", \"X-Appid\":\"1381140528\"}",
			Required:     false,
			DefaultNoUse: true,
			Description:  "http请求头(http_headers)",
			Advance:      true,
		},
		{
			KeyName:      KeyHttpBody,
			ChooseOnly:   false,
			Default:      "",
			Required:     false,
			DefaultNoUse: true,
			Description:  "http请求体(http_body)",
			Advance:      true,
		},
		{
			KeyName:      KeyHttpPageNo,
			ChooseOnly:   false,
			Default:      "1",
			Required:     false,
			DefaultNoUse: true,
			Description:  "魔法变量$(pageNum)的值(http_page_num),默认从1开始",
			Advance:      true,
			ToolTip:      "只有在第一次任务启动运行的时候有效",
		},
		{
			KeyName:      KeyHttpPageSize,
			ChooseOnly:   false,
			Default:      "10",
			Required:     false,
			DefaultNoUse: true,
			Description:  "魔法变量$(pageSize)的值(http_page_size)",
			Advance:      true,
		},
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL