腾讯云 Elasticsearch 实战篇(十七) 构建日志分析系统
- 2020 年 2 月 24 日
- 笔记
前言|
在前面的众多章节中,我们从开源架构ELK讲到腾讯云Elasticsearch Service .最近的六篇中我们讲了腾讯云ES集群的选择、安装、运维监控告警系列。那么围绕这些知识点我们讲了这么多,我们要搞清楚ELK到底能做什么,到底在那些场景下做哪些事?只有搞清楚了它的用途我们才能更有目的的去学习并使用它。<本节提到的Logstash插件后面再详讲>
一、腾讯云Elasticsearch Service使用场景
1,当您运营一个提供客户检索商品的在线电子商城的时候,可以使用ES来存储整个商品的目录和库存,并且为客户提供检索和自动推荐功能。——->站内搜索,比如百度、sohu、或者公司内部网站;
2,收集交易数据,存储数据并做趋势、统计、概要或异常分析。这种情况下,可以使用Logstash来收集、聚合和解析数据,并且存储到Elasticsearch。一旦数据进入Elasticsearch,您可以通过检索、聚合来掌握您感兴趣的信息。—》存储分析可视化
3,价格预警平台,为价格敏感客户提供匹配其需求(主要是价格方面)的商品。
4,在报表分析/BI领域,可以使用ES的聚合功能完成针对大数据量的复杂分析。
5,大数据日志分析平台
总结:那么ELK能做的方向总结为三个方向:站内搜索、数据探索分析、可视化管理。
今天我们来搭建一个日志分析平台,然后对里边的日志进行分析。从0到1构建日志分析平台
二、构建日志分析系统
ELK框架中只有Logstash这个软件没多讲了,但是从前面的学习中我们知道它是一款数据收集、过滤、转发的工具。它是非常强大的一款数据ETL工具。但是在实际的应用中我们如果要去抓取业务服务器的日志用得比较多的还是filebeat.主要是因为它轻量、不消耗内存、而Logstash在收集日志这块往往会导致业务服务器负载过大。
所以,我将以最典型的日志分析架构 Filebeat + Elasticsearch + Kibana 和 Logstash + Elasticsearch + Kibana 为例,介绍如何将用户的日志导入到 ES,并可以在浏览器访问 Kibana 控制台进行查询与分析。
<注意:数据源,当前只支持用户自行接入腾讯云ES 集群>
1, Logstash + Elasticsearch + Kibana + Nginx + Tomcat 构建日志分析平台
首先,看一下数据拓扑图如下:

其次:环境准备
- 需要创建和 ES 集群在同一 VPC 的 CVM,这里部署一台CVM;
- CVM 需要有2G以上内存,安装Nginx、Tomcat、Logstash、JDK等服务。
- logstash将Nginx获取到数据传入腾讯ES集群并实现后续分析工作
接下来,安装部署过程如下:
第一步:CVM上安装JDK、Logstash、Nginx,CVM要与ES集群同网段,如果不同网段,那就离线快照导入吧

Tomcat服务启动正常,如下图:

接下来,我们在Tomcat里跑一下我得网站,看能否正常访问 发现网站没问题。

Nginx安装并配置反向代理,转发到Tomcat上。作代理服务器。截图:

将Nginx与Tomcat实现整合。Nginx的配置如下:


那怎么表示我的这个访问是通过Nginx反向的代理到Tomcat上的呢?我们可以查看Nginx的访问日志。tail -f /var/log/access.log

那我们重新刷新一下网页,让它产生一下访问日志。截图如下:

因此,可以确定:我们的日志是Nginx来产生的。我们就是要抓取它的日志通过Logstash传到ES上去。
接下来, 配置logstash 服务。我的Logstash 安装目录在/usr/local/目录下:

再来看看logstash的配置文件:输入插件如下:


好,启动Logstash 服务 /usr/local/logstash/bin/logstash -f /user/local/config/*.conf文件,过程如下:

好,那我们访问一下web服务器,看logstash能否接受日志,并输出到屏幕 ,正常输出

接下来,我们去腾讯云ES上看看,数据有没有传到云上去??我们看看~登录腾讯云控制端,打开Kibana界面,添加Index-pattern

我们发现:在Kibana添加索引的时候能自动匹配出ES上的索引,表示我们的数据从CVM上传到云上是成功的。对吧。我们继续操作,如下图:


那我们接着打开Kibana的开发工具,search一下索引数据,看是否存在数据呢??

发现是有数据的。那我们再刷新一下前端,制造点数据,看看,如下图:

结果:
我们发现:数据全部上传成功!!我们的日志分析系统搭建完成。
三、数据可视化分析
前面,我们的数据已经通过Nginx–》Logstash–》腾讯云ES—》Kibana,那我们就接着来作数据可视化分析,将前端页面访问动态图形化展示到Kibana上来。
打开kibana,选择可视化,选择如下“Pie”



最终的效果图为:这样我们就能区分到每个时间段的访问量。对吧

再来看看折线图,如下设置,并且随着访问来那个的变化折线也会有变化

我们把上面两个分析图都保存下来,然后放到我们的导航里边,便于参观展示。示意图如下:

至此:一个完整的日志搜集系统就已经搭建完成。简单来说分为几部分:服务器搭建、Logstash配置、数据上传、ES、kibana验证、可视化分析并展出。
四、总结
本节从搭建Nginx 、Tomcat服务器开始配置到Logstash搜集日志上传到ES集群并通过Kibana验证展示。想必应该很清晰的让大家感觉到基于Logstash+ES +Kibana的工作流程。那么文章一开始我们讲了两个架构来实现此目的。还有个架构就是filebeat+ES+kibana,其实道理都一样,只是将Logstash换成了filebeat.其它都一样。这里就不带大伙操作了。有时间的化,大家可以自己测试一下。附上filebeat的配置文件把:
filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/access.log output.elasticsearch: hosts: ["10.0.1.7:9200"] protocol: "http" username: "elastic" password: "。。。。"
启动服务即可
nohup ./filebeat -c filebeat.yml 2>&1 >/dev/null &
Fileabeat轻量、损耗节点内存可以忽略不计。收集日志可以用它。而logstash主要是作数据过滤。所以,一般应用中常常用得架构是:filebeat + logstash + elasticsearch + Kibana架构,当然,如果日志海量的化,我们就要用到Kafka中间件。后续,我们讲这一经典架构来构建大数据日志分析系统。