ELK+RabbitMQ架构处理nginx及tomcat日志

前言

     

查看日志的传统方法是:登录操作系统,使用命令工具如cat、tail、sed、awk、grep等等进行过滤输出后分析,处理少量日志还好,日志量大处理效率就没那么高了。而且很多情况下开发人员需要查看并分析日志进行排错,但他们对Linux命令又不是太熟悉,而且有时候又不能赋予他们服务器权限,更多时候是运维把日志文件导出来发给开发人员,这无疑会给我们增加工作量。ELK(Elasticsearch+Logstash+Kibana)架构就是专门为采集、分析、存储日志所设计的:

    Elasticsearch:基于Lucenne的搜索服务器,提供一个分布式多用户的全文搜索引擎,能过做到实时搜索。

    Logstash:可以对日志进行采集、过滤、输出。

    Kibana:可以汇总、分析、搜索日志数据并提供友好的web界面。

工作流程:logstash agent监控并过滤日志,为了保证日志的完整性先将日志内容输出到RabbitMQ进行存储;logstash
indexer再把RabbitMQ上的日志队列收集后发送给全文搜索服务器Elasticsearch,然后可以用Elasticsearch进行自定
义搜索,再通过Kibana来结合自定义搜索进行页面展示。

ELK架构图

从官网下载软件logstash、elasticsearch、kibana以及JRE,分别在相应主机上安装

RabbitMQ配置

安装RabbitMQ

启用RabbitMQ的web管理功能

下载并安装命令管理工具rabbitmqadmin

给rabbitmqadmin工具准备配置文件

创建一个vhost和user并赋权

创建一个exchange

创建一个queue

创建一个binding,绑定之前创建的exchange和queue并设置一个routing_key

以上关于RabbitMQ的配置均可以通过登录web控制台进行操作,更简单方便,这里就不再演示了。

Elasticsearch配置

给elasticsearch安装shield插件,用于权限控制,此插件是收费产品,可免费使用30天,到期后可降级使用,只是关于集群的一些功能将不可用。

如有需要修改elasticsearch.yml,配置服务监听地址,默认监听在127.0.0.1上,端口是9200和9300;配置日志数据的存储路径,默认保存在/var/lib/elasticsearch下

配置shield,修改shield的权限控制文件roles.yml,修改默认角色logstash的权限,指定可创建的索引文件;并添加一个readonly的角色dashboard,用于控制用户在kibana上的权限。

配置shield,创建用户logstash、kibana、readuser、admin并指定相应角色

启动Elasticsearch

Logstash配置

配置nginx服务器输出json格式日志

配置logstash agent采集nginx日志并输出到RabbitMQ;为了排错,同时输出一份日志到本地。

配置tomcat服务器输出json格式日志,修改工程的logback.xml配置文件,添加如下配置

下载依赖的jar包logstash-logback-encoder到{CATALINA_BASE}/lib

配置logstash agent采集tomcat日志并输出到RabbitMQ

配置logstash indexer把日志从RabbitMQ输出到Elasticsearch

启动logstash服务

在RabbitMQ服务器上查看是否接收到日志消息,登录RabbitMQ的web控制台查看详细信息。

kibana配置

给kibana安装shield插件,用于权限控制

修改kibana的主配置文件kibana.yml,似乎启用权限控制后强制使用https,shield的加密key可以随便指定,会话超时时间默认是30分钟,超时时间的单位为毫秒

启动kibana

kibana启用后,就可以通过https://server:5601进行访问了。如有需要配置Apache做个反向代理

登录界面。

填入之前定义的索引文件,就可以处理日志了。

看到kibana有收到日志就算成功了。

至此,整个架构部署完毕,如有错误或不足之处,欢迎指正。

你可能感兴趣的:(ELK)