1

我现在合作的组织使用 Munin 作为监控工具。我们编写了一个服务,它可以流式传输有关服务的实时数据,这些数据可以由 Javascript 组件显示。运营团队最好希望在 Munin 中显示这些指标,以避免使用另一个系统进行实时监控。

  1. 使用 Munin 使用 Javascript 显示实时数据是否可行且可行?最好我想将其创建为插件,但我们也可以修改一些 Munin HTML 页面或类似页面,只需将 Javascript 组件添加到页面。
  2. 当流的某些属性超过某个阈值时指定警报/警报也会很好。鉴于 (1) 是可行的,那么集成它的一个想法是编写一个外部应用程序来读取实时流并识别何时应该触发警报。当检测到错误时,外部应用程序可以将其写入磁盘上的文件。然后的想法是编写一个 Munin 插件,该插件从该文件中读取并在适用的情况下从 Munin 内触发更改/警报。
4

2 回答 2

2
  1. Munin 每五分钟“轮询”一次机器的数据。为了将流数据点提供给中央 munin 服务器,您需要在服务器上配置流数据的 munin 节点,并编写一个 shell 脚本(可能涉及 curl 和 awk)来获取当前数据。

    在节点上创建一个 munin 插件非常简单,它只是一个 shell 脚本,它以可读的形式将它的数据输出到标准输出。

  2. 设置警报很容易,对于您返回的值,您需要在 munin 插件配置输出中设置警告和临界值。请记住,这些警告也是 5 分钟的时间表,所以它不是“立即的”。

在http://guide.munin-monitoring.org/en/latest/阅读有关 munin 的工作原理

一个简单的 munin 插件示例(系统加载插件的剥离版本):

#!/bin/sh
. $MUNIN_LIBDIR/plugins/plugin.sh

if [ "$1" = "autoconf" ]; then
        echo yes
        exit 0
fi

if [ "$1" = "config" ]; then

        echo 'graph_title Load average'
        echo 'graph_args --base 1000 -l 0'
        echo 'graph_vlabel load'
        echo 'graph_scale no'
        echo 'graph_category system'
        echo 'load.label load'
        print_warning load
        print_critical load
        echo 'graph_info The load average of the machine describes how many processes are in the run-queue (scheduled to run "immediately").'
        echo 'load.info 5 minute load average'
        exit 0
fi

echo -n "load.value "
cut -f2 -d' ' < /proc/loadavg
于 2015-03-07T22:16:43.607 回答
0

将要制作图表的数据保存在数据库中。编写另一个代码来制作图表,然后使用 ajax 请求简单地更新您的图表。制作图表的 php 代码使用 gd 库,或者您可以通过 svg xml 输出来完成,我建议更多。只要时间过去,只需在 ajax 中请求即可获得脚本的结果。那是我只知道

于 2014-05-20T06:56:10.860 回答