草庐IT

企业如何做好业务监控​?

秦鸣 2023-03-28 原文

为什么要做业务监控?

通常情况下,大部分企业都会做基础设施监控,觉得做好基础设施监控就可以解决大部分问题。至于业务方面监控,等有人来说了再处理就行。殊不知这种想法会有诸多隐患:

1、运维比业务部门经常晚发现业务有问题。

因为业务有问题会最先爆出来,等到基础设施出问题往往已经过了几分钟了。此时业务可能已经焦头烂额了。

2、由于发现业务问题较晚,这个时候有相互调用关系的业务可能也出现了问题。

导致业务故障定位较困难。如果做了业务监控,且做到妙极监控,那么当大量业务出现问题时,我们就能根据最先告警的来判断是哪个业务故障引起的。

3、危害公司利益和自身前途。

第三点也是最要命的,由于上述两个问题导致运维在业务部门乃至整个公司留下不良的影响,长此以往不仅会给公司带来经济损失,对自己的前途也是非常不利的。

因此做好业务监控,可以说是每个运维人员必须要完成的一个任务。

业务监控要做哪些?

1、Web站点监控


对公网服务的Web站点,无论是SAAS的还是在我们自己部署的站点都需要进行站点URL监控。公网站点监控建议使用商业服务进行监控,因为这些服务通常可以从多个地域来检测你当前站点的访问情况,通常是站点状态码和响应速度的监控。

对内网服务的Web站点也需要监控,因为内网是无法从公网访问的,所以内网建议使用自建Prometheus去监控站点的状态和响应速度。

2、健康检查接口

此处做服务健康检查接口监控,提供一个或多个监控API,监控应用自身状态、监控应用和数据库连接状态,监控应用和中间件连接状态。

健康检查接口建议统一使用/health路径的接口,如果是三个接口那么/app_health代表服务、/db_name_health代表数据库连接状态、/middleware_name_health代表中间件连接状态。

单独接口返回APP_OK,db_name_OK,middleware_name_OK,多个接口返回OK表示服务和数据库和中间件正常。

有些JAVA的Sprint框架是自带健康检查接口的,这些直接使用即可。

3、日志监控

首先,所有业务日志要接入日志中心。哪些关键字需要做告警?需要项目经理和开发负责人讨论给出。确保有必要的关键字做告警,避免告警的泛滥。

4、链路追踪

链路追踪可以有选择性的接入,如果业务比较简单平时运行着也没有什么问题可以不用接入。一般业务如果上下游调用链较多,且业务逻辑比较复杂,同时会有大并发需求,对响应速度要求也比较高的可以接入。

主要给用户解决找出响应时间较长的API,并查看是否函数中存在问题。有些商业的链路追踪工具还可以看到SQL语句的问题。这些都可以帮助开发人员更好更快的解决业务代码中的问题。

5、大屏监控

针对业务大屏,首先我们要考虑哪些业务数据要放到大屏中?这里建议放业务负责人或管理层关心的数据。比如:

· 用户在线人数。

· 用户订单实时量数据。

这些数据能让业务负责人或管理层直观的看到当前的业务状况.还可以针对一些预估的异常值进行告警配置。

如何做好业务监控

做好业务监控并不容易,所以这也是很多企业没有做或做的不够完善的原因。要做好业务监控得一步步来。首先,你要有业务监控其次我们需要对业务监控进行梳理,确保所有的监控项都是有意义的。最后,我们要有业务监控巡检和告警处理的流程和机制,确保所有业务监控被发现和及时处理。

另外,业务监控并非仅限于上面所描述的5类,如果一个企业有和业务相关的需要被监控,且并不再上面描述的类型中,都可以通过一些工具或自定义的手段来完成定制化的业务监控需求。

做好业务监控,我们才能让运维的价值得到充分的体现。

有关企业如何做好业务监控​?的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  4. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  5. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  6. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  7. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  8. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  9. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  10. ruby - 如何使用文字标量样式在 YAML 中转储字符串? - 2

    我有一大串格式化数据(例如JSON),我想使用Psychinruby​​同时保留格式转储到YAML。基本上,我希望JSON使用literalstyle出现在YAML中:---json:|{"page":1,"results":["item","another"],"total_pages":0}但是,当我使用YAML.dump时,它不使用文字样式。我得到这样的东西:---json:!"{\n\"page\":1,\n\"results\":[\n\"item\",\"another\"\n],\n\"total_pages\":0\n}\n"我如何告诉Psych以想要的样式转储标量?解

随机推荐