巧用ELK快速实现网站流量监控可视化
前言
本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果。
业务规模
- 8个平台
- 100+台服务器
- 10+个集群分组
- 微服务600+
- 用户N+
面临问题
随着分布式微服务容器技术的发展,传统监控系统面临许多问题:
- 容器如何监控
- 微服务如何监控
- 集群性能如何进行分析计算
- 如何管理agent端大量配置脚本
这些都是传统监控所要面临的棘手问题,那么如何解决当前遇到的问题,GPE横空出世,后面会重点分析。
系统监控
- 目标群体:系统日志、服务器、容器、系统软件运行指标
- 日志架构:ELK (Elasticsearch+Logstash+Kibana+Redis)
- 监控架构:GPE (Grafana+Prometheus+Exporter+Consul)
- 报警方式:邮件、短信、钉钉以及自定义webhook,监控中心7x24小时
ELK日志
随着分布式微服务的盛行,功能模块的拆分细化,无论对于开发还是运维,日志的重要性都是不言而喻的,但是如何存储分析定位查看日志,一百个公司可能会有两百种做法。有的很少记录日志,有的日志等级都不分,有的写入文本然后就不管不问了,有的向MySql数据库一扔也没有了下文,等到用户投诉或者被发现问题,才会翻一翻。
那么如何正确优雅的记录日志呢?相信大家对于ELK并不陌生,可能不少小伙伴都接触过,对于中小型互联网创业公司来说,使用ELK搭建日志分析系统的确是一个不错的选择。
架构图

核心组件
ELK由Elasticsearch、Logstash和Kibana三剑客组成,当然了以上是最基本的组件,为了使的架构流程更加丰满,我们加入了Redis做缓冲队列,配置了sendmail做异常日志告警。
ElasticSearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口等。
Logstash
Logstash数据分析工具,它可以对系统生成的的日志进行采集、分析,存储。2013 年,Logstash 被 Elasticsearch 公司收购,ELK Stack 正式成为官方用语。
kibana
Kibana是一个开源的分析与可视化平台,用来搜索、查看存储在Elasticsearch索引中的数据。
工作流程
- logstash(shipper) 实时监控并过滤收集每个服务的日志信息
- logstash(shipper) 把收集来的日志(INFO 、DEBUG 、RROR 、WARN等)分别发送到Redis
- logstash(indexer) 按照日志分类分别从Redis读取日志信息并发送给ElasticSearch
- logstash(indexer) 过滤出RROR日志通过邮件或者其它webhook方式告警开发运维人员
- Kibana读取ElasticSearch数据结合自定义搜索进行页面展示
GPE监控
ELK主要收集分析预警的是我们平台系统中各个服务的业务日志,一般通过日志组件(log4j 、log4j2 、logback)来收集并写入文本。但是对于系统本身以及一些应用软件的监控预警,这套方案显然是不合适的,这里推荐一下GPE三剑客,当然了GPE是我自己意淫出来的组合。
架构图

核心组件
Grafana、Prometheus、Exporter(一系列插件),自定义的三剑客,当然了为了使得整合监控程序更加流畅完整,我们加入了注册中心Consul做服务发现,实现动态添加服务,使用邮件、钉钉以及webhook实现异常告警。
GPE组件只是其中的一种实现方式罢了,Grafana配合InfluxData提供Telegraf也可以收集很多Metrics,实现更为丰富的大屏监控预警。
Grafana
Grafana 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。

Prometheus
Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。
- 多维数据模型(时序列数据由metric名和一组key/value组成)
- 在多维度上灵活的查询语言(PromQl)
- 不依赖分布式存储,单主节点工作.
- 通过基于HTTP的pull方式采集时序数据
- 可以通过push gateway进行时序列数据推送(pushing)
- 可以通过服务发现或者静态配置去获取要采集的目标服务器
- 多种可视化图表及仪表盘支持
如架构图所示,Prometheus通过安装在远程机器上的exporter来收集监控数据。

Consul
Consul有多个组件,但是整体来看,它是你基础设施中用于发现和配置服务的一个工具。它提供如下几个关键功能:
- 服务发现 : Consul的某些客户端可以提供一个服务,例如api或者mysql,其它客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务。
- 健康检查 : Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
- 键值存储 : 应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
- 多数据中心 : Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。
Consul被设计为对DevOps群体和应用开发者友好,他非常适合现代的、可伸缩的基础设施。

工作流程
- Exporter组件注册到Consul注册中心
- Prometheus拉取Consul注册中心的servers
- Exporter组件获取服务器或者系统软件的metrics
- Grafana配置Prometheus数据源获取其采集数据结合自定义面板实现监控大屏
- Grafana通过设置Alerting实现监控预警
小结
如文章开头所述,本文并没有一步步详细记录安装使用教程,这些教程网上都有,即使有坑,相信作为程序员的你也能够解决。不才,在这里只是抛砖引玉,希望各位小伙伴可以学到更多知识。
还记得许多年前的春天,那时网站还都是静态页面,没有图片也没有绚丽的效果,没有24小时服务的客服,可当初程序员是那么快乐,虽然只有网页三剑客,在网上、在指尖、在BBS中,挥洒着自己的青春热血,如果有一天 我老无所依,请把我留在 在那互联网浪潮里。
现如今,随着云计算、分布式、微服务的盛行,程序员的你是否已经疲倦与自己的CURD,是否已经不屑于与产品汪扯皮,来来来,返回顶部小伙伴们再看看一遍,谁说程序员全部的时间都要敲代码,是时候需要去需找自己的另一片天空了。
声明:部分文字介绍来源于网络。
巧用ELK快速实现网站流量监控可视化的更多相关文章
- Windows下快速安装CACTI流量监控
Windows下快速安装CACTI流量监控 原文 http://os.51cto.com/art/201111/300977.htm CACTI是一套PHP程序,它利用SNMPGET采集数据,使用R ...
- 搭建一个简单的基于web的网络流量监控可视化系统
本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...
- 架构-LAMP特级学习(网站服务器监控)
1.服务监控(SNMP配合CACTI监控) Apache Web服务监控 MySQL数据库监控 磁盘空间监控 2.流量监控(SNMP配合MRTG监控) 网站流量监控 3.使用SNMP可以获取被监控服务 ...
- ELK对nginx日志进行流量监控
ELK对nginx日志进行流量监控 一.前言 线上有一套ELK单机版,版本为5.2.1.现在想把nginx访问日志接入到elk里,进行各个域名使用流量带宽的统计分析.要把nginx日志传输到elk上, ...
- cnzz友盟怎么安装网站统计代码监控网站流量
做网站的都知道cnzz统计,它是用来统计网站流量的,可以分析网站数据,进行更好的对网站优化,下面我教大家怎么添加统计代码 工具/原料 cnzz 方法/步骤 打开百度搜索"cnzz友盟&quo ...
- (视频)《快速创建网站》 4.2 完结篇 – 应用运营vs.发射卫星,遥测(Telemetry) 技术
本文是<快速创建网站>系列的第10篇(完结篇),如果你还没有看过之前的内容,建议你点击以下目录中的章节先阅读其他内容再回到本文.访问本系列目录,请点击:http://devopshub.c ...
- php特级课---4、网站服务监控
php特级课---4.网站服务监控 一.总结 一句话总结:这些是架构师的知识 网络流量监控:cacti,mrtg 邮件报警系统:postfix 压力测试工具:Apache压力测试软件-ab,Mysql ...
- 【Hadoop离线基础总结】网站流量日志数据分析系统
目录 点击流数据模型 概述 点击流模型 网站流量分析 网站流量模型分析 网站流量来源 网站流量多维度细分 网站内容及导航分析 网站转化及漏斗分析 流量常见分析角度和指标分类 指标概述 指标分类 分析角 ...
- 《UNIX/Linux网络日志分析与流量监控》新书发布
本书从UNIX/Linux系统的原始日志(Raw Log)采集与分析讲起,逐步深入到日志审计与计算机取证环节.书中提供了多个案例,每个案例都以一种生动的记事手法讲述了网络遭到入侵之后,管理人员开展系统 ...
随机推荐
- gluster 卷的类型及创建方法
基本卷: 分布式卷 文件随机分布在brick中,提升读写性能 不提供数据冗余,最大化利用磁盘空间 # gluster volume create test-volume server1:/exp1 s ...
- Linux修改SSH登录端口
Linux的默认登录端口为:22,为系统安全运维都会将端口改成其它端口. 假如我们修改的端口为:3000 1.首先要配置防火墙,允许此端口通行. /sbin/iptables -A INPUT -p ...
- VirtualBox如何扩展虚拟机Ubuntu的硬盘容量-转
https://blog.csdn.net/ouyang_peng/article/details/53261599 摘录要点: 扩展 VBoxManage modifyhd YOUR_HARD_DI ...
- 关于promise自己的理解
参考文档:http://es6.ruanyifeng.com/#docs/promise#Promise-%E7%9A%84%E5%90%AB%E4%B9%89 ES6 规定,Promise对象是一个 ...
- java基础(二) -对象和类
Java 对象和类 Java作为一种面向对象语言.支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 重载 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为.例如,一条狗是一 ...
- 第六天实验详解——dedecms通过xss漏洞写马
第六天实验详解 **XSS跨站攻击的分类** XSS漏洞类型主要分为持久型和非持久型两种: 1. 非持久型XSS漏洞一般存在于URL参数中,需要访问黑客构造好的特定URL才能触发漏洞. 2. 持久型X ...
- js跨域需要token。
将rems从tms中独立出来以后,每次都需要先打开tms,再打开rems,如果我足够聪明,那么很容易可以分析得到原因. 第一,会导致跨域出现问题的易错点就那么几个,是否加上“Access-Contro ...
- struts2.0自定义类型转换
在Struts2.0框架中内置了类型转换器,可以很方便的实现在八大数据类型.Date类型之间的自动转换:此外也可以根据自己的需求自定义数据转换类.如下: 首先看一下项目工程中的目录 1.在新建的web ...
- Android -- 实现RecyclerView可拖拽Item
1,今天和大家一起实现RecyclerView可拖拽Item,主要是使用RecyclerView结合ItemTouchHelper来实现的,来看一下效果 2,看一下怎么实现的呢,很简单,只需要给rec ...
- linux中截取文件的特定字节(去掉utf-8 bom头)
事出有因,之所以要截取特定字节,是为了给utf-8编码的文件去掉bom头. bom头好去啊,notepad++文本编辑器中就有这个功能啊.可是,问题所在是要编辑的文件太大了,300MB,小电脑卡shi ...