XuLizhao 's Notes

时光,漫步


  • 首页

  • 技术

  • 文档

  • 关于

  • 搜索
close

聊聊监控系统

时间: 2017-12-29   |   分类: Tech     |   阅读: 970 字 ~2分钟

2017很快就要过去了,也顺便整理下散落在印象笔记的一些片段.

监控系统本来是运维的一个重要组成,因为工作需要也接触了一些开源的监控系统, 下面简要的聊聊我所知道的.

接触监控系统历史

开始接触监控系统是在之前公司时通过运维的Nagios访问一些数据,这个古老的系统之前有很高的占有率, 能很好的提供系统级检测和告警, 感觉界面易用性差些.后来偶然看到Cacti这个网络监控的界面,感觉清爽了许多.

第一个用起来的Munin也是同样基于RRDTool的,当时起码能满足系统和Java应用的性能监控需求.

之后了解到新浪在用Zabbix这个大而全的方案,而且提供了不少扩展. 我对这个复杂的系统有些抵触,并没有使用.

因为最熟悉Python, 也有试用过Graphite,感觉部署和配置都稍显复杂.

近两年随着大数据和时序数据库的火热, 在2016年中开始使用 InfluxDB和Grafana这对组合, 总体功能强大而灵活.

在国内,小米开源的Open-Falcon也有较多应用,我的项目太小暂时用不到:)

总的来说,最近几年的趋势是监控系统用Go开发,一般由专门的时序数据库存储数据.

监控系统组成

监控系统一般由两部分构成:

  • 度量数据收集和可视化
  • 收集尽可能多的性能和状态数据
  • 图形化做有意义的展示
  • 如果发现可疑问题,可以关联其他图表找到原因
  • 错误检测
  • 按需告警, 触发条件越宽松则告警应该越少
  • 避免误报

从监控的层次划分的话,一般包含三层监控:

  • 基础层: 主机的CPU,内存,网络及IO等
  • 中间层: 应用运行的中间件层,Nginx,Tomcat,MySQL,Redis
  • 应用层: 服务端及客户端性能数据,如API访问次数和响应时间等

现代的监控越来越关注应用层和其他层数据的整合能力,具有快速找到系统瓶颈,方便扩容或代码优化.

Java应用的监控

  • Tomcat大部分通过插件形式监控
  • Servo : Netflix的一个Java库,JMX的方式
  • jmxtrans: 也是通过JMX的方式

其他方案

  • StatsD: 这已经成为事实上的通用协议,聚合功能很强大. 作为插件配合telegraf工作
  • bosun : StackExchnage出品,侧重于告警
  • Cabot
  • NetData: 轻量级极简监控
  • monit: 轻量级监控

资源链接

  1. Prometheus : SoundCloud开源的Graphite的替代品/ Prometheus与其他系统比较
  2. Open-Falcon
  3. Graphite
  4. Sensu
  5. Zabbix
  6. RRDtool / Cacti / Munin
  7. Nagios 大家族
    • Nagios / 扩展 nagios-herald
    • 客户端AgentNSClient++
    • 分支/继任Icinga 2
  • 本文作者: xulizhao
  • 本文链接: https://xulizhao.com/blog/monitoring/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
#ops#
静态博客Hexo
微服务
  • 文章目录
  • 站点概览

xulz

时光,漫步

56 日志
3 分类
28 标签
    • 接触监控系统历史
    • 监控系统组成
    • Java应用的监控
    • 其他方案
    • 资源链接
© 2017 - 2023 XuLizhao 's Notes
Powered by - Hugo/ NexT
津ICP备17010344号-1
0%