前段时间自己看书学习了一下elasticSearch,后面自己实践了使用elasticSearch、logStash、kibana搭建一个网站接口流量访问统计的监控看板。在这里做一些记录学习。
先看一下最终的结果:下面这个折线图就是我自己后台服务的访问接口的流量和总数,可以在右上角按照日期进行筛选查看
整个看板监控的实现过程很简单:主要使用logStash对Nginx的接口访问日志进行收集->存储到elasticSearch索引->在使用kibana对elasticSearch索引进行可视化分析,从而实现一个接口的流量访问统计的简单看板。
本文主要从三个部分讲解:
1、使用logStash对Nginx的接口访问日志进行收集
2、elasticSearch安装使用
3、使用kibana对elasticSearch索引进行可视化分析
PS:在这里我使用的是Windows环境、首先下载软件并准备好环境,注意版本号一定要统一,因为ES7.X的版本做了很多改动,移除了索引类型,客户端API的许多实现都和旧版本不一样。ELK的版本需要下载对应版本。在这里就不进行过多讲解。只讲解需要注意的事项。另外我自己写了一个简单的springboot项目,使用thymeleaf提供了几个简单的页面接口。我们最终将通过ELK实现对这几个接口的访问流量的监控。
- 使用logStash对Nginx的接口访问日志进行收集
logStash我使用的是6.8.1 ,安装成功后,需要在config中进行配置,如下图,需要新建一个patterns文件夹。作用下面会讲解。同时建立一个 logstash.conf文件,通过指令 “binlogstash -f configlogstash2.conf” 指定 以logstash.conf配置启动,配置文件下面会进行讲解。
首先讲解一下logstash.conf的内容:
主要有三部分 input、output、filter
其中input和output是logstash配置日志收集输入源和输出源。
输入源input: 这里我配置的输入源就是 我Nginx的访问日志路径,start_position表示从开始读取。注意:input下面我使用的是file表示文件输入源。logstash还提供了许多输入源,包括stdin(控制台输入)、tcp网络输入、filebeat的方式等。
输出源output:这里我配置的是es的索引创建。hosts表示es的服务地址,其中es的9200端口表示 是ES节点与外部通讯使用的端口。它是http协议的RESTful接口,而9300表示ES节点之间通讯使用的端口。它是tcp通讯端口,集群间和TCPclient都走的它。index表示创建索引名称 %{}使用了logstash表达式,表示到天结束,意思就是每天都会有一个新的索引创建,这样我们后面使用kibana进行分析,也可以使用索引模式细化到每一天进行分析。例如:1号和2号就会创建两个索引cgg-nginx-logs-1999-01-01,cgg-nginx-logs-1999-01-02。
过滤器filter:表示logstash的过滤器插件,作用就是日志通过输入源到输出源,会先经过过滤器进行一次转换。filter我们使用的是grok正则表达式。pattern_dir表示正则的存放路径,对应的就是我们上面建立的正则文件patterns下面的nginx正则。grok正则的语法和我们平时使用的正则语法有些不一样,学习地址:http://doc.yonyoucloud.com/doc/logstash-best-practice-cn/index.html ,如果我们自己写的grok正则有问题,我们还可以使用kibana的grok debugger进行调式。发现问题。
- elasticSearch安装使用
上面讲解了将nginx的日志按天存到了es的索引,这里就主要讲一下es的安装,ES我们使用6.8.0。安装好后同样需要配置一下配置文件elasicsearch.yml和jvm.options。
这里说一下 es和kibana都是java语言编写的,logstash使用的是JRuby。启动es需要在yml配置一下启动集群和节点的参数。同时在jvm.options文件中配置jvm启动项,由于我使用的是个人电脑,我们在操作时候可以把初始化堆和最大堆内存设置小一点,避免内存不足启动失败。
yml配置:
jvm.options配置:
最后进入es bin目录使用命令elasticsearch进行启动即可
- 使用kibana对elasticSearch索引进行可视化分析
kibana我使用的版本是6.8.1,kibana的配置在kibana.yml中配置我们本地搭建的话,es和kibana都在一台机器上,yml中默认会配置es的url为本地的地址,就不需要特殊配置了。
启动kibana后,都是英文的操作提示,kibana提供了国际化的设置,我们可以在yml加上中文配置 i18n.locale: "zh-CN" ,这样方便学习。
最后进入kibana的bin目录直接双击启动kibana,进入kibana,我们下面进行可视化面板的配置。
1、首先创建索引模式,搜索我们刚才在logstash创建的索引,进行创建。
2、下一步后,我们选择使用时间戳进行筛选,最后完成创建。
3、创建完成索引模式后,新建可视化组件,这里我们新建一个折线图来观察接口的访问流量。选中折线图,索引模式选中cgg-nginx*对应我们logstash中创建的索引模式。*表示匹配所有,因为logstash是安装每天时间创建一个索引,使用*我们就可以匹配所有的nginx索引
4、添加折线图后,我们开始编辑折线图的各项指标,Y轴我们表示计数,对应索引模式中的文档个数,X轴我们选中日期,表示时间。时间间隔我们可以选择毫秒、秒等单位,具体看接口流量。然后点击三角表示生成折线图。最后我们点击保存组件。
5、最后进入仪表盘,创建仪表盘,点击添加可视化组件,把刚才创建的折线图添加进来。大功告成,我们通过postman或者jmeter批量调用我们的接口,然后点击右上角的刷新,就可以实时体现接口的访问流量了。