通过ELK快速搭建集中化日志平台

  • A+
所属分类:资源分享

在项目初期的时候,大家都是赶着上线,一般来说对日志没有过多的考虑,当然日志量也不大,所以使用log4net就够了,但随着应用的越来越多,日志散落在各个服务器的logs文件夹下,确实有点不大方便,这个时候就想到了,在log4net中配置mysql的数据源,不过这里面有个坑,熟悉log4net的同学知道写入mysql有一个batch的阈值,比如说batchcache中有100条,才写入mysql,这样的话,就会有一个延迟的效果,而且如果batchcache中不满100条的话,在mysql中是看不到最新的100条日志。而且采用中心化mysql,涉及到tcp传输,其中的性能大家也应该明白,而且mysql没有一个好日志界面,只能自己去写界面,所以还得继续寻找其他解决方案,就是本篇的ELK。

名字解释

ELK就是ElasticSearch+LogStash+Kibana,这三样搭配起来确实非常的不错,先画张图给大家看一下。

通过ELK快速搭建集中化日志平台

LogStash可以流放到各自的服务器上收集Log日志,通过内置的ElasticSearch插件解析后输出到ES中。

ElasticSearch是个基于Lucene的分布式全文搜索框架,可对logs进行分布式存储,有点像hdfs。

Kibana所有的log日志都到ElasticSearch之后,我们需要给他展示出来,对吧?这时候Kibana就出手了,它可以多维度的展示es中的数据。这也解决了用mysql存储带来了难以可视化的问题。

快速搭建

上面只是名词解释,为了演示,我只在一台centos上面搭建。

首先下载程序,在下面的这张图上,我们找到对应三个产品,进行下载就可以了。

通过ELK快速搭建集中化日志平台

给大家看一下我的文件。

通过ELK快速搭建集中化日志平台

我这里下载的是elasticsearch5.6.4/kibana5.5.0/logstash5.6.3三个版本。然后用tar -zxf解压一下。

如果无法访问官网,可以通过下面链接下载:

此处为隐藏的内容!
发表评论并刷新,才能查看

logstash配置解压完之后,我们到config目录中新建一个logstash.conf配置。

通过ELK快速搭建集中化日志平台

然后做好input/filter/output三大块, 其中input是吸取logs文件下的所有log后缀日志文件,filter是一个过滤函数,这里不用配置,output配置导入到hosts为127.0.0.1:9200的elasticsearch中,每天一个索引。代码如下:

  1. input {
  2.         file {
  3.                 type => "log"
  4.                 path => "/logs/*.log"
  5.                 start_position => "beginning"
  6.         }
  7. }
  8. output {
  9.         stdout {
  10.                 codec => rubydebug { }
  11.         }
  12.         elasticsearch {
  13.                 hosts => "127.0.0.1"
  14.                 index => "log-%{+YYYY.MM.dd}"
  15.         }
  16. }

配置完了之后,我们就可以到bin目录下启动logstash了,配置文件设置为conf/logstash.conf,从下图中可以看到,当前开启是9600端口。

通过ELK快速搭建集中化日志平台

elasticSearch其实也是ELK中的核心,启动的时候一定要注意,因为es不可以用root账户启动,所以还需要开启一个elsearch账户。接下来我们默认启动就好了,啥也不用配置,然后在日志中大概可以看到开启了9200/9300端口。

通过ELK快速搭建集中化日志平台

kibana它的配置也非常简单,你需要在kibana.yml文件中指定一下你需要读取的elasticSearch地址和可供外网访问的bind地址就可以了。

通过ELK快速搭建集中化日志平台

不需要管默认配置,默认设置都有注释,在末尾处加入以下代码保存退出即可:

  1. elasticsearch.url: "http://localhost:9200"
  2. server.host: 0.0.0.0

然后就是启动,从日志中可以看出,当前打开了5601端口。

通过ELK快速搭建集中化日志平台

浏览器中输入IP加上端口就可以打开kibana页面了,默认让我指定一个查看的Index。

通过ELK快速搭建集中化日志平台

接下来我们在本机的/logs文件夹下创建一个简单的1.log文件,内容为hello world,然后在kibana上将logstash-*改成log*,Create按钮就会自动出来了。

通过ELK快速搭建集中化日志平台

进入之后,点Discover,就可以找到你输入的内容啦。

通过ELK快速搭建集中化日志平台

如果装了head安装包,还可以看到它确实带了日期模式的Index索引,还自带5个默认分片数。

通过ELK快速搭建集中化日志平台

好了,本篇就说这么多吧,希望有所帮助。

附录

如果出现以下错误,需要更新java的版本,我们会在近期发布更新教程。

通过ELK快速搭建集中化日志平台

  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:22   其中:访客  12   博主  10

    • avatar 平头哥 1

      感谢苍井月老师无私的分享

      • avatar 无敌的老五 1

        • avatar AMai 3

          签到成功!签到时间:今日的下午2:46:43,每日打卡,生活更精彩哦!