前段时间自己看书学习了一下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日志实现接口流量访问统计的更多相关文章

  1. ELK监控nginx日志总结

    ELK介绍 ELK即ElasticSearch + Logstash + kibana ES:作为存储引擎 Logstash:用来采集日志 Kibana可以将ES中的数据进行可视化,可以进行数据分析中 ...

  2. ELK对nginx日志进行流量监控

    ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...

  3. 利用 ELK系统分析Nginx日志并对数据进行可视化展示

    一.写在前面 结合之前写的一篇文章:Centos7 之安装Logstash ELK stack 日志管理系统,上篇文章主要讲了监控软件的作用以及部署方法.而这篇文章介绍的是单独监控nginx 日志分析 ...

  4. ELK系统分析Nginx日志并对数据进行可视化展示

    结合之前写的一篇文章:ELK日志分析平台搭建全过程,上篇文章主要讲了部署方法.而这篇文章介绍的是单独监控nginx 日志分析再进行可视化图形展示. 本文环境与上一篇环境一样,前提 elasticsea ...

  5. 使用Docker快速部署ELK分析Nginx日志实践(二)

    Kibana汉化使用中文界面实践 一.背景 笔者在上一篇文章使用Docker快速部署ELK分析Nginx日志实践当中有提到如何快速搭建ELK分析Nginx日志,但是这只是第一步,后面还有很多仪表盘需要 ...

  6. 使用Docker快速部署ELK分析Nginx日志实践

    原文:使用Docker快速部署ELK分析Nginx日志实践 一.背景 笔者所在项目组的项目由多个子项目所组成,每一个子项目都存在一定的日志,有时候想排查一些问题,需要到各个地方去查看,极为不方便,此前 ...

  7. 转载:通过监控Nginx日志来实时屏蔽高频恶意访问的IP

    通过监控Nginx日志来实时屏蔽高频恶意访问的IP   目前在我的VPS上主要通过两种方式来限制ip的访问次数. 通过Nginx的limit_req配置来限制同一ip在一分钟内的访问次数 通过Ngin ...

  8. ELK整合Filebeat监控nginx日志

    ELK 日志分析 1. 为什么用到 ELK 一般我们需要进行日志分析场景:直接在日志文件中 grep. awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如 ...

  9. 利用ELK分析Nginx日志生产实战(高清多图)

    本文以api.mingongge.com.cn域名为测试对象进行统计,日志为crm.mingongge.com.cn和risk.mingongge.com.cn请求之和(此二者域名不具生产换环境统计意 ...

随机推荐

  1. Servelt&&JSP进阶

    Servlet与JSP进阶 来自mkw的视频课程的总结 1.前言 内容包括 掌握Java Web核心特性,Servlet核心对象以及JSP九大内置对象.主要有以下的内容: 请求结构 && ...

  2. netty系列之:自定义编码和解码器要注意的问题

    目录 简介 自定义编码器和解码器的实现 ReplayingDecoder 总结 简介 在之前的系列文章中,我们提到了netty中的channel只接受ByteBuf类型的对象,如果不是ByteBuf对 ...

  3. GO语言安装以及国内镜像

    首先,下载GO语言,国内的话用 Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com) 可能会快一点 然后根据自己的系统选择下载的包,我是win10,就选go1.1 ...

  4. 【笔记】初探KNN算法(1)

    KNN算法(1) 全称是K Nearest Neighbors k近邻算法: 思想简单 需要的数学知识很少 效果不错 可以解释机器学习算法使用过程中的很多细节问题 更加完整的刻画机器学习应用的流程 其 ...

  5. JavaWeb学习笔记(五)

    本文内容 1. JSP: 1. 指令 2. 注释 3. 内置对象 2. MVC开发模式 3. EL表达式 4. JSTL标签 5. 三层架构 JSP: 1. 指令 * 作用:用于配置JSP页面,导入资 ...

  6. 【软件工具】Git 使用总结

    本地库就是由 对象 和 引用 构成的,或者叫 Repositories;下面是我整理的常用 Git 命令清单.几个专用名词的译名如下. Workspace:工作区 Index / Stage:暂存区 ...

  7. 深入浅出Mybatis系列(二)---Mybatis入门

    一.Mybatis环境搭建及简单实例 1. 新建web项目, 添加依赖包:mybatis包.数据库驱动包(我使用的是mysql).日志包(我使用的是log4j), 由于我的是maven项目, 那么添加 ...

  8. windows安装trojan记录

    1.trojan 客户端安装教程 https://v2raytech.com/trojan-clients/ 2.chrome安装插件(crx文件)教程 https://www.jianshu.com ...

  9. new Vue({ render: h => h(App), }).$mount('#app')

    这里创建的vue实例没有el属性,而是在实例后面添加了一个$mount('#app')方法. $mount('#app') :手动挂载到id为app的dom中的意思 当Vue实例没有el属性时,则该实 ...

  10. 阿里云服务器上部署java项目(安装jdk,tomcat)

    安装JDK a.执行下面的yum指令安装,无线配置环境变量. 1.yum -y update #首先更新一下YUM源2.yum list Java* ---------#列出所有的JDK 3.yum ...