k8s中graphite_在Graphite中存储Hystrix的几个月历史指标
k8s中graphite
 Hystrix的殺手級功能之一是低延遲,數(shù)據(jù)密集和美觀的儀表板 : 
 
即使這只是Hystrix實際操作的副作用(斷路器,線程池,超時等),它也往往是最令人印象深刻的功能。 為了使其工作,您必須包括hystrix-metrics-event-stream依賴項:
<dependency><groupId>com.netflix.hystrix</groupId><artifactId>hystrix-metrics-event-stream</artifactId><version>1.4.0-RC6</version> </dependency>并注冊內置的servlet,例如在嵌入式Jetty中:
import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder;//...Server server = new Server(8090); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.NO_SESSIONS); server.setHandler(context); final HystrixMetricsStreamServlet servlet = new HystrixMetricsStreamServlet(); final ServletHolder holder = new ServletHolder(servlet); context.addServlet(holder, "/hystrix.stream"); server.start();當然,如果您已經(jīng)有一個Web應用程序,則要簡單得多。 這是Spring Boot中的一個示例:
@Bean public ServletRegistrationBean servletRegistrationBean() {return new ServletRegistrationBean(new HystrixMetricsStreamServlet(), "/hystrix.stream"); }從現(xiàn)在開始,您的應用程序將以JSON格式流式傳輸實時指標,可以使用開源儀表板輕松使用它,該儀表板幾乎完全用JavaScript編寫:
$ git clone git@github.com:Netflix/Hystrix.git $ cd Hystrix $ ./gradlew :hystrix-dashboard:jettyRun幾秒鐘后,您可以瀏覽到localhost:7979并指向/hystrix.stream servlet。 假設您的應用程序是集群的,則很可能會將Turbine添加到聚會中。
如果您使用的是Hystrix,您已經(jīng)了解了所有這些。 但是,我最常被問到的問題之一是: 為什么這些指標如此短期 ? 的確,如果您查看上面的儀表板,則指標的滑動窗口范圍為10秒到1分鐘。 如果您收到有關生產(chǎn)中某些事件的自動電子郵件通知,經(jīng)歷了短暫的緩慢運行或聽到了客戶的性能問題,則有關此事件的相關統(tǒng)計信息可能已經(jīng)丟失–或隨后被普遍不穩(wěn)定所掩蓋。
這實際上是設計使然–您不能同時擁有低延遲,近乎實時的統(tǒng)計數(shù)據(jù)以及持久的數(shù)據(jù),即使不是幾個月前也可以瀏覽數(shù)天。 但是您不需要兩個用于短期指標和長期趨勢的監(jiān)視系統(tǒng)。 相反,您可以直接使用Hystrix指標提供Graphite 。 幾乎沒有代碼,到處都是膠水。
將指標發(fā)布到Dropwizard指標
事實證明,所有構建塊都可用并準備就緒,您只需連接它們即可。 Hystrix指標不僅限于發(fā)布servlet,還可以插入其他使用者,例如Dropwizard指標 :
<dependency><groupId>com.netflix.hystrix</groupId><artifactId>hystrix-codahale-metrics-publisher</artifactId><version>1.4.0-RC6</version><exclusions><exclusion><groupId>com.codahale.metrics</groupId><artifactId>metrics-core</artifactId></exclusion></exclusions> </dependency> <dependency><groupId>io.dropwizard.metrics</groupId><artifactId>metrics-core</artifactId><version>3.1.0</version> </dependency>您必須顯式連接這兩個庫,我使用Spring Boot進行編排,請注意, MetricRegistry 由Boot自動創(chuàng)建 :
@Bean HystrixMetricsPublisher hystrixMetricsPublisher(MetricRegistry metricRegistry) {HystrixCodaHaleMetricsPublisher publisher = new HystrixCodaHaleMetricsPublisher(metricRegistry);HystrixPlugins.getInstance().registerMetricsPublisher(publisher);return publisher; }Hystrix發(fā)布到Dropwizard指標的那一刻,我們可以將這些指標重定向到SLF4J,JMX或Graphite!
石墨和格拉法納
我們還需要一個依賴項:
<dependency><groupId>io.dropwizard.metrics</groupId><artifactId>metrics-graphite</artifactId><version>3.1.0</version> </dependency>這使metrics庫可以將數(shù)據(jù)直接發(fā)布到Graphite,而又需要一點點膠水:
@Bean public GraphiteReporter graphiteReporter(MetricRegistry metricRegistry) {final GraphiteReporter reporter = GraphiteReporter.forRegistry(metricRegistry).build(graphite());reporter.start(1, TimeUnit.SECONDS);return reporter; }@Bean GraphiteSender graphite() {return new Graphite(new InetSocketAddress("localhost", 2003)); }顯然,您想調整Graphite地址。 設置Graphite和Grafana很麻煩,幸運的是有一個Docker鏡像 :
$ docker run -d \-p 8070:80 -p 2003:2003 -p 8125:8125/udp -p 8126:8126 \--name grafana-dashboard \choopooly/grafana_graphite如果一切設置正確,請直接進入localhost:8070并使用一些儀表板。 這是我的:
新的可能性
內置的Hystrix儀表板React靈敏且實用。 但是,擁有數(shù)天,數(shù)周甚至數(shù)月的統(tǒng)計信息可以提供很多可能性。 內置儀表板無法實現(xiàn)的功能選擇,您可以使用Graphite / Grafana輕松設置:
- 月的統(tǒng)計資料(顯然),相比秒
- 標準儀表板中忽略的指標,例如較低的百分位數(shù),總計數(shù)器等。
- 某些指標的完整歷史記錄,而不是即時值(例如,線程池利用率)
- 能夠在單個圖表上比較看似無關的指標,例如,幾個不同的命令延遲與線程池隊列大小的比較-全部具有完整的歷史記錄
- 深入研究–查看幾周或放大到幾分鐘
示例可以在前面的屏幕截圖中找到。 這完全取決于您的用例,但除非您的系統(tǒng)著火了,否則可以在事件發(fā)生幾小時或幾周后檢查的長期統(tǒng)計信息可能比內置儀表板有用。
 * Hystrix指標發(fā)布者中有一個小錯誤 ,將在1.4.0-RC7中修復 
 **上述功能可在我們的微紅外開源項目中直接使用 
翻譯自: https://www.javacodegeeks.com/2015/02/storing-months-historical-metrics-hystrix-graphite.html
k8s中graphite
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的k8s中graphite_在Graphite中存储Hystrix的几个月历史指标的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 只能备案本人驾驶证(只能备案)
- 下一篇: 如何有效防御ddos攻击(怎样防范ddo
