1. 接入概述
本日志平台采用统一的技术架构,各系统日志通过Logstash进行标准化处理后存入Elasticsearch。研发人员需要按照以下规范配置Logstash,确保日志格式统一。
2. 标准配置模板
input {
kafka {
bootstrap_servers => "10.126.168.86:9093,10.126.168.87:9093,10.126.168.88:9093,10.126.168.89:9093,10.126.168.90:9093"
topics => ["YOUR_TOPIC_NAME"] # 需替换为各系统专属topic
codec => "json"
group_id => "logstash-group" # 可按系统区分group_id
client_id => "logstash-client-YOUR_SYSTEM" # 需替换为系统标识
consumer_threads => 10
jaas_path => "/usr/local/logstash/config/client.jaas"
security_protocol => "SASL_PLAINTEXT"
sasl_mechanism => "SCRAM-SHA-256"
auto_offset_reset => "latest"
decorate_events => true
}
}
filter {
# 标准字段解析(必须保留)
grok {
match => { "log" => "%{TIMESTAMP_ISO8601:log_time}\s*\|\s*%{LOGLEVEL:log_level}\s*\|\s*%{DATA:trace_id}\s*\|\s*%{DATA:request_id}\s*\|\s*%{DATA:sys_id}\s*\|\s*%{DATA:thread}\s*\|\s*%{DATA:class}\s*\|\s*%{DATA:log_type}\s*\|\s*%{DATA:req_class}\s*\|\s*%{DATA:req_method}\s*\|\s*%{DATA:out_sys_id}\s*\|\s*%{DATA:out_biz_from}\s*\|\s*%{DATA:out_biz_scenario}\s*\|\s*%{DATA:invoke_result}\s*\|\s*%{DATA:resp_code}\s*\|\s*%{DATA:resp_msg}\s*\|\s*%{DATA:taken_ms}\s*\|\s*%{GREEDYDATA:log_msg}" }
}
# 时间处理(必须保留)
date {
match => ["log_time", "ISO8601"]
timezone => "+08:00"
target => "@timestamp"
}
# 系统标识注入(必须修改)
mutate {
add_field => { "system" => "YOUR_SYSTEM_NAME" } # 需替换为系统名称
remove_field => ["log_time", "_p", "@version"]
}
# 自定义字段处理(可选)
# 可在此处添加系统特有的字段处理逻辑
}
output {
elasticsearch {
hosts => ["http://10.126.168.86:9500","http://10.126.168.87:9500","http://10.126.168.88:9500"]
index => "log_YOUR_SYSTEM_write_alias" # 需替换为系统专属索引别名
user => "xxx"
password => "撒啊洒洒"
}
}
3. 配置说明
3.1 必须修改项
-
Kafka Topic:
topics => ["YOUR_TOPIC_NAME"]
替换为分配给各系统的专属topic- 命名规范:
[系统简称]-log
(如:indicator-log
)
-
Client ID:
client_id => "logstash-client-YOUR_SYSTEM"
替换为系统标识
-
系统标识:
add_field => { "system" => "YOUR_SYSTEM_NAME" }
替换为系统英文名称
-
ES索引别名:
index => "log_YOUR_SYSTEM_write_alias"
替换为系统专属索引别名- 命名规范:
log_[系统简称]_write_alias
(如:log_indicator_write_alias
)
3.2 可选修改项
-
Kafka Group ID:
- 如需独立消费组可修改
group_id
- 如需独立消费组可修改
-
Consumer线程数:
- 根据日志量调整
consumer_threads
(默认10)
- 根据日志量调整
-
自定义字段处理:
- 可在filter部分添加系统特有字段的处理逻辑
4. 日志格式要求
所有接入系统的日志必须遵循以下格式标准:
[时间戳]|[日志级别]|[trace_id]|[request_id]|[系统ID]|[线程名]|[类名]|[日志类型]|[请求类]|[请求方法]|[外部系统ID]|[业务来源]|[业务场景]|[调用结果]|[响应码]|[响应消息]|[耗时(ms)]|[日志内容]
示例日志:
2023-08-13T10:15:30.456+08:00|INFO|a1b2c3d4|req123|sys01|http-nio-8080-exec-1|com.example.Service|API|com.example.Controller|getUser|extsys01|order|create|SUCCESS|200|OK|45|用户查询成功 userId=1001
5. 接入流程
- 申请Kafka Topic
- 获取ES索引别名
- 修改Logstash配置模板
- 部署测试
- 验证日志采集
- 正式上线
6. 注意事项
-
TraceID规范:
- 必须使用公司统一的TraceID生成规则
- 跨系统调用必须传递TraceID
-
日志级别:
- 只允许使用标准级别: TRACE, DEBUG, INFO, WARN, ERROR, FATAL
-
敏感信息:
- 禁止在日志中记录密码、密钥等敏感信息
-
性能影响:
- 高频日志(>1000条/秒)需提前报备
7. 技术支持
如有问题请联系数据中台日志平台团队