如何通过New Relic可视化监控EC2实例中Java服务的运行状态
解决Java服务启停状态可视化问题(New Relic环境)
1. 自定义服务运行状态指标
New Relic默认没有直接暴露服务启停状态的指标,你可以通过Micrometer手动埋点生成自定义指标:
- 在服务启动完成后,注册一个值为
1的Gauge指标(代表运行中) - 通过JVM关闭钩子,在服务停止时将该指标值设为
0(代表已停止)
示例代码(Spring项目适配):
import io.micrometer.core.instrument.Gauge; import io.micrometer.core.instrument.MeterRegistry; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; import java.util.concurrent.atomic.AtomicInteger; @Component public class ServiceStatusTracker { private final AtomicInteger runningStatus = new AtomicInteger(0); public ServiceStatusTracker(MeterRegistry meterRegistry) { // 注册自定义指标到New Relic Gauge.builder("service_running_status", runningStatus, AtomicInteger::get) .description("Service running status: 1 = active, 0 = stopped") .register(meterRegistry); } @PostConstruct public void onServiceStart() { // 服务启动完成后标记为运行中 runningStatus.set(1); } static { // 添加JVM关闭钩子,服务停止时更新状态 Runtime.getRuntime().addShutdownHook(new Thread(() -> { // 非Spring项目需自行获取ServiceStatusTracker实例 ServiceStatusTracker tracker = ...; tracker.runningStatus.set(0); })); } }
部署后,New Relic会自动采集这个service_running_status指标。
2. 构建可视化仪表盘
登录New Relic控制台后,按以下步骤创建状态展示:
- 进入Dashboards页面,点击创建新仪表盘
- 添加Single Value图表:选择自定义指标
service_running_status,配置阈值规则——值为1时显示绿色(标注“运行中”),值为0时显示红色(标注“已停止”) - 可选添加Line Chart:展示一段时间内的状态变化曲线,方便回溯启停历史
3. 适配电视端展示
- New Relic仪表盘支持全屏模式,直接在电视端浏览器打开仪表盘的全屏链接即可
- 简化仪表盘布局:只保留状态相关的图表模块,移除冗余信息,确保电视大屏上清晰可见
- 确保电视端设备能访问New Relic控制台,必要时配置内部网络权限或VPN
辅助判断:利用New Relic实体状态
除了自定义指标,还可以结合New Relic的实体状态作为补充:
- 当服务停止上报数据超过预设时长(默认5分钟),New Relic会将该服务实体标记为Not Reporting,你可以在仪表盘添加实体状态卡片,作为服务异常停止的辅助提示
内容的提问来源于stack exchange,提问作者Ankit Narang
相关产品推荐
相关产品推荐

