阿里云
订阅广场
发表主题 回复主题
  • 910阅读
  • 1回复

[网络/安全]从零开始搭建ELK+GPE监控预警系统

级别: 论坛版主
发帖
3398
云币
8726

前言 N\Bygjw|  
%-|Po:6  
本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果。 !SIGzj  
oYnA 3  
业务规模 'MPt K  
  • 8个平台
  • 100+台服务
  • 10+个集群分组
  • 微服务600+
  • 用户N+
HFBGM\R02  
u#?K/sU  
面临问题 D Y($  
Y4}!9x  
[a\:K2*'  
随着分布式微服务容器技术的发展,传统监控系统面临许多问题:
  • 容器如何监控
  • 微服务如何监控
  • 集群性能如何进行分析计算
  • 如何管理agent端大量配置脚本
)H#Hs<)Qy  
这些都是传统监控所要面临的棘手问题,那么如何解决当前遇到的问题,GPE横空出世,后面会重点分析。 %up ]"L&i  
?7^H1L  
系统监控 %xf6U>T  
  • 目标群体:系统日志、服务器、容器、系统软件运行指标
  • 日志架构:ELK (Elasticsearch+Logstash+Kibana+Redis)
  • 监控架构:GPE (Grafana+Prometheus+Exporter+Consul)
  • 报警方式:邮件、短信、钉钉以及定义webhook,监控中心7x24小时
ox] LlRK  
RG[3LX/  
ELK日志 w"bQxS~$y  
;_M .(8L  
m;lwMrY\7>  
随着分布式微服务的盛行,功能模块的拆分细化,无论对于开发还是运维,日志的重要性都是不言而喻的,但是如何存储分析定位查看日志,一百个公司可能会有两百种做法。有的很少记录日志,有的日志等级都不分,有的写入文本然后就不管不问了,有的向MySql数据库一扔也没有了下文,等到用户投诉或者被发现问题,才会翻一翻。 Gk*Mx6|N  
那么如何正确优雅的记录日志呢?相信大家对于ELK并不陌生,可能不少小伙伴都接触过,对于中小型互联网创业公司来说,使用ELK搭建日志分析系统的确是一个不错的选择。 afv? z  
-]R7[5C:  
架构图 fzRzkn:=  
ouK&H|'  
MFaK=1  
]]Ypi=<'  
tX cc#!'4C  
工作流程 *Eu ca~%=  
xIf,1g@Cq9  
  • Exporter组件注册到Consul注册中心
  • Prometheus拉取Consul注册中心的servers
  • Exporter组件获取服务器或者系统软件的metrics
  • Grafana配置Prometheus数据源获取其采集数据结合自定义面板实现监控大屏
  • Grafana通过设置Alerting实现监控预警
Z_D8}$!  
GptJQ=pV  
GPE监控 .B{3=z^  
'N)&;ADx-G  
x"K<@mR5G  
ELK主要收集分析预警的是我们平台系统中各个服务的业务日志,一般通过日志组件(log4j 、log4j2 、logback)来收集并写入文本。但是对于系统本身以及一些应用软件的监控预警,这套方案显然是不合适的,这里推荐一下GPE三剑客,当然了GPE是我自己意淫出来的组合。 ++F #Z(p  
R{\vOw:*  
架构图 :Sk0?WU  
*qj @y'1\  
[Pi8gj*  
核心组件 Aga2 I#1r  
`MlQPLH  
Grafana、Prometheus、Exporter(一系列插件),自定义的三剑客,当然了为了使得整合监控程序更加流畅完整,我们加入了注册中心Consul做服务发现,实现动态添加服务,使用邮件、钉钉以及webhook实现异常告警。 &OK(6o2m;  
GPE组件只是其中的一种实现方式罢了,Grafana配合InfluxData提供Telegraf也可以收集很多Metrics,实现更为丰富的大屏监控预警。 NZ/gp"D?  
GN?^7kI  
Grafana _N$3c<dY'  
T|Sz~nO}f  
X,:^})]  
Grafana 是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。 ZK1d3  
Oj\lg2Ck  
4 FW~Y  
Prometheus z J93EtlF  
M9HM:  
g2JNa?z  
Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。
  • 多维数据模型(时序列数据由metric名和一组key/value组成)
  • 在多维度上灵活的查询语言(PromQl)
  • 不依赖分布式存储,单主节点工作.
  • 通过基于HTTP的pull方式采集时序数据
  • 可以通过push gateway进行时序列数据推送(pushing)
  • 可以通过服务发现或者静态配置去获取要采集的目标服务器
  • 多种可视化图表及仪表盘支持
v{$X2z_$w  
如架构图所示,Prometheus通过安装在远程机器上的exporter来收集监控数据。 qxf!]jm  
T=(/n=  
]@vX4G/  
Consul S3EY9:^ C  
" JFx  
qc2j}D0  
Consul有多个组件,但是整体来看,它是你基础设施中用于发现和配置服务的一个工具。它提供如下几个关键功能:
  • 服务发现: Consul的某些客户端可以提供一个服务,例如api或者mysql,其它客户端可以使用Consul去发现这个服务的提供者。使用DNS或者HTTP,应用可以很容易的找到他们所依赖的服务。
  • 健康检查: Consul客户端可以提供一些健康检查,这些健康检查可以关联到一个指定的服务(服务是否返回200 OK),也可以关联到本地节点(内存使用率是否在90%以下)。这些信息可以被一个操作员用来监控集群的健康状态,被服务发现组件路由时用来远离不健康的主机。
  • 键值存储: 应用可以使用Consul提供的分层键值存储用于一些目的,包括动态配置、特征标记、协作、leader选举等等。通过一个简单的HTTP API可以很容易的使用这个组件。
  • 多数据中心: Consul对多数据中心有非常好的支持,这意味着Consul用户不必担心由于创建更多抽象层而产生的多个区域。
ri1D*CS  
Consul被设计为对DevOps群体和应用开发者友好,他非常适合现代的、可伸缩的基础设施。 q.U` mtS  
Fm_^7|  
工作流程 ;e4 15T  
  • Exporter组件注册到Consul注册中心
  • Prometheus拉取Consul注册中心的servers
  • Exporter组件获取服务器或者系统软件的metrics
  • Grafana配置Prometheus数据源获取其采集数据结合自定义面板实现监控大屏
  • Grafana通过设置Alerting实现监控预警
i#Io;  
小结 'FgBYy/  
#(F/P!qk  
ztTj2M"  
如文章开头所述,本文并没有一步步详细记录安装使用教程,这些教程网上都有,即使有坑,相信作为程序员的你也能够解决。不才,在这里只是抛砖引玉,希望各位小伙伴可以学到更多知识。 dKTyh:_{  
uf]S PG#/D  
;{EIx*<d  
还记得许多年前的春天,那时网站还都是静态页面,没有图片也没有绚丽的效果,没有24小时服务的客服,可当初程序员是那么快乐,虽然只有网页三剑客,在网上、在指尖、在BBS中,挥洒着自己的青春热血,如果有一天 我老无所依,请把我留在 在那互联网浪潮里。 1"YN{Ut;G  
_v bCC7Bf8  
|tIr?nXSW3  
现如今,随着云计算、分布式、微服务的盛行,程序员的你是否已经疲倦与自己的CURD,是否已经不屑于与产品汪扯皮,来来来,返回顶部小伙伴们再看看一遍,谁说程序员全部的时间都要敲代码,是时候需要去需找自己的另一片 ~U(`XvR\4  
/2l&D~d"  
_8A  
云栖社区:从零开始搭建ELK+GPE监控预警系统  
[ 此帖被小柒2012在2017-11-22 13:31重新编辑 ]
本帖最近评分记录: 1 条评分 云币 +1
小毛驴123456 云币 +1 我做了一个艰难的决定 加点分给你 2017-11-23
级别: 新人
发帖
2
云币
8
只看该作者 沙发  发表于: 2017-11-23
我做了一个艰难的决定 加点分给你
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个