logstash收录应用日志写入victorialogs

15 阅读2分钟

一、背景

logstash消费kakfa,然后写进victorialogs。

暂时无法在飞书文档外展示此内容




二、准备与问题

  1. logstash写victorialogs不同topic日志混合问题

在logstash处理期间添加一个topic_name字段,来实现区分日志来源。

但是不用path.data的话,不管多个logstash实例还是一个logstash实例,最终写进victorialogs后的数据都会混合在一起。

  1. logstash性能

  2. grok




三、部署


cd /opt/logstash && wget http://172.21.240.67:8666/logstash-9.1.3-linux-x86_64.tar.gz
#
tar zxvf logstash-9.1.3-linux-x86_64.tar.gz
#
cd /opt/logstash/logstash-9.1.3/config



四、一个logstash实例对应一堆topic的conf

  1. 目录

  1. 命令

  2. 缺点

写进victorialogs后,所有topic都聚合在一起,没有可以区分的字段。

通过logstash写进去的topic_name,该字段的值成为一个数字,全部混合在一起。

  如:topic_name:["mid-payhub","mid-uh-go-server","infra-s-innerflowcontrol-janus-nginx"]




五、同台主机多个logstash进程

  1. 目录

  1. 命令


# 启动mid-uh
nohup sudo -u logstash /opt/logstash/logstash-9.1.3/bin/logstash -f /opt/logstash/logstash-9.1.3/config/conf.d/y4-mid-uh.conf --path.data /opt/logstash/logstash-9.1.3/config/conf.d/mid-uh > /opt/logstash/logstash-9.1.3/config/conf.d/y4-mid-uh.log  2>&1 &


# 启动 mid-payhub
nohup sudo -u logstash /opt/logstash/logstash-9.1.3/bin/logstash -f /opt/logstash/logstash-9.1.3/config/conf.d/y4-mid-payhub.conf --path.data /opt/logstash/logstash-9.1.3/config/conf.d/mid-payhub > /opt/logstash/logstash-9.1.3/config/conf.d/y4-mid-payhub.log 2>&1 &
  1. 缺点

写进victorialogs后,topic_name字段中的值变成一个数组,混合了全部的topic。




六、path.data

  1. 目录

  2. 命令

# 
nohup sudo -u logstash /opt/logstash/logstash-9.1.3/bin/logstash -f /opt/logstash/logstash-9.1.3/config/conf.d/mid-orderhub.conf  --path.data /opt/logstash/logstash-9.1.3/config/conf.d/mid-orderhub > /opt/logstash/logstash-9.1.3/config/conf.d/mid-orderhub.log 2>&1 &


# 
nohup sudo -u logstash /opt/victoria-logs-data/logstash-9.1.3/bin/logstash -f /opt/mid-payhub/mid-payhub.conf --path.data /opt/mid-payhub/data > /opt/mid-payhub/payhub.log 2>&1 &



七、pipelines.yml实现多topic隔离

  1. 目录

pipelines.yml配置文件

                                                                                                                                                              
- pipeline.id: uh-go                                                                                                                                          
  pipeline.batch.size: 10                                                                                                                                     
  pipeline.workers: 1                                                                                                                                         
  pipeline.batch.delay: 50                                                                                                                                    
  path.config: "/opt/logstash/logstash-9.1.3/config/conf.d/mid-uh-go-server.conf"                                                                             
                                                                                                                                                              
- pipeline.id: payhub                                                                                                                                         
  pipeline.workers: 1                                                                                                                                         
  pipeline.batch.size: 10                                                                                                                                     
  pipeline.batch.delay: 50                                                                                                                                    
  path.config: "/opt/logstash/logstash-9.1.3/config/conf.d/mid-payhub.conf"          
  1. 命令

# 
nohup sudo -u logstash /opt/logstash/logstash-9.1.3/bin/logstash \
  --path.settings /opt/logstash/logstash-9.1.3/config \
  > /opt/logstash/logstash-9.1.3/config/logstash.log 2>&1 &
#

3. ## 优点

通过管道实现,一个logstash实例对应多个topic,同时多个topic之间相互没有干扰。




八、对比

使用Pipeline的方式,结构简单,只需要一个logstash进程就可以实现多个topic相互隔离。




九、补充

  1. logstash的参数解释