使用ELK监控Nginx日志实现接口流量访问统计
前段时间自己看书学习了一下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文件,通过指令 “bin\logstash -f config\logstash2.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批量调用我们的接口,然后点击右上角的刷新,就可以实时体现接口的访问流量了。


使用ELK监控Nginx日志实现接口流量访问统计的更多相关文章
- ELK监控nginx日志总结
ELK介绍 ELK即ElasticSearch + Logstash + kibana ES:作为存储引擎 Logstash:用来采集日志 Kibana可以将ES中的数据进行可视化,可以进行数据分析中 ...
- ELK对nginx日志进行流量监控
ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...
- 利用 ELK系统分析Nginx日志并对数据进行可视化展示
一.写在前面 结合之前写的一篇文章:Centos7 之安装Logstash ELK stack 日志管理系统,上篇文章主要讲了监控软件的作用以及部署方法.而这篇文章介绍的是单独监控nginx 日志分析 ...
- ELK系统分析Nginx日志并对数据进行可视化展示
结合之前写的一篇文章:ELK日志分析平台搭建全过程,上篇文章主要讲了部署方法.而这篇文章介绍的是单独监控nginx 日志分析再进行可视化图形展示. 本文环境与上一篇环境一样,前提 elasticsea ...
- 使用Docker快速部署ELK分析Nginx日志实践(二)
Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...
- 使用Docker快速部署ELK分析Nginx日志实践
原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...
- 转载:通过监控Nginx日志来实时屏蔽高频恶意访问的IP
通过监控Nginx日志来实时屏蔽高频恶意访问的IP 目前在我的VPS上主要通过两种方式来限制ip的访问次数. 通过Nginx的limit_req配置来限制同一ip在一分钟内的访问次数 通过Ngin ...
- ELK整合Filebeat监控nginx日志
ELK 日志分析 1. 为什么用到 ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep. awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如 ...
- 利用ELK分析Nginx日志生产实战(高清多图)
本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...
随机推荐
- SpringBoot开发九-生成验证码
需求介绍-生成验证码 先生成随机字符串然后利用Kaptcha API生成验证图片 代码实现 先在pom.xml引入 <dependency> <groupId>com.gith ...
- 【Python机器学习实战】决策树和集成学习(一)
摘要:本部分对决策树几种算法的原理及算法过程进行简要介绍,然后编写程序实现决策树算法,再根据Python自带机器学习包实现决策树算法,最后从决策树引申至集成学习相关内容. 1.决策树 决策树作为一种常 ...
- 零基础学Java之Java学习笔记(一):Java概述
什么是Java? Java是一门面向对象编程语言,可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序. Java特点有哪些? 1.Java语言吸收了C++语言的各种优点,具有功能强大 ...
- noip32
T1 暴力很好打,然而我是最后打的,所以只有40pts,其他人都有80pts的说 其实也应该想到的吧 80pts用的 \(set\) ,有个log,所以A不了. 正解: 把 \(set\) 换成 \( ...
- 题解 Six(留坑)
传送门 考场上搞了个三进制状压,结果正确性假了-- 有想到从约数下手,但觉得就光预处理约数复杂度就爆炸就没往这边想-- 首先是关于约数个数的证明,再一次感谢战神: 因为 \(n = \prod p_i ...
- springboot配置ssl-pfx
application.yml server: port: 9443 ssl: key-store: classpath:4148017_qra.meeno.net.pfx key-store-typ ...
- mysql 数据库 分表后 怎么进行分页查询?Mysql分库分表方案?
Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. m ...
- 【转】new和malloc的区别
1. 申请的内存所在位置 new操作符从自由存储区(free store)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存. 自由存储区是C++基于new操作符的一个抽象概念,凡是通过n ...
- 【IDE】Sublime Text 3 使用配置
1 安装 首先现在安装Sublime Text 3,直接官网下载(http://www.sublimetext.com/3),也可以在其他地方下载,安装完成后进行破解 菜单栏Help - Enter ...
- hive表导出到mysql报错
Exception in thread "main" java.lang.NoClassDefFoundError: org/json/JSONObject hadoop@hado ...