💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
log-pilot 有两种工具对日志进行收集 fluentd filebeat 这里使用的是filebeat 对日志文件进行采集。 为了更好的对java 的日志进行采集 需要进行多行的日志收集 # 方法一、未验证 拉取代码 修改模板 ``` git clone https://github.com/AliyunContainerService/log-pilot.git cd log-pilot vim assets/filebeat/filebeat.tpl ``` 添加以下行 ``` {{range .configList}} - type: log enabled: true paths: - {{ .HostDir }}/{{ .File }} multiline.pattern: '^\[2' #新增,正则条件,以[开头 multiline.negate: true #新增 multiline.match: after #新增 multiline.max_lines: 10000 #新增 scan_frequency: 10s fields_under_root: true {{if .Stdout}} docker-json: true {{end}} {{if eq .Format "json"}} json.keys_under_root: true {{end}} fields: {{range $key, $value := .Tags}} {{ $key }}: {{ $value }} {{end}} {{range $key, $value := $.container}} {{ $key }}: {{ $value }} {{end}} tail_files: false close_inactive: 2h close_eof: false close_removed: true clean_removed: true close_renamed: false {{end}} ``` ## **构建镜像** ``` # 需要修改Dockerfile.filebeat内部分内容 vim Dockerfile.filebeat # 修改版本 ENV FILEBEAT_VERSION=6.1.1 # 修改软件源为官方的,阿里云404 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -P /tmp/ && \ # 打包镜像 cd log-pilot/ && ./build-image.sh ``` # 方法二、未验证 https://www.jianshu.com/p/d4ec9deecc0b 拉取代码 修改模板 ``` git clone https://github.com/AliyunContainerService/log-pilot.git cd log-pilot vim assets/filebeat/filebeat.tpl ``` 添加以下行 ``` {{range .configList}} - type: log   enabled: true   paths:       - {{ .HostDir }}/{{ .File }}   scan_frequency: 10s   fields_under_root: true   {{range $key, $value := .Tags}}   {{if eq $key "java"}} # 如果tag的key是java就多行采集 和网上的不一样   multiline.pattern: '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]' #新增正则条件,以日期开头  网上抄的   multiline.negate: true                                          #新增 网上抄的   multiline.match: after                                          #新增  网上抄的   multiline.max_lines: 10000                                      #新增  网上抄的   {{end}}   {{end}}   {{if .Stdout}}   docker-json: true   {{end}}   {{if eq .Format "json"}}   json.keys_under_root: true   {{end}}   fields:       {{range $key, $value := .Tags}}       {{ $key }}: {{ $value }}       {{end}}       {{range $key, $value := $.container}}       {{ $key }}: {{ $value }}       {{end}}   tail_files: false   close_inactive: 2h   close_eof: false   close_removed: true   clean_removed: true   close_renamed: false {{end}} ``` ## **构建镜像** ``` # 需要修改Dockerfile.filebeat内部分内容 vim Dockerfile.filebeat # 修改版本 ENV FILEBEAT_VERSION=6.1.1 # 修改软件源为官方的,阿里云404 wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-${FILEBEAT_VERSION}-linux-x86_64.tar.gz -P /tmp/ && \ # 打包镜像 cd log-pilot/ && ./build-image.sh ``` ## **安装log-pilot** ## **安装kafka** ## **安装logstash** ## **配置java服务yaml** `deploy.spec.template.spec.containers.env`下面加一条 ``` - name: aliyun_logs_crm # crm这个是topic需要和logstash配置的一样 value: stdout #容器中的日志有2个,一个access日志一个process日志,日志输出的时候,这个两个都会输出。 所以在日志采集的时候是不是可以直接配置具体路径只采集process日志,还没研究过。 # 目前只启用了这条,能顺利获取到日志。下面的设置还没验证过。         - name: aliyun_logs_crm              value: "/src/logs/console.log"   #需要收集的日志路径         - name: aliyun_logs_crm_tags           value: "topic=sit-log,java=java"  #kafka topic         volumeMounts:         - mountPath: /src/logs           name: datalog ``` ## **配置logstash消费kafka** ``` input {   kafka {     bootstrap_servers => ["xxx:9092, xxx :9092, xxx :9092"]     group_id => "logstash"     auto_offset_reset => "latest" #earliest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,从头开始消费 #latest 当各分区下有已提交的offset时,从提交的offset开始消费;无提交的offset时,消费新产生的该分区下的数据     consumer_threads => 3     decorate_events => true #此属性会将当前topic、offset、group、partition等信息也带到message中     topics => ["crm"] # 我们上边配的  topic     codec => "json" } } filter {     if [java] != "java" {  #判断是不是字段java,方便处理json和java多行       json { source => "message"}    #再进行解析     } } output { #stdout { codec => rubydebug } # 调试的时候记得打开 if  [java] == "java" { #通过不同的tag 指向不同的index   elasticsearch {     hosts => ["http://172.17.187.169:9200"]     index => "sit-micr-%{+YYYY.MM.dd}"     } } if [vytype] == "mobile" {   elasticsearch {     hosts => ["http://172.17.187.169:9200"]     index => "sit-mobile-%{+YYYY.MM.dd}"     } } } ``` 参考: https://www.cnblogs.com/caoweixiong/p/12691458.html https://blog.csdn.net/jack_shuai/article/details/109986355 https://segmentfault.com/a/1190000016595992