你听说过 Munin 吗? Munin 是一款服务器资源监控工具,可以把各种数据以图表的形式直观地展示出来。

Munin 非常简单,搭建起来也很容易。

这里我把最近搭建 munin 时的配置记录下来。 假设你使用的是 Ubuntu 18.04 LTS

$ sudo apt update
$ sudo apt install munin munin-node nginx

Nginx 配置

server {
        listen 80 default_server;
        listen [::]:80 default_server;

        root /var/www/html;

        # Add index.php to the list if you are using PHP
        index index.html index.htm index.nginx-debian.html;

        server_name _;

        location /munin {
            alias /var/www/html/munin;
        }

        location ^~ /munin-cgi/munin-cgi-graph/ {
            access_log off;
            fastcgi_split_path_info ^(/munin-cgi/munin-cgi-graph)(.*);
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_pass unix:/var/run/munin/fastcgi-graph.sock;
            include fastcgi_params;
        }

}

重启 nginx。

$ sudo service nginx restart

Munin 配置

munin.conf

dbdir   /var/lib/munin
htmldir /var/www/html/munin
logdir /var/log/munin
rundir  /var/run/munin

[servername1.domain]
    address 127.0.0.1
    use_node_name yes

[servername2.domain]
    address [ip address]
    use_node_name yes

以 FCGI 方式运行 Munin

$ sudo chown -R munin:www-data /var/run/munin
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-html.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-html
$ sudo spawn-fcgi -s /var/run/munin/fastcgi-graph.sock -U www-data -u www-data -g www-data /usr/lib/munin/cgi/munin-cgi-graph

这是最麻烦的部分。

默认情况下,/var/run/munin 的所有者是 munin。但在运行时,nginx 用户(www-data)会访问这个套接字。 /var/run/munin 必须同时对 munin 和 www-data 可访问。

首先,需要修改这个目录的所有者。 把 /var/run/munin 的所有者设为 munin,同时让属于 www-data 组的用户也能在其中读写数据。 munin 会运行 cron 任务来刷新后端数据,我观察到它在每次 cron 任务中都会检查这个目录。 套接字文件是只读的,但其他文件可能会被 munin 的 cron 覆盖,这就是我把所有者设为 munin 的原因。

其次,FCGI 进程必须以 www-data(nginx 用户)的身份运行。与 Apache 不同,Nginx 无法直接执行 CGI,而是加载 CGI 守护进程。 从服务器负载的角度看,FCGI 常驻内存,因此比 CGI 更高效。如果使用 CGI,每当用户访问 Web 服务器时,Web 服务器都要启动一个应用进程,这非常笨重,也很浪费 Web 服务器的资源。

如今已经没有 Web 应用框架采用 CGI 了。

重启 Munin

$ sudo service munin-node restart

安装 Munin 节点

在所有节点上执行:

$ sudo apt update
$ sudo apt install munin-node

munin-node.conf

添加这一行。

allow ^12\.34\.56\.78$ # master server ip address

重启节点。

$ sudo service munin-node restart

在浏览器中查看监控

恭喜,一切就绪。现在可以访问 http://{your address}/munin 了。 你会看到漂亮的图表,所有数据每 5 分钟刷新一次。

祝你监控愉快!