logstash接收kafka日志

需求:logstash从kafka中消费数据,并通过udp转发出去。kafka中的日志格式为json,其中formatlog下面为需求数据,利用logstash提取formatlog里面的数。

logstash配置:

input {	kafka {
              bootstrap_servers => "192.168.149.101:9092" #这里可以是kafka集群,如"192.168.149.101:9092,192.168.149.102:9092,192.168.149.103:9092"
              group_id => "host_log"
              client_id => "logstash1" #注意,多台logstash实例消费同一个topics时,client_id需要指定不同的名字
              auto_offset_reset => "latest"
	          topics => ["host"]
       	      add_field => {"logs_type" => "host"}
	          codec => json { charset => "UTF-8" }
             }

	    kafka {
              bootstrap_servers => "192.168.149.101:9092"
              group_id => "vpn_log"
              client_id => "logstash1"
              auto_offset_reset => "latest"
	          topics => ["vpn"]	
	          add_field => {"logs_type" => "vpn"}		
 	          codec => json { charset => "UTF-8" }
             }

}

filter { mutate {
		 remove_field => ["@version","host","@timestamp","type"] # 删除字段
		 replace => {"message" => "%{[formatlog]}"} #重写message,只保留json中的formatlog
		 }	
 }

output { 
		#stdout{}
		if[logs_type] == "host" {
	   		syslog { 
		   		appname => "host"
		   		host => "127.0.0.1"
		   		port => "8001"
		   		protocol => "udp"
			}
	}
	
		if[logs_type] == "vpn" {
       		syslog { 
           		appname => "vpn"
           		host => "127.0.0.1"
           		port => "8002"
           		protocol => "udp"
         }
    }
}

说明: 以上配置中加入了group_id参数,group_id是一个的字符串,唯一标识一个group,具有相同group_id的consumer构成了一个consumer group,这样启动多个logstash进程,只需要保证group_id一致就能达到logstash高可用的目的,一个logstash挂掉同一Group内的logstash可以继续消费

注意事项:

多台logstash实例消费同一个topics时,需要保证kafka的分区不能只有一个,logstash的实例数不能大于kafka的分区数。

kafka查看服务端topics、consumer group状态命令

以下命令中使用的bootstrap–server(即broker)地址为: 192.168.149.101:9092

1、查看kafka topic列表,使用–list参数
在本地kafka客户端安装目录下执行以下命令:

bin/kafka-topics.sh --bootstrap-server 192.168.149.101:9092 --list

2、查看kafka特定topic的详情,使用–topic与–describe参数,如查看topics:vpn

bin/kafka-topics.sh --bootstrap-server 192.168.149.101:9092 --describe topics vpn

3、查看consumer group列表,使用–list参数

bin/kafka-consumer-groups.sh --bootstrap-server 192.168.149.101:9092 --list

4、查看特定consumer group 详情,使用–group与–describe参数,如group_id:vpn_log

bin/kafka-consumer-groups.sh --bootstrap-server 192.168.149.101:9092 --group vpn_log --describe

其中依次展示group名称、消费的topic名称、partition id、consumer group最后一次提交的offset、最后提交的生产消息offset、消费offset与生产offset之间的差值、当前消费topic-partition的group成员id.

5、消费

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.149.101:9092 --topic vpn --from-beginning
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jepson2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值