ELK 部署指南

  • A+
所属分类:ELK

Logstash是一个开源的用于收集,分析和存储日志的工具。 Kibana4用来搜索和查看Logstash已索引的日志的web接口。这两个工具都基于Elasticsearch。

  • Logstash: Logstash服务的组件,用于处理传入的日志。
  • Elasticsearch: 存储所有日志
  • Kibana 4: 用于搜索和可视化的日志的Web界面,通过nginx反代
  • Logstash Forwarder: 安装在将要把日志发送到logstash的服务器上,作为日志转发的道理,通过  lumberjack 网络协议与 Logstash 服务通讯

注意:logstash-forwarder要被beats替代了,关注后续内容。后续会转到logstash+elasticsearch+beats上。

ELK架构如下:

Elasticsearch

本文将安装Elasticsearch-1.7.2, Logstash-1.5.5, Kibana-4.1.1。 请注意版本要求,有些组件需要响应的版本要求。

安装java

Elasticsearch和Logstash需要Java。

我这里是以RPM安装的。也可以自行下载tar包,注意设置java路径。

java也可到这个地址下载https://www.reucon.com/cdn/java/

首先,要确保java环境安装正确,这一步搞不定,下面的无法进行。

安装Elasticsearch

RPM安装

tar包

tar包是二进制的,解压出来就可以使用。 还是建议使用RPM包安装,即使不想安装到系统默认路径,也可以通过--prefix=/usr/local安装到指定目录。

配置

我这里是单台,最好弄成集群。

安装一些elasticsearch插件

Elasticsearch

还有一些插件自行安装,如bigdesk ,kopf  ,migration

migration 用来检测能否升级到elasticsearch最新版本。

Elasticsearch

安装Kibana

到https://www.elastic.co/downloads/kibana 找合适的版本,每个版本下面有这么一行内容,一定要注意这些内容:Compatible with Elasticsearch 1.4.4 - 1.7

也可以配置系统启动脚本,这里提供下,有需要的自行修改。4.x 版本通用

配置nginx

密码验证自行配置,参见之前文章。

安装Logstash

Elasticsearch

创建ssl证书

logstash、logstash-forwarder 依赖这,必须的。用于Logstash Forwarder验证logstash身份。Logstash Forwarder上面只需公钥,logstash需要配置公钥、私钥。在logstash服务器上生成ssl证书。

创建ssl证书有两种方式,一种指定IP地址,一种指定fqdn(dns)。

  1. IP地址

    在[ v3_ca ]配置段下设置上面的参数。10.1.19.18是logstash服务端的地址。

    注意将-days设置大点,以免证书过期。
  2. fqdn
    不需要修改openssl.cnf文件。

    将logstash.ttlsa.com换成你自己的域名。同时,到域名解析那添加logstash.ttlsa.com的A记录。

使用那种方式都行,不过如果logstash服务端的IP地址变换了,证书不可用了。

配置logstash

logstash配置文件是以json格式设置参数的,配置文件位于/etc/logstash/conf.d目录下,配置包括三个部分:输入端,过滤器和输出。

首先,创建一个01-lumberjack-input.conf文件,设置lumberjack输入,Logstash-Forwarder使用的协议。

再来创建一个11-nginx.conf用于过滤nginx日志

这个过滤器会寻找被标记为“nginx”类型(Logstash-forwarder定义的)的日志,尝试使用“grok”来分析传入的nginx日志,使之结构化和可查询。

type要与logstash-forwarder相匹配。

同时,注意将nginx日志格式设置成下面的:

日志格式不对,grok匹配规则要重写。

可以通过http://grokdebug.herokuapp.com/ 在线工具进行调试。多半ELK没数据错误在此处。

Elasticsearch

grok 匹配日志不成功,不要往下看了。搞对为止先。

同时,多看看http://grokdebug.herokuapp.com/patterns#   grok匹配模式,对后面写规则匹配很受益的。

最后,创建一文件,来定义输出。

定义结构化的日志存储到elasticsearch,对于不匹配grok的日志写入到文件。

注意,后面添加的过滤器文件名要位于01-99之间。因为logstash配置文件有顺序的。

在调试时候,先不将日志存入到elasticsearch,而是标准输出,以便排错。

同时,多看看日志,很多错误在日志里有体现,也容易定位错误在哪。

在启动logstash服务之前,最好先进行配置文件检测,如下:

也可指定文件名检测,直到OK才行。不然,logstash服务器起不起来。

最后,就是启动logstash服务了。

安装logstash-forwarder

最后一步了。

需要将在安装logstash时候创建的ssl证书的公钥拷贝到每台logstash-forwarder服务器上。

配置logstash-forwarder

这也是个json个是的配置文件。json格式不对logstash-forwarder服务是启动不起来的。

后面就是启动logstash-forwarder服务了。

当上面的所有都配置正确的话,就可以访问kibana来查看数据了。

kibana展示数据

Elasticsearch

Elasticsearch

Elasticsearch

kibana就是elasticsearch查询工具。

其它内容,大伙多看看官方文档:https://www.elastic.co/guide/index.html

有问题提出来一起交流。

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

评论已关闭!

目前评论:14   其中:访客  14   博主  0

    • 匿名 9

      按照文档进行到最后一步,在配置默认索引的时候一直提示 : Unable to fetch mapping .Do you have indices matching the pattern? 各项服务均已正常启动,是什么问题

      • 匿名 9

        请问最后面的这个图是怎么实现的?就是以城市来命名的这个

        • Aceslup 4

          哪些input,filter,output的语法,后面会有介绍不?

          • 4

            请教下版主,我安装文档的去做,为什么到最后匹配的时候报说是服务无法匹配。而且logstash也无法启动

              • elk 9

                @ 啥错误信息?

                  • 4

                    @elk 提示镜像文件地址有误。对了还有请教下版主为什么我按照文档安装。最后没有匹配出图。报无法匹配到相关模块。请教下这个是什么原因。

                      • elk 9

                        @ 地址可能官方改变了。 软件版本要匹配。查看下日志, 先标准输出看看数据,再输入到elasticsearch。

                  • 4

                    请教版主。我按照文档安装的时候安装logstash无法安装。现在文件下载错误。这是什么原因?

                      • elk 9

                        @ 啥错误? 无法下载?

                      • 4

                        将logstash.ttlsa.com换成你自己的域名。同时,到域名解析那添加logstash.ttlsa.com的A记录 请教下版主,对这个不是很理解。是不是我得到我的服务器端加上一条那个域名的解析记录来进行实现

                          • elk 9

                            @ 就是域名解析。

                          • 不行 9

                            请问下这个用的系统是redhat哪个版本的

                              • 默北 默北 6

                                @不行 centos6
                                http://www.ttlsa.com/elk/elk-supported-platforms-and-software/

                              • sunny 2

                                logstash-forwarder 记录信息位于/var/lib/logstash-forwarder/.logstash-forwarder文件