前言
目前线上环境nginx日志一天10亿左右,日志已经实时放入kafka队列中,想实时监控分析, 首先,理清我们的需求:1.实时监控 reponse的情况
2.实时监控 request path 的流量变化
3.实时监控 请求时间
4.从request 里面解析其中的参数,监控变化量
上面最难的是从request解析指定的字段出来做监控,这里必须经过一次解析后才能做统计
想了几种方案:
- 最先想到的是搭建ES集群,利用ES集群实现实时聚合搜索
- 利用现在流行的flink spark storm 等实时流处理方案
- 利用现有的presto ,实现presto on kafka
一、方案选取
根据我们现有的实际情况,不方便增加更多的机器,也没有人专门写代码,所以选择了第3种
kafka --> logstash --> kafka --> presto
二、各项配置
1.logstash配置
配置文件如下:
# 我们的nginx日志是按照竖线分割的 xx|xx|x|x|
input {
kafka {
topics => "nginx"
group_id => "logstash"
bootstrap_servers => "192.168.x.xx:9092"
codec => "plain"
}
}
filter{
# 提取需要的字段,不是每个字段都用到了
mutate {
split => {
"message" => "|" }
add_field => {