【问题标题】:What are the requirements for an application health monitoring system?应用程序健康监控系统有哪些要求?
【发布时间】:2008-09-17 02:45:41
【问题描述】:

应用程序运行状况监控系统至少应该为您(开发人员)和/或您的老板(IT 经理)和/或运营(待命)员工做什么?

除了最低要求,它还应该做什么?

监控“基础设施”应用程序(ms-exchange、apache 等)是否足够,或者是否还需要监控单个用户应用程序、网站和数据库?

如果是后者,你需要了解他们什么?

附录:感谢您的意见,我真的在寻找应用程序级监控而不是基础架构监控,但很高兴了解两者

【问题讨论】:

  • 是的,这是一个自私的问题。那又怎样?
  • 这对于描述您到底要监控什么似乎有点模糊?
  • 这就是我想让你告诉我的...
  • 镇压毫无根据的批评者的好方法。有时我们必须大胆才能让我们的观点通过。

标签: monitoring health-monitoring


【解决方案1】:
  • 应用程序是否正在运行。
  • CPU/内存/网络使用异常。
  • 报告任何未处理的异常。
  • 各种模块的状态(如果适用)。
  • 外部组件(数据库、网络服务、文件服务器等)的状态
  • 待处理的后台任务数(如果适用)。
  • 也许可以跟踪应用程序的使用情况并报告使用最多/最少的功能的统计信息,以便您了解哪些优化最有利。

【讨论】:

  • 这取决于应用程序,但基本上我会得到特定时期(比如 5 分钟)的平均使用情况,如果它高于 X(90% cpu,1 gig 内存,200kbps ...这些值确实取决于应用程序),报告它。
【解决方案2】:

答案是“视情况而定”。为什么需要监控?您的运营人员有多大?你需要报告吗?应用环境是什么?谁在乎申请是否失败?谁在乎是否发生异常?是否有任何错误可恢复?这样的问题我可以问很久。

【讨论】:

  • [@David Medinets]:至于“为什么需要监控”,答案是:积极主动地提供支持,即当出现问题时立即知道,以便我们修复它
【解决方案3】:

好问题。

前段时间,我们一直在寻找一些应用级监控解决方案来满足我们的需求,但没有任何运气。流行的监控解决方案主要用于监控基础设施 - 在我看来 - 它们对于大多数中小型公司的要求来说太复杂了。

我们需要(主要)以下功能:

  • 警报 - 我们想知道 尽快出事
  • 无痛管理 - 托管服务将是 最好的
  • 可视化 - 很高兴知道正在发生的事情并从数据中获取一些知识

因为我们没有找到合适的解决方案,所以我们开始编写自己的解决方案。最后,我们以名为AlertGrid 的启动和运行服务结束。 (当然可以免费查看。)

其背后的想法是提供一种处理自定义监控场景的简单方法。集成 API 非常简单(一个函数有两个必需参数)。目前我们和其他人将其用于:

  • 监控计划任务(cron 作业)
  • 监控整个应用程序逻辑执行
  • 应用程序错误警报
  • 我们还在研究使用 AlertGrid 进行基本基础架构监控的示例

【讨论】:

    【解决方案4】:

    这是一个开放式问题,但我将从物理测量开始。
    1. 我认为托管此站点的所有机器都可 ping 通吗?
    2.所有应该提供内容的机器实际上都在提供一些内容吗? (理想情况下,这将来自外部网络。)
    3. 每台机器上的每个预期服务是否都在运行?
    3a。这些服务最近是否运行过?
    4、每台机器是否有剩余硬盘空间? (不要忘记数据库)
    5. 这些机器有备份吗?最后一次是什么时候?

    一旦制定了系统的物理监控,就可以解决特定于系统的问题吗?

    1. 自动化脚本可以登录吗?花了多长时间?
    2. 有多少用户在直播?是否添加了一百万个虚假帐户?
    ...
    这类问题变得更加模糊,并且可能非常具体。当响应物理测量时,它们通常也可以被动地推导出来。硬盘满了,也许是因为一堆代理创建了太多假用户,所以网络服务器日志被填满了。那种事。

    虽然 A 计划不一定是被动的,但它是许多站点设置监控系统的方式。

    【讨论】:

    • 优点,但是每台机器上运行的应用程序呢?
    【解决方案5】:

    最低限度:确保它正在运行 :)

    但是,其他一些东西会非常有用。例如,CPU 负载、RAM 使用情况以及(在多用户系统中)哪个用户正在运行什么。此外,对于访问网络的应用程序,每个应用程序的网络连接列表。而且(如果您可以访问客户端计算机)能够看到应用程序的“窗口标题”会很酷 - 如果它更改并保存它,可能每 2-3 分钟检查一次。此外,应用程序打开的文件列表可能非常有用,但不是必须的。

    【讨论】:

    • 要监控 Apache、Exchange 和其他常见服务,请查看已经完成所有工作的 Nagios(开源)等软件。只需安装、配置和享受。
    【解决方案6】:

    我认为这相当简单 - 监控,以便在出现问题之前尽早得到警告。这意味着监控依赖关系和应用程序本身。

    如果您不打算提供有关您正在监控的应用程序的详细信息,则很难提供具体信息,因此我建议将其用作一般规则。

    【讨论】:

    • 我的项目是一个用于监控所有类型的 .NET 应用程序的系统
    【解决方案7】:

    至少您想知道系统是否健康。这在定义您的系统是否健康方面是主观的。是否计算机已启动,所需资源是否存在,数据是否正在流经系统,数据是否正常产生结果等等。

    在我的项目中,我们对其中的大部分进行监控,然后进行一些监控。它真的归结为您可以用来分析一切正常的最高级别。在我们的例子中,我们需要知道数据输出。如果您只需要了解这些机器是否正常运行,那么您无需尝试向没有经验的最终用户展示问题所在。

    如果您对数据结果过于认真,也有一些“现成的”工具可以为您完成大量繁重的工作。当我环顾四周时,我特别喜欢Nagios,但我们需要的不仅仅是它可以轻易展示的东西,所以我编写了自己的监控系统。基本上我们还会观察系统中的“特殊性”、内存/cpu 峰值等......

    【讨论】:

    • nagios - 像许多其他人一样 - 只监控“基础设施”应用程序,而不是单个应用程序。您需要什么来确保用户的程序“健康”?
    【解决方案8】:

    感谢大家的意见,我真的在寻找应用程序级监控而不是基础设施监控,但很高兴了解两者

    区别在于:

    • 基础设施监控将是服务器以及 MS Exchange Server、Apache、IIS 等
    • 应用程序监控将是用户机器和他们用来完成工作的特定程序,和/或服务器以及他们运行以保持数据流动的数据移动/后端应用程序

    有时很难划清界限 - 过于简单的定义可能是“如果您的团队编写了它,它就是一个应用程序;如果您购买了它,它就是基础架构”

    我认为在实践中最好同时监控两者

    【讨论】:

      【解决方案9】:

      您需要做的是分解应用程序的业务流程,然后让软件在主要业务组件上发出事件。此外,您需要创建端到端合成交易(例如,模拟最终用户点击网站)。所有这些数据都将被输入监控工具。过去,我为流入 Tivoli Monitoring 的 JMX 适配器的应用程序完成了 JMX,然后我完成了实现“假用户”的脚本,然后将结果通过管道输入到 Tivoli Monitoring 的脚本适配器中。 Tivoli Monitoring 获取数据,然后根据该原始数据创建应用程序运行状况和性能图表。

      【讨论】:

      • 很有趣——但我不是在尝试模拟结果,而是在尝试实时监控实际结果
      • 监控是实时的......仿真部分只是为了让数据流入实时监控仪表板。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多