MQTT---HiveMQ源码详解(十)Netty-Statistics

HiveMQ中的内置的统计非常之多,多到可怕,几乎你能想到的统计hivemq都已经帮你想全了;同时第三方plugin还可以定义属于自己的统计。

它的实现采用了Metric框架实现统计、度量。收集的数据可以通过多种数据报告接口,这样可以监控broker运行中的各种数据来监控broker。


所谓统计无外乎就是采集埋点、输出报告

采集埋点

类图

这里写图片描述

  1. 通过StatisticsInitializer实现handlerAdded方法,为pipeline中添加GlobalTrafficCounter(流量计数器)、GlobalMqttMessageCounter(mqtt消息数量计数器)、MqttConnectionCounterHandler(mqtt连接数量计数器)

  2. GlobalTrafficCounter继承netty的GlobalTrafficShapingHandler,来获得流量计数器,来统计当前(最后5秒)的读/写流量、累计的读/写流量。

  3. GlobalMqttMessageCounter根据当前的mqtt消息类型,来分类统计每种mqtt消息的读/写的数量和吞吐。

  4. MqttConnectionCounterHandler通过监听mqtt connect消息以及当前Channel的closeFuture来统计总连接数、当前连接数;MqttConnectionCounter数据细粒度的一个带ReadWriteLock的统计器来为当前连接数提供increase、decrease以及当前连接数、最大连接数查询的类。

这样通过统计的handler对连接、流量、数量进行统计,达到统计埋点,以达到收集broker中的流量信息。
官网还为我们提供了jvm监控插件。
https://github.com/hivemq/jvm-metrics-plugin

输出报告

既然数据已经收集到Metric中,那么输出就相对来说很简单了,而且输出都是属于个性化的需求,hivemq则采用的是plugin的方式来输出报告的,官网为我们提供了几种输出的插件。
1、以$SYS主题发布出去。https://github.com/hivemq/hivemq-sys-topic-plugin
2、输出到influxdb中去。https://github.com/hivemq/influxdb-monitoring-plugin

内置的采集信息列举

下面的列举基本上都是见名知意的,博主就不给大家一一解释了。

    private final Counter incomingMessageCount;
    private final Counter outgoingMessageCount;
    private final Meter incomingMessageRate;
    private final Meter outgoingMessageRate;
    private final Meter outgoingConnAckRate;
    private final Counter outgoingConnAckCount;
    private final Meter incomingConnectRate;
    private final Counter incomingConnectCount;
    private final Meter incomingDisconnectRate;
    private final Counter incomingDisconnectCount;
    private final Meter incomingPingReqRate;
    private final Counter incomingPingReqCount;
    private final Meter outgoingPingRespRate;
    private final Counter outgoingPingRespCount;
    private final Meter incomingPubAckRate;
    private final Counter incomingPubAckCount;
    private final Meter outgoingPubAckRate;
    private final Counter outgoingPubAckCount;
    private final Meter incomingPubCompRate;
    private final Counter incomingPubCompCount;
    private final Meter outgoingPubCompRate;
    private final Counter outgoingPubCompCount;
    private final Meter incomingPublishRate;
    private final Counter incomingPublishCount;
    private final Meter outgoingPublishRate;
    private final Counter outgoingPublishCount;
    private final Meter incomingPubRecRate;
    private final Counter incomingPubRecCount;
    private final Meter outgoingPubRecRate;
    private final Counter outgoingPubRecCount;
    private final Meter incomingPubRelRate;
    private final Counter incomingPubRelCount;
    private final Meter outgoingPubRelRate;
    private final Counter outgoingPubRelCount;
    private final Meter outgoingSubAckRate;
    private final Counter outgoingSubAckCount;
    private final Meter incomingSubscribeRate;
    private final Counter incomingSubscribeCount;
    private final Meter outgoingUnsubAckRate;
    private final Counter outgoingUnsubAckCount;
    private final Meter incomingUnsubscribeRate;
    private final Counter incomingUnsubscribeCount;
    private final Counter halfFullQueueCount;
    private final Meter droppedMessageRate;
    private final Counter droppedMessageCount;
    private final Meter publishQueueRate;
    private final Counter publishQueueSize;
    private final Counter persistentSessionsActive;
    private final Histogram connectionsOverallMean;
    private final Histogram incomingMessageSizeMean;
    private final Histogram outgoingMessageSizeMean;
    private final Histogram incomingPublishSizeMean;
    private final Histogram outgoingPublishSizeMean;
    private final Histogram retainedMessagesMean;
    private final Meter retainedMessagesRate;
    private final Counter subscriptionsCurrent;
    private final Timer pluginTimerAfterLoginSuccess;
    private final Timer pluginTimerAfterLoginFailed;
    private final Timer pluginTimerAuthentication;
    private final Timer pluginTimerRestrictions;
    private final Timer pluginTimerAuthorization;
    private final Timer pluginTimerPermissionsDisconnectPublish;
    private final Timer pluginTimerPermissionsDisconnectSubscribe;
    private final Timer pluginTimerConnect;
    private final Timer pluginTimerDisconnect;
    private final Timer pluginTimerConnAckSend;
    private final Timer pluginTimerPubAckSend;
    private final Timer pluginTimerPubAckReceived;
    private final Timer pluginTimerPubCompReceived;
    private final Timer pluginTimerPublishReceived;
    private final Timer pluginTimerPublishSend;
    private final Timer pluginTimerSubscribe;
    private final Timer pluginTimerUnsubscribe;
    private final Timer pluginTimerPing;
    private final Timer pluginTimerPubRelReceived;
    private final Timer pluginTimerPubRecReceived;
    private final Timer pluginTimerPubCompSend;
    private final Timer pluginTimerPubRecSend;
    private final Timer pluginTimerPubRelSend;
    private final Timer pluginTimerSubAckSend;
    private final Timer pluginTimerUnsubAckSend;
    private final Meter totalExceptionRate;

MQTT交流群:221405150

RocketMQ交流群:10648794

NewSQL交流群:153575008


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

推荐阅读更多精彩内容