关于logstash同步服务器日志的问题分析

一.问题描述

​ 生产应用使用了两台服务器(后面叫服务器1、2),es和kibana搭建在另外一台服务器(后面叫服务器3)上,一共三台服务器。计划是将logstash搭建在es和kibana那一台上,集中管理。所以现在的问题是如何在服务器3上同步到服务器1、2的日志?

二.方法1

​ 查阅资料发现,logstash也支持类似集群的方式。在一台机器上搭建server端,另外的搭成client端。将client的日志同步到server端即可。具体配置如下:

​ 服务端conf:

input {
  tcp {
	mode => "server"
	port => 9600
	ssl_enable => false
  }
}
filter {
    json {
        source => "message"
    }
}
output {
    file {
        path => "/opt/lampp/crm_ceshi/logECO/%{+YYYY-MM-dd}/%{servip}-%{filename}"
        codec => line { format => "%{message}"}
    }
}

​ 客户端conf:

input{
    file {
        path => ["/opt/lampp/crm_ceshi/logECO/2018-10-30/agreeRefundToElemeV2.txt"]
        type => "ecolog"
        start_position => "beginning"
		sincedb_path => "/opt/tmp/logstash-6.4.2/data/plugins/inputs/file/.sincedb_3f3dc7129f441b61d81b1acadb65ed4e"
    }
}
filter {
    if [type] =~ /^ecolog/ {
        ruby {
            code => "file_name = event.get('path').split('/')[-1]
					 event.set('file_name',file_name)
					 event.set('servip','客户端IP')"
        }
        mutate {
            rename => {"file_name" => "filename"}
        }
    }
}
output {
	tcp {
        host  => "服务端ip"
        port  => 9600
        codec => json_lines
    }
}

​ 由于我这边机器不多,所以没有考虑这种方式。

三.方法2

​ 写个定时脚本,在每台机器上定时同步日志文件到服务器3。其实也是一个可行的办法,因为定时脚本可以设置时间,如果设置的时间短点的话,应该也是可以满足一定需求的。而且脚本也不复杂,scp加cron基本搞定。由于时效不好控制,赞没有采用。

四.方法3

​ 每台机器都同一搭建logstash,然后直接往对应的es上送。想来想去,这样可以减少集群模式下server端的搭建,同时互不影响。就采用这种方式了。具体配置比较简单,如下:

input {
  file{
    path => ['/app/logs/myapp/2021*/*.log']
    type => 'elasticsearch'
    codec => "json"
    start_position => "beginning"
  }
}

output {
  elasticsearch {
    hosts => ["http://xx.xx.xx.xx:9201"]
    index => "myapp-log-%{+YYYY.MM.dd}"
  }
}

五.另外遇到的一个关于启动的问题

​ 使用如下命令启动:

./bin/logstash -f ./config/myconf.conf & 

​ 发现可以同步,日志也能送到es,但是一旦退出服务器控制台,再次进入发现:后续的日志并没有再同步。所以logstash还是只能每天去定时启动吗??

​ 使用如下命令:

ps -ef|grep logstash

​ 发现,这个logstash进程是一直在的,可是为什么没有一直同步呢?具体我也没有弄清楚,但是找到了解决办法,杀掉logstash的进程(kill -9)后,使用如下命令启动

nohup ./bin/logstash -f ./config/myconf.conf & 

​ 关掉控制台,去kibana中发现也可以同步日志了。至此问题解决

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值