第三十六章 metrics(4)- metrics-graphite

将metrics report给graphite(carbon-relay)

一、代码

1、pom.xml

1         <!-- metrics-graphite -->
2         <dependency>
3             <groupId>io.dropwizard.metrics</groupId>
4             <artifactId>metrics-graphite</artifactId>
5         </dependency>

依托于springboot1.3.0,版本号还是3.1.2

2、controller

 1 package com.xxx.secondboot.web;
 2
 3 import java.time.LocalDateTime;
 4 import java.util.LinkedList;
 5 import java.util.Queue;
 6 import java.util.concurrent.TimeUnit;
 7
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RequestMethod;
10 import org.springframework.web.bind.annotation.RestController;
11
12 import com.codahale.metrics.Gauge;
13 import com.codahale.metrics.MetricFilter;
14 import com.codahale.metrics.MetricRegistry;
15 import com.codahale.metrics.graphite.Graphite;
16 import com.codahale.metrics.graphite.GraphiteReporter;
17 import com.xxx.secondboot.metrics.TestGraphiteReporter;
18
19 import io.swagger.annotations.Api;
20
21 @Api("测试metrics")
22 @RestController
23 @RequestMapping("/metrics")
24 public class MetricsController {
25     public static Queue<String> queue = new LinkedList<>();//队列
26
27     @RequestMapping(value = "/test1", method = RequestMethod.GET)
28     public String test1() {
29         final MetricRegistry registry = new MetricRegistry();
30         final Graphite graphite = new Graphite("10.0.0.1", 2013);//carbon-relay地址端口
31         final GraphiteReporter reporter = GraphiteReporter.forRegistry(registry)
32                                          .convertRatesTo(TimeUnit.SECONDS)
33                                          .convertDurationsTo(TimeUnit.MILLISECONDS)
34                                          .filter(MetricFilter.ALL)
35                                          .prefixedWith("reporter.graphite")
36                                          .build(graphite);
37         reporter.start(1, TimeUnit.SECONDS);
38
39         registry.register(MetricRegistry.name(TestGraphiteReporter.class, "queue", "size"), new Gauge<Integer>() {
40             public Integer getValue() {
41                 return queue.size();
42             }
43         });
44
45         while (true) {
46             try {
47                 Thread.sleep(1000);
48                 queue.add("job - " + LocalDateTime.now());
49             } catch (InterruptedException e) {
50                 e.printStackTrace();
51             }
52         }
53     }
54 }

注意:

这里的carbon-relay的ip写你真正要发给的relay,该relay的监听接口的IP最好设置为0.0.0.0(carbon.conf),用来监听所有连接它的服务器。这里采用了text协议(TCP协议),也可以使用pickle协议(批量发送--量是可配置的),还可以是UDP协议。

final PickledGraphite graphitePickle = new PickledGraphite("10.0.40.63", 2013);//pickle协议
final GraphiteUDP graphiteUDP = new GraphiteUDP("10.0.40.63", 2013);//UDP

二、测试

启动swagger进行测试,查看relay的listen日志。

  • 04/10/2016 14:21:37 :: MetricLineReceiver connection with ip:56769 established(调用controller方法的时候出现)
  • 04/10/2016 14:24:38 :: MetricLineReceiver connection with ip:56769 closed cleanly(停止该方法的时候出现)

查看graphite-web中左侧的metric name有没有更新

参考:http://metrics.dropwizard.io/3.1.0/manual/graphite/

时间: 2024-08-01 02:41:48

第三十六章 metrics(4)- metrics-graphite的相关文章

Gradle 1.12用户指南翻译——第三十六章. Sonar Runner 插件

本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://github.com/msdx/gradledoc/tree/1.12. 直接浏览双语版的文档请访问: http://gradledoc.qiniudn.com/1.12/userguide/userguide.html. 另外,Android 手机用户可通过我写的一个

第三十六章

将欲翕之,必姑张之:将欲弱之,必姑强之:将欲去之,必姑与之:将欲夺之,必姑予之.是谓微明.柔弱胜强.鱼不可脱于渊,邦利器不可以示人. 第三十六章1 想摆脱失眠?So easy! 将欲翕之,必姑张之 (第三十六章 第1讲) 姑:姑且,先. 上天想要把一件事情关上,就必先把它张开. 我们要懂得天地间阴阳变化的原理,顺着事物发展的原理去走.夜晚要想睡个好觉,白天就要打起精神做事. 各位朋友大家好,今天我们接着来聊<道德经>,看看老子又带给我们什么样的人生启发.今天,我们聊到了第三十六章,这是新的一章

【WPF学习】第三十六章 样式基础

原文:[WPF学习]第三十六章 样式基础 前面三章介绍了WPF资源系统,使用资源可在一个地方定义对象而在整个标记中重用他们.尽管可使用资源存储各种对象,但使用资源最常见的原因之一是通过他们的保存样式. 样式是可应用于元素的属性值集合.WPF样式系统与HTML标记中的层叠样式表(Cascading Style Sheet,CSS)标准担当类似的角色.与CSS类似,通过WPF样式可定义通用的格式化特性集合,并且为了保证一致性,在整个应用程序中应用他们.与CSS一样,WPF样式也能够自动工作,指定具体

奋斗吧,程序员——第三十六章 落花人独立,微雨燕双飞

什么什么,要我别倒下? 废话,不看着情敌们在我面前一个个倒下,然后踩着他们的尸体过去继续战斗,我怎么可能比他们先一刻倒下. 生命的意义在于不屈的抗争,只要情敌一天未清除,我们就不能退出战斗. 我们必须迎着夕阳勇往直前,正义在浪子们的心里点燃了一展明 灯,让鲜花洒满大地,让真爱充斥人间,那就是希望所在. 什么什么,要我退出? 废话,你见过我的刀出了刀鞘而不染血的吗,即使没有敌人的血,也必须有自己的血! 在我的脑海里只有仇人有资格变得刻骨铭心,其他的都无所谓,我就是忘乎所以我就是数典忘宗我就是粪土当

老子《道德经》第三十六章

道生一,一生二,二生三,三生万物. 万物负阴而抱阳,冲气以为和. 人之所恶,惟孤寡不谷,而王公以为称. 故物或损之而益,或益之而损. 人之所教,我亦教之:强梁者不得其死,吾将以为教父. 天下之至柔,驰骋天下之至坚,无有入于无间,吾是以知无为之有益也. 不言之教,无为之益,天下希及之.

第三十六章 MYSQL语句一

4.外键(一对多): 作用:1.约束 2.节省空间 create table department ( id int auto_increment primary key, depart_name varchar(32) not null default '', num int not null default 0 )engine=Innodb charset=utf8; create table userinfo ( id int auto_increment primary key, nam

“全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多线程第三十五章:如何获取线程被等待的时间? 下一章 "全栈2019"Java多线程第三十六章:如何设置线程的等待截止时间 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复&qu

2018-08-24 第三十六课

第三十六课 非关系统型数据库-mangodb 目录 二十四 mongodb介绍 二十五 mongodb安装 二十六 连接mongodb 二十七 mongodb用户管理 二十八 mongodb创建集合.数据管理 二十九 php的mongodb扩展 三十 php的mongo扩展 三十一 mongodb副本集介绍 三十二 mongodb副本集搭建 三十三 mongodb副本集测试 三十四 mongodb分片介绍 三十五 mongodb分片搭建 三十六 mongodb分片测试 三十七 mongodb备份

《Java并发编程实战》第十六章 Java内存模型 读书笔记

Java内存模型是保障多线程安全的根基,这里仅仅是认识型的理解总结并未深入研究. 一.什么是内存模型,为什么需要它 Java内存模型(Java Memory Model)并发相关的安全发布,同步策略的规范.一致性等都来自于JMM. 1 平台的内存模型 在架构定义的内存模型中将告诉应用程序可以从内存系统中获得怎样的保证,此外还定义了一些特殊的指令(称为内存栅栏或栅栏),当需要共享数据时,这些指令就能实现额外的存储协调保证. JVM通过在适当的位置上插入内存栅栏来屏蔽在JVM与底层平台内存模型之间的