分布式下有哪些好用的监控组件?

在之前的内容中,分析了分布式系统下的线上服务监控的常用指标,那么在实际开发中,如何收集各个监控指标呢?线上出现告警之后,又如何快速处理呢?本文我们就来看下这两个问题。

常用监控组件

目前分布式系统常用的监控组件主要有 OpenFalcon、Nagios、Zabbix、CAT 等,下面一起来看看这几款组件的应用及相关特性。好钢要用在刀刃上,由于各类监控组件的应用和配置更偏向基础运维,所以本课时的目的是希望你对几种组件有个基本了解,不建议投入太多时间学习组件的配置细节。

OpenFalcon

Open-Falcon 是小米开源的一款企业级应用监控组件,在很多一线互联网公司都有应用,已经成为国内最流行的监控系统之一。

我们在上一课时中介绍的监控指标,Open-Falcon 都有支持,我个人觉得,Open-Falcon 是监控指标最完善的监控组件之一。Falcon有一个特点,它是第一个国内开发的大型开源监控系统,所以更适合国内互联网公司的应用场景,在使用上,Open-Falcon 也要比其他的监控组件更加灵活,关于Open-Falcon 的监控指标,你可以在官网上了解更多的信息:Open-Falcon 官网。

Zabbix

Zabbix 基于 Server-Client 架构,和 Nagios 一样,可以实现各种网络设备、服务器等状态的监控。Zabbix 的应用比较灵活,数据存储可以根据业务情况,使用不同的实现,比如 MySQL、Oracle 或 SQLite 等,Zabbix 的 Server 使用 C 语言实现,可视化界面基于 PHP 实现。

Zabbix 整体可以分为 Zabbix Server 和 Zabbix Client,即 Zabbix Agent,Zabbix对分布式支持友好,可以对各类监控指标进行集中展示和管理,并且有很好的扩展性,采用了微内核结构,可以根据需要,自己开发完善各类监控。

如果希望了解更多具体的应用,还可以去 Zabbix 官网了解相关的内容:ZABBIX 产品手册。

Nagios

Nagios(Nagios Ain’t Goona Insist on Saintood)是一款开源监控组件,和 Zabbix 等相比,Nagios 支持更丰富的监控设备,包括各类网络设备和服务器,并且对不同的操作系统都可以进行良好的兼容,支持 Windows 、Linux、VMware 和 Unix 的主机,另外对各类交换机、路由器等都有很好的支持。

image (18).png

Nagios 对各类网络协议下的监控支持非常好,我们在第 42 课时提过硬件负载均衡的 F5 设备,就可以应用 Nagios 进行监控。

Nagios 虽然监控报警能力强大,但是配置比较复杂,各种功能都要依靠插件来实现,图形展示效果很差。从这个角度来看,Nagios 的应用更加偏向运维,大部分业务开发同学在工作中简单了解就可以。

Nagios 还可以监控网络服务,包括 SMTP、POP3、HTTP、NNTP、PING 等,支持主机运行状态、自定义服务检查,可以进行系统状态和故障历史的查看,另外,使用 Nagios 可以自定义各种插件实现定制化的功能。感兴趣的同学可点击这里查看官网了解一下。

CAT

CAT(Central Application Tracking)早期是大众点评内部的监控组件,2014 年开源,并且在携程、陆金所、猎聘网等大型互联网公司内部广泛应用。

CAT 基于 Java 开发,特别适合 Java 技术栈的公司,对分布式系统支持非常好。在社区开源以后,CAT 又加入了很多特性功能,已经成为一个大而全的应用层统一监控组件,对各类分布式服务中间件、数据库代理层、缓存和消息队列都有很好的支持,可以为业务开发提供各个系统的性能指标、健康状况,并且还可以进行实时告警。

相比其他偏向运维的监控组件,比如 Nagios、Cat 更加关注应用层面的监控指标,支持性能埋点和优化,对开发工程师更加友好。我在工作中和 CAT 打交道比较多,比较推荐这款监控组件,大家有机会可以在自己的公司里推广使用。

点击这里查看 CAT 项目的开源地址,由于篇幅所限,这里只做简单介绍,另外附上点评技术团队发表的技术文章:

  • CAT 3.0 开源发布,支持多语言客户端及多项性能提升

  • 深度剖析开源分布式监控 CAT

监控处理制度

大型互联网公司都非常重视服务稳定性工作,因为服务稳定性直接影响用户体验,影响公司产品在用户心中的口碑,线上服务稳定性是开发者需要重点关注的,那么如何处理线上告警,出现报警如何第一时间处理呢?

一般来说,线上故障处理有下面几个原则:

  • 发现故障,第一时间同步到相关业务负责人,上下游链路;

  • 第一时间快速恢复业务,快速进行故障止血;

  • 及时协调资源,避免故障升级;

  • 事后进行故障复盘和总结,避免再次出现类似问题。

线上告警和故障,相信大部分开发同学都会遇到,故障处理经验的提高是研发工程师进阶和成长当中必须经历的。如何处理各类故障,是否有一个体系化的稳定性知识,也是衡量架构师的重要标准,从故障中我们可以吸取到很多教训,提升服务的稳定性,更好的支持业务。

总结

本文内容分享了常见的分布式监控组件应用,以及线上故障处理制度的相关内容,介绍了 Open-Falcon、Zabbix、Nagios 及 Cat 的应用,一起讨论了线上告警的 SOP 如何制定。

在稳定性建设中,监控指标和监控组件都是我们的工具,是术的层面;故障告警如何处理,如何做好事前监控和事后复盘,是道的层面,术业专攻,再结合合理的制度,才可以把稳定性工作做好。

在你负责的项目中,应用了哪些监控组件呢?又是如何进行配置的呢?欢迎留言分享你的经验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/579565.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习之降维(维度灾难和维度爆炸)

在机器学习中,降维是指通过减少数据的特征维度来简化数据表示的过程。高维数据集可能包含冗余的信息,降维的目标是保留尽可能多的有用信息,同时减少数据的维度。降维的主要优势包括提高模型的计算效率、减轻维度灾难(curse of dimensionality)的影响以及更好地可视化数据。…

MongoDB创建和查询视图(一)

目录 限制和注意事项 应用两种方式创建视图 本文整理mongodb的官方文档&#xff0c;介绍mongodb的视图创建和查询。 Mongodb中&#xff0c;允许使用两种方式来创建视图。 //使用db.createCollection()来创建视图 db.createCollection("<viewName>",{"…

Node.js版本对比

目录 1. node版本与Npm版本对照表 2. node版本与node-sass版本对照表 3. node-sass与sass-loader版本对照表 1. node版本与Npm版本对照表 以往的版本 | Node.js 下面显示最新的对应内容&#xff0c;如果需要查找历史版本&#xff0c;可以进入上面的页面查询 VersionLTSDateV8np…

鸿蒙实战-库的调用(ArkTS)

整体框架搭建 主页面、本地库组件页面、社区库组件页面三个页面组成&#xff0c;主页面由Navigation作为根组件实现全局标题&#xff0c;由Tabs组件实现本地库和社区库页面的切换。 // MainPage.ets import { Outer } from ../view/OuterComponent; import { Inner } from ..…

【微服务核心】Spring Boot

Spring Boot 文章目录 Spring Boot1. 简介2. 开发步骤3. 配置文件4. 整合 Spring MVC 功能5. 整合 Druid 和 Mybatis6. 使用声明式事务7. AOP整合配置8. SpringBoot项目打包和运行 1. 简介 SpringBoot&#xff0c;开箱即用&#xff0c;设置合理的默认值&#xff0c;同时也可以…

Debian Linux完全卸载gitlab-ce

Debian Linux完全卸载gitlab-ce 在Debian上本地安装了gitlab-ce&#xff0c;维护起来比较麻烦&#xff0c;而且占用了80和443端口 后面想改用docker&#xff0c;就想完全卸载gitlab-ce 卸载服务 sudo gitlab-ctl uninstall清理所有产生的数据&#xff0c;会提示等待60秒&am…

如何让机器人具备实时、多模态的触觉感知能力?

人类能够直观地感知和理解复杂的触觉信息&#xff0c;是因为分布在指尖皮肤的皮肤感受器同时接收到不同的触觉刺激&#xff0c;并将触觉信号立即传输到大脑。尽管许多研究小组试图模仿人类皮肤的结构和功能&#xff0c;但在一个系统内实现类似人类的触觉感知过程仍然是一个挑战…

“巴渝工匠杯”2022年重庆市职业院校技能大赛“区块链技术应用创新”赛项竞赛样题

“巴渝工匠杯”2022年重庆市职业院校技能大赛“区块链技术应用创新”赛项【区块链技术应用创新赛项】竞赛样题2022 年 2月目录第一部分&#xff1a;区块链网络部署第二部分&#xff1a;智能合约开发第三部分&#xff1a;区块链应用开发第四部分&#xff1a;文档编写第五部分&am…

Lua的底层原理与C#交互原理浅析【更新中】

目录 lua底层原理浅析 table底层原理浅析 Lua表的C语言定义 原理和实现 userdata lua和C#的交互机制&#xff08;更新中&#xff09; 基本介绍 Lua 与 C/C 的数据交互 Lua 调用 C/C 函数 C/C 调用 Lua 函数 基元类型传递 对象类型传递 Lua 调用 C# 总结 网上有很…

【go语言】CSP并发机制与Actor模型

一、多线程共享内存 1. 概念 多线程共享内存模型是一种并发编程模型&#xff0c;其中多个线程在同一个进程的地址空间中共享相同的内存区域。这种模型允许多个线程并发地读取和写入相同的数据结构&#xff0c;但也引入了一些潜在的问题&#xff0c;其中最常见的问题之一就是…

【WordPress插件】热门关键词推荐v1.3.0 Pro开心版

介绍&#xff1a; WordPress插件-WBOLT热门关键词推荐插件&#xff08;Smart Keywords Tool&#xff09;是一款集即时关键词推荐、关键词选词工具及文章智能标签功能于一体的WordPress网站SEO优化插件。 智能推荐&#xff1a; 热门关键词推荐引擎-支持360搜索、Bing、谷歌&a…

【已解决】c++qt如何制作翻译供程序调用

本博文源于笔者正在编写的工具需要创建翻译文件&#xff0c;恰好将qt如何进行翻译&#xff0c;从零到结果进行读者查阅&#xff0c;并非常推荐读者进行收藏点赞&#xff0c;因为步步都很清晰&#xff0c;堪称胎教式c制作&#xff0c;而且内容还包括如何部署在windows下。堪称值…

百分点科技获国际顶会NeurIPS LLM效率挑战赛冠军

近日&#xff0c;国际人工智能顶会NeurIPS在美国新奥尔良市举办&#xff0c;在同期举行的NeurIPS 2023大语言模型效率挑战赛中&#xff0c;百分点科技以领先第二名8分的显著优势夺得NVIDIA A100赛道冠军。 NeurIPS与ICML、ICLR并称机器学习领域国际三大顶会&#xff0c;代表着人…

离线服务器中python包的安装

因为网络安全原因我们服务器就是离线状态&#xff0c;只能支持本地上传&#xff0c;因此软件安装和python包的安装都很麻烦&#xff0c;这里记录一下python模块离线安装的方法 首先python包下载地址有两个&#xff0c;我只试过第一个 官方下载网站&#xff1a; https://pypi.…

layui(iconPickerFa)图标选择器插件,主要用于后台菜单图标管理

话不多说直接上代码 在页面中引入如下代码 <link rel"stylesheet" href"/template/admin/layui-v2.5.6/css/layui.css"> <script type"text/javascript" src"/template/admin/layui-v2.5.6/layui.js"></script> &…

SpringCloud 整合 Canal+RabbitMQ+Redis 实现数据监听

1Canal介绍 Canal 指的是阿里巴巴开源的数据同步工具&#xff0c;用于数据库的实时增量数据订阅和消费。它可以针对 MySQL、MariaDB、Percona、阿里云RDS、Gtid模式下的异构数据同步等情况进行实时增量数据同步。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.…

CAN协议FPGA篇

一.引言 CAN&#xff08;Controller Area Network&#xff09;总线&#xff0c;即控制器局域网总线&#xff0c;是一种功能丰富的车用总线标准。该协议最初是由德国博世&#xff08;Bosch&#xff09;公司在1983年制定的&#xff0c;之后在美国密歇根州底特律举行的汽车工程师协…

Socks5代理IP在跨境电商与游戏中的应用

随着互联网的迅猛发展&#xff0c;网络已经成为人们日常生活不可或缺的一部分。在这个数字化时代&#xff0c;跨境电商和网络游戏产业蓬勃发展&#xff0c;但伴随而来的是网络安全的威胁与挑战。本文将介绍Socks5代理IP技术&#xff0c;探讨它在网络安全、跨境电商以及游戏中的…

Hive03_数据类型

数据类型 1 案例实操 &#xff08;1&#xff09;假设某表有如下一行&#xff0c;我们用 JSON 格式来表示其数据结构。在 Hive 下访问的格式为 {"name": "wukong","friends": ["bajie" , "lili"] , //列表 Array, "c…

jupyter notebook打开其他盘的文件

jupyter notebook打开其他盘文件 打开jupyter notebook打开terminal输入&#xff1a;jupyter-notebook 路径打开你想打开的工程的文件 打开jupyter notebook 打开terminal 输入&#xff1a;jupyter-notebook 路径 打开你想打开的工程的文件