用普罗米修斯和格拉法纳乐器来刺豪猪

Adam Bien的Porcupine库使配置用作应用程序隔板的专用执行程序服务变得容易。 我创建了一个扩展,通过MicroProfile Metrics公开了豪猪统计信息。 我们还可以通过Prometheus和Grafana仪表板使仪器可见。

进行此扩展的原因是我们希望对Porcupine线程池的检测进行简单的集成(即插入)。 Grafana允许创建和共享仪表板,这些仪表板可以通过指标变量进行动态配置。 目标是创建类似于以下内容的仪表板,而无需进行大量手动配置:

豪猪

为了实现这一点,您需要执行以下操作:

  • 公开Java EE豪猪统计信息,例如Prometheus格式
  • 在Prometheus实例中擦除Prometheus指标
  • 在Grafana仪表板中查询并显示Prometheus指标

要通过Prometheus公开Porcupine的统计信息,您可以采用多种方法以Prometheus格式发出指标。 我使用的是MicroProfile Metrics,为此我创建了一个小的扩展 ,可以将其添加到项目中:

<dependency>
    <groupId>com.sebastian-daschner</groupId>
    <artifactId>porcupine-metrics</artifactId>
    <version>1.0</version>
</dependency>

该扩展公开了PorcupineMetrics bean,该bean每次应更新指标时都需要通过其updateMetrics()方法调用。 我们可以使用类似于以下内容的计时器:

@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class ExecutorStatisticsUpdater {

    @Inject
    PorcupineMetrics porcupineMetrics;

    @Resource
    ManagedScheduledExecutorService scheduler;

    @PostConstruct
    public void init() {
        scheduler.scheduleAtFixedRate(porcupineMetrics::updateMetrics,
            0, 5, TimeUnit.SECONDS);
    }

}

这将每5秒更新一次指标。 由于Porcupine的统计信息内部,当前需要例如通过计时器明确触发更新机制。 这将在Metrics端点中包括以下管道指标:

vendor:porcupine_pipelines_<pipeline-name>_active_thread_count 2
vendor:porcupine_pipelines_<pipeline-name>_core_pool_size 4
vendor:porcupine_pipelines_<pipeline-name>_current_thread_pool_size 4
vendor:porcupine_pipelines_<pipeline-name>_largest_thread_pool_size 4
vendor:porcupine_pipelines_<pipeline-name>_maximum_pool_size 8
vendor:porcupine_pipelines_<pipeline-name>_min_queue_capacity 60
vendor:porcupine_pipelines_<pipeline-name>_remaining_queue_capacity 100
vendor:porcupine_pipelines_<pipeline-name>_tasks_completed 3034
vendor:porcupine_pipelines_<pipeline-name>_tasks_rejected 30
vendor:porcupine_pipelines_<pipeline-name>_tasks_total 3036

除了使用MicroProfile指标或这个扩展,你可以同样通过其他机制使用普罗米修斯的Java API作为解释暴露的指标,例如这里

然后,我们通过Prometheus抓取暴露的指标,并创建Grafana仪表板,以通过变量为每个管道动态查询和显示统计信息。

首先,我已经共享了豪猪仪表板,类似于您在连接至Prometheus数据源的Grafana.com上的屏幕快照中看到的内容。

您可以看一下使用Porcupine Metricsinstrument-craft-shop项目。

如果您想知道为什么我使用豪猪而不是MicroProfile Fault Tolerance隔板,请观看以下有关隔板和Java EE反压的视频。

发现帖子有用吗? 订阅我的时事通讯,获取有关IT和Java的更多免费内容,技巧和窍门:

成功! 现在检查您的电子邮件以确认您的订阅。

翻译自: https://www.javacodegeeks.com/2018/10/instrumenting-porcupine-prometheus-grafana.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值