业务指标可视化及监控系统搭建

加入新公司后不久开始怀念xflush,大部分情况下只需在页面上配置, 就可以实现业务指标的可视化及异常报警。
尝试利用现有的开源系统搭建,经过调研分析,最终确定的方案为statsd+influxdb+grafana。目前已上线,运行稳定。
具体过程不再细说,其中重要的取舍和配置介绍如下。

设计取舍

graphite:

老牌的企业级的监控工具。
环境搭建繁琐: 参考官方文档和网上各种文档,踩各种坑,加上工作上有其它事情在忙,搭建花了2-3天之久。
性能: graphite的存储组件whisper 是零散小文件存储,这样写指标文件会造成随机io。性能不敢恭维。
界面: 比较传统的树形结构,略显土气。进一步调研时发现了grafana。

引入StatsD

对数据时间范围内汇总,大大减少了db的压力。并能进行min, max, avg多维度统计。

存储选型InfluxDB

使用 Go 语言编写,无需外部依赖。反之OpenTSDB 是一种基于 HBase 的时间序列数据库。
最新版本的存储引擎底层是B+树, 也支持批量写入和缓存。
InfluxDB内部集成支持 graphite数据格式。 每次统计指标的min, max, avg对应到数据库中是一条记录的多个列, 相比graphite降低了不必要的io开销。

可视化Grafana:

界面相当漂亮,功能齐全的度量仪表盘和图形编辑器和查询编辑器。

监控报警

当时使用了kapacitor。 目前grafana4.0 已经release, 直接支持alerting。

业务指标采集

业务指标的主要内容: qps/qpm, 延迟。
对java-statsd-client进行了封装,使用注解和aop xml配置进行业务指标汇报,业务代码无侵入。
java-statsd-client 内部使用udp发送指标统计到StatsD,没有复杂的状态管理。对业务影响很小。另外一种方案就是记录到日志,flume收集后再发送到StatsD,彻底隔离对业务的影响。

性能扩展

StatsD为无状态节点,可通过负载均衡器部署多台保证可靠性和可伸缩性。
InfluxDB存储到达瓶颈后,可以做分库的方案,增加一个代理层。StatsD和Grafana通过代理层访问InfluxDB。

环境搭建

搭建statsD

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要写一个 Java 监控系统,需要以下步骤: 1. 确定监控的目标:你想监控什么?是服务器性能?还是应用程序? 2. 选择监控工具:可以选择 Java Management Extensions (JMX) 或其他第三方工具,例如 JavaMelody、Hyperic HQ 等。 3. 编写代码:根据你选择的监控工具,编写代码实现监控功能。如果使用 JMX,可以创建一个 MBean 并通过 JMX API 访问它。 4. 配置监控:配置监控频率、数据收集方式、触发警告条件等。 5. 部署监控系统:将监控系统部署到生产环境中。 6. 监控数据分析:定期分析监控数据,以识别任何性能问题或故障。 希望这些步骤能帮助你完成写一个 Java 监控系统的任务。 ### 回答2: Java监控系统是用Java编写的一种软件系统,用于监控和管理Java应用程序的运行状态和性能指标。它可以实时地收集和分析应用程序的运行数据,提供实时监控、性能分析和故障诊断等功能。 在设计和开发Java监控系统时,需要考虑以下几个方面: 1. 数据收集:系统需要采集Java应用程序的运行数据,包括CPU使用率、内存占用、线程状态等。可以使用Java Management Extensions(JMX)来收集这些数据,并提供给监控系统进行分析。 2. 数据分析:监控系统需要对收集到的数据进行分析,以识别潜在的性能问题和故障。可以使用数据挖掘和机器学习算法来分析数据,并提供对应用程序性能的预测和优化建议。 3. 实时监控:监控系统需要提供实时的监控功能,可以通过图形界面或命令行界面展示Java应用程序的运行状态和性能指标。可以使用JavaFX或Swing等图形库来实现监控界面,并通过JMX连接到Java应用程序。 4. 告警和通知:监控系统需要能够发现Java应用程序的异常情况,并及时向管理员发送告警通知。可以设置阈值来监控关键性能指标,当指标超过阈值时,触发告警通知。 5. 日志记录:监控系统需要记录Java应用程序的运行日志,以便故障发生时进行问题定位和分析。可以使用日志框架如Log4j或SLF4J来记录日志,并存储到数据库或文件中。 6. 扩展性:监控系统应具备良好的扩展性,能够适应不同规模和复杂度的Java应用程序。可以通过模块化设计和插件机制来实现系统的可扩展性,使其能够方便地添加和删除功能模块。 综上所述,Java监控系统是一个功能强大的软件系统,通过收集和分析Java应用程序的运行数据,为管理员提供实时监控、性能分析和故障诊断等功能,帮助优化和维护Java应用程序的稳定运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值