大数据监控平台实践之路

综述


日志和监控开发人员工作中必不可少的两只眼睛,日志是为了快速定位排查故障,监控是为了发现潜在问题并能及时告警,是故障诊断和分析的重要辅助利器,同样监控系统对大数据平台重要性不言而喻。在发生事故之前就能预警,最大限度降低系统故障率,是监控的终极目标和价值体现。本文旨在帮助大家了解监控系统,并能快速搭建公司的监控平台。

监控体系


    监控粒度、监控指标完整性、监控实时性是评价监控系统的三要素。从分层体系可以把监控系统分为三个层次:

业务层:业务系统本质目的是为了达成业务目标,因此监控业务系统是否正常最有效的方式是从数据上监控业务目标是否达成。对业务运营数据进行监控,可及时发现程序bug或业务逻辑设计缺陷,比如注册失败率、登录失败率、付款失败率等。业务系统的多样性决定了应由各个业务系统实现监控指标开发。

应用层:对应用的整体运行状况进行了解、把控,如果将应用当成黑盒子,开发、运维就无从知晓应用当前状态,不能及时发现潜在故障。应用监控不应局限于业务系统,还包括各种中间件、计算引擎,如Spark、Jstorm、redis、zookeeper、kafka等。常用监控数据:JVM堆内存、GC、CPU使用率、线程数、TPS、吞吐量等。一般通过抽象出的统一指标收集组件,收集应用级指标,比如不管是支付系统还是交易系统,都要监控jvm内存使用。

系统层:实时掌握服务器工作状态,留意性能、内存消耗、容量和整体系统健康状态,保证服务器稳定运行。监控指标:内存、磁盘、CPU、网络流量、系统进程等系统级性能指标

架构设计


    工欲善其事必先利其器,根据对现有监控产品的调研,以及我们对监控的分层介绍、所需解决的问题,可以发现监控系统从收集到分析的流程架构:采集-存储-展示-告警:

Telegraf:插件化的指标收集和指标报告服务,能定制化开发并轻松添加所需插件。已经内置了很多常用服务的插件,这也是我们选择telegraf的原因之一,不用再重复造轮子

InfluxDB:高性能的布式时间序列指标数据库。监控指标收集是非常频繁的,否则就失去了实时性,高频收集的结果就是大数据量,也要对时间序列进行分析,InfluxDB就能满足这种应用场景

Grafana:时间序列分析和监控的开放平台,支持多种数据源(InfluxDB、OpenTSDB时间序列数据库)、丰富的展现形式、支持email/dingding报警

Telegraf


    go语言编写的插件化指标收集agent,编译成一个没有外部依赖的二进制文件,安装部署很便捷,直接下载、解压就行,默认配置文件在$TELEGRAF_HOME/etc/telegraf/telegraf.conf目录下。telegraf插件分为两大类:input、output。

input:收集inputs配置的所有指标,已内置的input插件:elasticsearch、redis、jolokia等。也可直接收集运行agent server的各种指标,比如内存、cpu、磁盘、磁盘IO、进程、swap等。input配置都很简明易用,一般只需配置服务IP地址就可以,如redis指标收集配置:

如果没有内置收集插件,有两种实现方案:

开发input插件,但这需要有GO语言基础

借助于httpjson input插件,该插件请求http url,返回json格式。url配置为自定义指标收集服务,在指标收集服务内实现指标收集功能,然后指标封装成json返回或指标数据直接在服务内入库。我们监控Kettle Carte、spark、jstorm等用的这种实现思路。

output:将收集到的度量数据序列化存储,Telegraf指标由四个部分组成:度量、标签、字段、时间戳。支持以下存储结构:InfluxDB、Graphite、JSON,比如度量输出到InfluxDB的配置:

 urls:InfluxDB端口

database:存储的数据库

 retention_policy:数据保留策略

    调度频率:所有指标收集频率是一样的,在配置文件agent项下配置:

 服务启动

    --config:配置文件 

    --config-directory:配置文件目录,如果有多个配置文件时使用

InfluxDB


    InfluxDB是为时间序列构建的高性能数据存储,提供类SQL的查询语言、特定分析时间序列的功能。通过设置数据保留策略,自动从系统中删除过期数据,释放存储空间。社区版只支持单台服务器,会有单点故障风险,商业版版支持高可用,对我们来说,单机InfluxDB已经能满足需求。选择InfluxDB的原因:

InflluxDB是用GO写的,编译后是一个完全无依赖的二进制文件,安装部署非常便捷,解压缩包即可

高性能时间序列专有数据库,对时间序列的存储和查询都做了优化

类SQL查询语言,降低使用门槛

数据保留策略可以有效的自动清理过期数据

    InfluxDB的数据是以shard groups形式存储,指定时间间隔的数据存储到一个shard groups里,这个时间间隔称为shardGroupDuration。

服务启动

influx进入shell命令行:

常用命令

show databases:查看所有数据库

use db_name:进入数据库

show measurements:显示数据库下所有度量

select * from cpu limit 10:查询一个度量的数据

    Telegraf默认是将收集的数据持久化到telegraf这个数据库下,每个input对应一个度量表,比如zookeeper的指标数据就在zookeeper这个度量下:

查询数据保留策略:

duration:数据保留时间,0表示无限制,InfluxDB默认30分钟检查一次保留策略。ALTER RETENTION语句修改保留7天数据。

replicaN:每个度量在集群里的副本数,副本保证数据高可用性,社区版(单节点)不支持副本数设置

Java Client

Java Client对http api进行了封装,底层用Retrofit框架进行http请求,是线程安全的,只需在一个应用中创建一个InfluxDB Client对象。

client的写操作支持batch,其实现原理

1、创建后台单线程定时调度任务,线程每隔一定时间发送请求:

2、每次writer时,把请求放到BlockingQueue队列里,如果队列大于batch数,就启动线程发送请求:   

Client Api使用例子:

    1、创建数据库连接:

InfluxDB influxDB= InfluxDBFactory.connect(url, user, password);

url:InfluxDB的地址和端口,比如 http://localhost:8086

user/password:InfluxDB的用户名/密码

2、设置访问的数据库:

influxDB.setDatabase(database);

3、数据写入:

Point.Builder builder = Point.measurement(measurement);

 builder.tag(tags);

 builder.fields(fields);

 influxDB.write(builder.build());

Grafana


    Grafana是一个指标查询、可视化、监控的开源应用,有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus和OpenTSDB作为数据源。

Grafana主要特性

灵活丰富的图形化组件,包括热力图、直方图、地图等

在同一dashboard内可以混合多种展示组件

开源社区有大量的插件可供选择,包括数据源插件、图形插件、通知插件

可以在同一个视图里使用多个不同数据源

简单使用介绍

安装:

下载&解压二进制包

配置:

配置文件:$GRAFANA_HOME$/conf

配置端口号、Email、登录用户

start:

命令:/opt/grafana/bin/grafana-server start

访问:

http://ip:port

连接数据源、图表开发、报警设置可参看官方文档

本文首发于公众号:data之道

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容