您的位置:首页 > 运维架构 > Linux

centos7搭建ELK开源实时日志分析系统

2017-01-09 11:14 711 查看
Elasticsearch 是个开源分布式搜索引擎它的特点有分布式零配置自动发现索引自动分片索引副本机制 restful 风格接口多数据源自动搜索负载等。

Logstash 是一个完全开源的工具他可以对你的日志进行收集、分析并将其存储供以后使用如搜索。

kibana 也是一个开源和免费的工具他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面可以帮助您汇总、分析和搜索重要数据日志。

日志从客户端到服务端处理后在传递给客户的数据流流向如下

Logstash-forwarder--->Logstash--->Elasticsearch--->kibana--->nginx--->客户浏览器

其中Logstash-forwarder是客户端的日志收集工具将日志发送给服务端Logstash后Logstash通过使用grok匹配规则对日志进行匹配切割然后保存在Elasticsearch中通过kibana从Elasticsearch中读取数据并转交给nginx来处理后返回给客户。

好了下面就是ELK系统的安装过程了。

下面是elasticsearch/logstash 所需JVM版本





首先安装JAVA环境

或者直接yum安装jdk也行不过要保证安装好对应的版本。

当然也可以源码安装不过源码安装需要注意设置好环境变量

安装好jdk环境之后需要安装Elasticsearch

修改配置文件如下

安装Elasticsearch插件如下

之后启动Elasticsearch

然后开始安装kibana

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

我这里选择的是kibana-4.1.3-linux-x64.tar.gz

配置文件中指明kibana侦听5601端口并且通过9200端口从elasticsearch里面获取数据。

再安装nginx可以选择源码安装这里为了图方便就使用yum安装了。

yum -y install nginx

vim /etc/nginx/nginx.conf

将server改成如下

将日志保存格式修改为如下

修改日志格式是为了匹配后面的Logstash的grok匹配规则

启动nginx和kibana

或者也可以看看下面两个脚本

关于开机启动Kibana的。

之后就需要安装Logstash了

这个包比较大可能国内下载起来比较慢可以去官网使用迅雷下载比较快一点。

创建TLS证书

logstash和logstash-forwarder通信需要使用tls证书认证。Logstash Forwarder上面只需公钥logstash需要配置公钥、私钥。在logstash服务器上生成ssl证书。

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

1、指定IP地址方式

vi /etc/pki/tls/openssl.cnf

在[ v3_ca ]下面配置subjectAltName = IP:192.168.100.233切记这条很重要因为还有一个地方也有subjectAltName配置错了的话就会一直无法实现认证

注意将-days设置大点以免证书过期。

2、使用fqdn方式

不需要修改openssl.cnf文件。

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

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

配置logstash

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

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

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

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

type要与logstash-forwarder相匹配。

同时注意将nginx日志格式设置成上面的。

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

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

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

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

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

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

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

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

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

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

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

最后就是启动logstash服务了。

然后就是配置Logstash-forwarder客户端了。

安装logstash-forwarder

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

配置logstash-forwarder

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

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

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

访问效果如下所示





本文出自 “柠檬” 博客,请务必保留此出处http://xianglinhu.blog.51cto.com/5787032/1716274
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: