使用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请求之和(此二者域名不具生产换环境统计意 ...
随机推荐
- Redis-01-基础
基本概念 1 基本概念 redis是一个开源的.使用C语言编写的.支持网络交互的.可基于内存也可持久化的Key-Value数据库(非关系性数据库) redis运维的责任 1.保证服务不挂 2.备份数据 ...
- python创建一个简单的服务
python -m http.server 8000 --bind 0.0.0.0 8000为端口 0.0.0.0允许远程访问
- WPF material UI 的使用
网站:https://github.com/vasanthmes/WPF-Dashboard-UI-Material-Design-Concept theme <Application x:Cl ...
- C# wpf中DataGrid 支持汇总行
最近有一个需求,需要汇总金额,份额等字段.我们使用的是原生的WPF控件,自己开发了一套Template.而没有使用比较成熟的第三方控件.所以这个功能得自己开发.并且要做成控件层次的功能. 当然也可以这 ...
- SpringCloud 商品架构例子(一)
架构演进和分布式系统基础知识 1.传统架构演进到分布式架构 简介:讲解单机应用和分布式应用架构演进基础知识 高可用 LVS+keepalive 单体应用: 集群: 微服务架构: 1.单体应用: 开发速 ...
- mybaits源码分析(一)
一.源码下载 1.手动编译源码 为了方便在看源码的过程中能够方便的添加注释,可以从官网下载源码编译生成对应的Jar包,然后上传到本地maven仓库,再引用这个Jar. 首先需要编译打包parent项目 ...
- go GC垃圾回收原理
目录 1.前言 2. 垃圾回收算法 3. Golang垃圾回收 3.1 垃圾回收原理 3.2 内存标记(Mark) 3.3 三色标记 3.4 Stop The World 4. 垃圾回收优化 4.1 ...
- 回调与Promise
Promise 对象就是用于表示一个异步操作的最终状态(成功或失败).它的流程就是在什么状态下需要执行什么样的操作. resolve简单理解就是一步操作执行成功后的回调函数 then是Promise对 ...
- vue 引用省市区三级联动(element-ui select)
npm 下载 axios npm install --save axios static 静态文件夹里 创建 json 文件夹 json 文件夹里创建 map.json map.json 文件里写 ( ...
- elsa-core:4.ASP.NET Core Server with Elsa Dashboard
在本快速入门中,我们将了解一个最小的 ASP.NET Core 应用程序,该应用程序承载 Elsa Dashboard 组件并将其连接到 Elsa Server. ElsaDashboard + Do ...