Flume监控

最近在对服务做压力测试时,发现当 QPS 达到很高的一个值时,Flume 会出现报错。为了排查原因,一边结合 Telegraf 的数据收集,给 Flume 加上监控和报警;一边查看 Flume 代码。 异常排查 当 QPS 压到3w时,Flume出现一下错误信息。 根据错误信息描述,是 source 接收端的容量达到上线,无法再接收数据,直接 kill 掉了 tail 命令。 在排查问题之前,先了解一下 f…

Telegraf使用

Telegraf 是 InfluxData 下的子项目,是由 Go 语言编写的 metrics 收集、处理、聚合的代理。其设计目标是较小的内存使用,通过插件来构建各种服务和第三方组件的 metrics 收集。Telegraf 具有插件或集成功能,可以直接从其运行的系统中获取各种指标,从第三方API中提取指标,甚至通过 statsd 和 Kafka 消费者服务监听指标。它还具有输出插件,可将指标发送到各种其他数据存储,服务,和消息队列,包括InfluxDB,Graphite,O…

Grafana使用

Grafana 是一款采用 go 语言编写的开源应用,主要用于大规模指标数据的可视化展现。有着非常漂亮的图表和布局展示,功能齐全的度量仪表盘和图形编辑器,支持Graphite、zabbix、InfluxDB、Prometheus 和 OpenTSDB 作为数据源,最新版本4.3.1已经支持 MySQL 数据源。 Grafana 主要特性:灵活丰富的图形化选项;可以混合多种风格;支持多个数据源;拥有丰富的插件扩展;支持用户权限管理。 准备学习 Grafana&nbsp…

InfluxDB使用

最近想对现有的数据可视化做一下调整,以便减少前端的开发工作量,尽量自动化,把主要精力放在数据上。发现 Grafana 非常适合,决定尝试一下。由于目前 Grafana4.2 版本不支持 Mysql 数据源(官方说到4.3版本开始支持),所以,决定再尝试一下最近比较火的时间序列数据库 InfluxDB(没有选择 ElasticSearch 是因为它本身太重,且重查询轻写入。最主要的是目前的数据量不是很大,可用服务器有限)。 InfluxDB 是一个开源分布式时序、事件和指标数据…

Linux下Http高并发参数优化之抓包测试

各种参数设置都调好了,剩下的就是测试。先测试 keepalive 是否生效。虽然参数都按照理论进行一番设置,但由于涉及的环节太多,保不齐哪个地方抽风,就会导致各种问题。所以,测试验证一下比较保险。用 Wireshark 的强大抓包分析功能,可以清晰的看到服务的网络通信过程,也可以加深对 TCP/IP 协议的理解。 抓包分析用的 Wireshark,功能很强大。目前,我只会简单的使用,但对验证 keepalive 的测试够用了。 该工具可以在客户端上使用,也可以在服务端通过&n…

Linux下Http高并发参数优化之keepalive

 Linux 系统参数设置后,应用服务的并发量并不会出现显著的提升。这是因为应用服务一般都是采用 HTTP 协议,而 HTTP 是一种无状态的、基于请求+响应的协议。也就是俗称的 “短连接”,对应的解决方案是 “长连接”。长连接用到 `keepalive` ,它又分 TCP keepalive 和 HTTP keepalive 。 TCP 的 keepalive 是检查当前TCP连接是否活着。 HTTP的 keepalive 是要让一个 TCP 连接活久点。 TCP…

Linux下Http高并发参数优化之TCP/IP基础

最近在做 Nginx 压力测试时,需要对 Linux 系统参数进行调整,网上很多参数设置,都是互相 Copy,没有详细说明。我也只好照着 Copy 调试了一边,莫名其妙的就好使了。应了最近学到的一句话「My Code Works I Don’t Know Why」。既然能好用,那就先用着了吧。这两天正好有时间做总结,Google 各种疑惑,就对其中的一些知识点进行了梳理和扫盲。 起因 虽然经常说到TCP/IP协议,但是真正直接用它们的机会没有。现在很多框架、语言,…

Linux下Http高并发参数优化之TCP参数

 Linux 内核参数考虑的是最通用场景,并不符合用于支持高并发访问的Web服务器的定义,所以需要修改Linux内核参数。其次,对 Nginx 的一些参数,也需要根据服务情况进行调整。 在上一篇中,提到了Unix/Linux 基本哲学之一就是 “一切皆文件”。要提高 TCP 并发量,需要调整文件句柄。 文件句柄 因为 Linux 系统为每个 TCP 建立连接时,都要创建一个 socket 句柄,每个 socket 句柄同时也是一个文件句柄。而…

Storm自动监控报警

 虽然Storm自身提供的有UI,可以查看监控状态。但总不能让人实时的盯着吧。为了满足自己的监控需求,查看了官网,发现有Storm UI REST API,提供了丰富的接口,Storm UI就是基于这个API实现的。有了这些API,我们就可以实现自身的一些监控了。 需求 由于我们没有统一的监控报警平台,需要我们自己根据服务情况来做监控。监控要求很简单: 1、指定的Topology服务出现异常要能及时报警 2、Topology中的bolt…

Flume源码分析(四)Event数据流程图

刚开始梳理这篇内容时,赶上比较忙的业务,一直就闲搁了,最近才有时间,既然花了时间,再放弃或遗忘,就浪费了。如是便重新整理,以便以后用到时可以快速回顾。 Flume 的 Event 是各组件传输数据的载体。通过分析 Event 的数据流,可以更详细的分析 Flume 的各个组件。 先看一下 Event 的大体的流程图。 大体流程说明: 启动 Flume Agent,加载配置,初始…