ELK日志收集分析系统配置

ELK是日志收益与分析的利器。

1、elasticsearch集群搭建

2、logstash日志收集

我这里的实现分如下2步,中间用redis队列做缓冲,可以有效的避免es压力过大:

1、n个agent对n个服务的log做日志收集(1对1的方式),从日志文件解析数据,存入broker,这里用的是redis的发布订阅模式的消息队列,当然你可以选用kafka,redis比较方便;

2、indexer做日志汇总,从redis队列中拿数据入es;

下面给出agent和index的配置示例:

1、driver_schedule.conf

input {
  file {
      #这是日志路径
      path => [
          "/home/xiaoju/driver-schedule-api/logs/driver-schedule-api.info.*",
          "/home/xiaoju/driver-schedule-api/logs/driver-schedule-api.error.*"
        ]
      #排除路径,支持glob展开,但是不递归
      exclude => [
          "access.*"
      ]
      #开始位置,beginning从日志开始读取
      start_position => "beginning"
      #sincedb指示的文件,记录日志读取位置
      sincedb_path => "/home/xiaoju/yangfan/local/logstash-1.4.2/sincedb/driver_schedule_progress"
      #添加记录字段
      add_field => {
          "server" => "driver_schedule"
      }
      #编码器,正则pattern多行合并
      codec => multiline {
          pattern => "^\d+:\d+"
          negate => true
          what => "previous"
      }
  }
}

filter {
    #匹配路径中包涵info
    if [path] =~ "info" {
        #mutate更改值
        mutate {
            replace => { "type" => "info" }
        }
        grok {
            match => { "message" => "%{COMBINEDAPACHELOG}" }
        }
    }else if [path] =~ "error" {
        mutate {
            replace => { "type" => "error" }
        }
    } else {
        mutate { replace => { "type" => "unknow" } }
    }

    date {
        match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
    }
}

output {
    #debug格式化打印
    #stdout{codec => rubydebug}
    redis {
        host => "10.94.99.55"
        #这里用的是redis订阅模式,对应indexer的data_type应是pattern_channel
        data_type => "channel"
        port => 6379
        db => 5
        key => "logstash:%{[server]}"
    }
}

run起来:

nohup ./bin/logstash -f ./conf/agent/driver_schedule.conf &

2、indexer.conf

input {
    redis {
        host => "10.94.99.55"
        port => 6379
        db => 5
        #如果这里选择了pattern_channel, 采用的是redis的订阅方式, agent里data_type就要对应channel
        data_type => "pattern_channel"
        #这是所有的key的匹配pattern
        key => "logstash:*"
    }
}

output {
    elasticsearch {
        embedded => false
        protocol => "http"
        host => "10.94.99.56"
        port => 9211
        #配置es索引名字
        index => "%{[server]}"
        #配置es索引类型
        index_type => "%{[type]}"
    }
    #debug使用, 格式化打印
    #stdout{codec => rubydebug}
}

run起来:

nohup ./bin/logstash -f ./conf/indexer/indexer.conf &

3、kibana配置

网上教程比较多,这里我只mark一些问题的解决方法:

1、connection failure: 

checklist:

1、配置kibana的config.js里的es地址

2、如果es版本>1.4则需要在es的配置里加入

http.cors.allow-origin: "/.*/"

http.cors.enabled: true

注意事项:

1、ES和logstash最好选用相同大版本,不然可能写不进去

2、logstash会写一个syncsys的文件,记录上次读取文件到什么地方

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

WS-Eventing、WS-Transfer Web服务标准

传输(Transfer)     WS-Transfer详细说明了对通过Web服务进行访问的数据实体进行管理所需的基本操作。要了解WS-Transfer需要介绍...

19410
来自专栏Flutter&Dart

DartVM服务器开发(第八天)--http服务端框架

Aqueduct是一个HTTP Web服务器框架,用于构建用Dart编写的REST应用程序。

4754
来自专栏幸山的专栏

精通yum配置以及问题解决

yum基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁...

1K0
来自专栏SnailTyan

Linux的/bin、/sbin、/usr/sbin、/usr/bin、/usr/local/bin、/usr/local/sbin

1、Linux的/bin、/sbin、/usr/sbin、/usr/bin、/usr/local/bin、/usr/local/sbin /bin bin为...

2409
来自专栏游戏杂谈

使用as工具包解压zip文件

在一些请求静态资源较多的地方,如webgame中要请求很多数值相关的信息,为了减少请求数以及请求的文件大小,可以通过zip工具先将文件合并后进行压缩,得到一个z...

1173
来自专栏假装我会写代码

Composer 版本约束表达式的使用

1033
来自专栏北京马哥教育

Linux之任务计划

用过windows的同学应该都知道在控制面板中有一个“任务计划”选项,我们可以通过向导设置让计算机在某个时间点或者开机时运行某个脚本或者批处理等等,方便我们的...

2914
来自专栏北京马哥教育

最全 Linux 磁盘管理基础知识全汇总

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 一、存储设备的挂载和卸载 存储设备的挂载和卸载常用操作命令:fdisk -l、df、du、...

4298
来自专栏mini188

MongoDB安装与使用体验

1、获取并安装 具体的安装包可以到官方网站下载:http://www.mongodb.org/downloads 我看着教程就下载了linux版本吧,也不是很...

2476
来自专栏大数据平台TBDS

kafka如何彻底删除topic及数据

删除kafka topic及其数据,严格来说并不是很难的操作。但是,往往给kafka 使用者带来诸多问题。项目组之前接触过多个开发者,发现都会偶然出现无法彻底删...

3.5K8

扫码关注云+社区

领取腾讯云代金券