如何使用 Munin 更改、排序、添加、删除图形?

Joh*_*Mee 6 munin ubuntu-12.04

为了密切关注我们的生产服务器发生了什么,我最近发现了Munin。安装很简单,但我在计算如何添加/删除图表时遇到了很多麻烦。

我发现一些文档建议我可以重新排序它们,但很少讨论如何管理插件配置。大部分插件文档讨论了如何创建插件;而不是使用它们。

这个问题非常基本:我如何使用庞大的插件库,以便我可以看到发生了什么,例如,nginx、mysql 和 memcache。

Joh*_*Mee 19

在每个节点上启用和禁用插件

通过/etc/munin/plugins/节点目录中的符号链接添加和删除图形。

要删除图形,您必须删除符号链接并重新启动节点:

rm /etc/munin/plugins/diskstats
service munin-node restart
Run Code Online (Sandbox Code Playgroud)

要添加图形,您必须在插件目录中将符号链接添加到可执行文件。例如:

ln -s /usr/share/munin/plugins/diskstats /etc/munin/plugins/diskstats
service munin-node restart
Run Code Online (Sandbox Code Playgroud)

当您重新启动 munin-node 时,它​​会立即运行,并且插件的任何问题都会出现在/var/log/munin/munin-node.log. 如果一切顺利,您会看到每个周期都记录了一个 CONNECT;这记录了 master 连接以收集最新数据的事实。

Process Backgrounded
2014/03/10-15:59:47 Munin::Node::Server (type Net::Server::Fork) starting! pid(32231)
Resolved [*]:4949 to [::]:4949, IPv6
Not including resolved host [0.0.0.0] IPv4 because it will be handled by [::] IPv6
Binding to TCP port 4949 on host :: with IPv6
2014/03/10-16:00:04 CONNECT TCP Peer: "[::ffff:203.28.51.227]:45965" Local: "[::ffff:50.23.111.122]:4949"
2014/03/10-16:05:04 CONNECT TCP Peer: "[::ffff:203.28.51.227]:46109" Local: "[::ffff:50.23.111.122]:4949"
2014/03/10-16:10:04 CONNECT TCP Peer: "[::ffff:203.28.51.227]:46109" Local: "[::ffff:50.23.111.122]:4949"
Run Code Online (Sandbox Code Playgroud)

在节点上配置插件

安装必备模块

但也可能是事情不顺利。运行插件时的错误也记录在此处,并且是使插件工作的关键线索。这里我们看到 nginx_request 插件有问题...

2014/03/10-11:25:05 CONNECT TCP Peer: "[::ffff:203.28.51.227]:38474" Local: "[::ffff:50.23.111.122]:4949"
2014/03/10-11:25:19 [22482] Error output from nginx_request:
2014/03/10-11:25:19 [22482]     Use of uninitialized value $LWP::VERSION in sprintf at /etc/munin/plugins/nginx_request line 109.
2014/03/10-11:25:19 [22482]     Can't locate object method "new" via package "LWP::UserAgent" at /etc/munin/plugins/nginx_request line 109.
2014/03/10-11:25:19 [22482] Service 'nginx_request' exited with status 2/0.
Run Code Online (Sandbox Code Playgroud)

插件是可执行程序——主要是用 Perl 编写的。/usr/share/munin/plugins/(Ubuntu) 上安装了一个大集合。由于主要由用户贡献,它们的质量似乎差别很大,但所有这些都需要查询系统以获取所需的数据,然后将其排列为 munin 可以使用的格式。

它们中的大多数依赖于您可能已经或可能尚未安装的 Perl 库,或者用于感兴趣的服务的诊断程序。例如,varnish插件需要 varnishstat。类似的 memcached 插件。

但是回到上面的问题……幸运的是,我在我的时间里已经做了一点 Perl,并做出了一个有根据的猜测,该插件需要一个 perl 模块 LWP::Useragent。如果您打开抛出错误的插件,它可能会为您提供一些关于它的要求的线索。其中一些您可以从命令行运行以查看会发生什么/它们是否有效。

要继续上面的示例,这可能会消除上面显示的 nginx_request 错误:

apt-get install libwww-perl
Run Code Online (Sandbox Code Playgroud)

或者它可能不会...

启用数据源

举个例子,nginx,如果你看一下插件的 src,它会发现它从中收集了它的数据,http://localhost/nginx-status所以你需要启用它。或者,如前所述varnishstat是一个例子。

或者按原样走可能是正确的。

提供环境变量

此外,您可能需要为插件提供一些环境/配置变量。这是通过编辑/etc/munin/plugin-conf.d/munin-node和添加它需要的任何东西来完成的。例如:

[mysql_innodb]
env.warning 0
env.critical 0
Run Code Online (Sandbox Code Playgroud)

您也可以通过创建具有此类内容的新文件来实现此目的,因为它将处理该目录中的任何文件;但我没有尝试。

为了测试插件以使其实际读取环境变量,有一个工具munin-run。只需在插件目录中命名文件即可使用它

% munin-run nginx_request
request.value 10275
% 
Run Code Online (Sandbox Code Playgroud)

这些带有下划线文件名的插件怎么样?

目录中相当多的插件/usr/share/munin/plugins/都有一些插件,如果你只是符号链接到它们就不起作用。它们是最后一个字符带有下划线的字符。例如:memcached_, diskstat_, if_。它们保留下划线,以便可以使用不同的参数重复使用。

要使用它们的符号链接,/etc/munin/plugins/但附加一个参数,该参数 (a) 可能是一个关键字,例如memcached_bytes,(b) 可能引用一个参数,例如:if_eth0。告诉它期望什么的最好方法是阅读插件的内容。一些构造更好的插件甚至可能对您有所帮助。例如:/usr/share/munin/plugins/mysql_ suggest输出合适的后缀列表。

lrwxrwxrwx 1 root root 36 Mar 10 11:45 mysql_bytes -> /usr/share/munin/plugins/mysql_bytes
lrwxrwxrwx 1 root root 31 Mar 10 11:47 mysql_commands -> /usr/share/munin/plugins/mysql_
lrwxrwxrwx 1 root root 31 Mar 10 11:45 mysql_connections -> /usr/share/munin/plugins/mysql_
lrwxrwxrwx 1 root root 31 Mar 10 11:46 mysql_qcache -> /usr/share/munin/plugins/mysql_
Run Code Online (Sandbox Code Playgroud)

配置远程访问

主节点轮询节点以获取数据,因此,如果您使用的是远程主/etc/munin/munin-node.conf节点,请不要忘记通过节点授予它访问权限。

配置主

您可以在同一台主机上运行 master 和 node。或者您可以将 master 放在其他地方 - 如果您正在观看繁忙的生产服务器,这是可取的,因为每隔几分钟生成一次图表是一项相当多的工作。

使用标准文档并将节点添加到/etc/munin/munin.conf.

要了解投票情况如何,请密切关注/var/log/munin/munin-update.log. 当第一次看到来自新插件的数据时,您应该得到一堆记录新 rrd 数据库构建的日志条目:

2014/03/10 12:45:15 [INFO] creating rrd-file for mysql_innodb->free: '/var/lib/munin/caradvice.com.au/syd.caradvice.com.au-mysql_innodb-free-g.rrd'
Run Code Online (Sandbox Code Playgroud)

这也是查找与传入数据相关的警告和错误的地方。

最后一个问题是,默认情况下,节点数据收集每两分钟发生一次,而远程轮询每 5 分钟发生一次。此外,将数据转换为图形可能需要 60 秒,最后第一个条目可能是不可见的单个数据点。因此,除非您摆弄周期时间,否则在正确配置插件和数据出现在图表上之间可能需要 15 分钟。

我没劲了 如果这对其他人没有帮助,它至少会帮助我记住我到底做了什么。

最终的结果是很棒的信息色情...

在此处输入图片说明


EEA*_*EAA 2

我可以删除一些图表并添加其他图表吗?这一切都修复了吗?

从您的配置中删除插件munin-node,该插件的图表将被删除。

我如何添加插件来显示发生了什么,例如 nginx、mysql 和 memcache。

您可以在munin-node.