跳过正文
  1. 博客/

使用 Collectd-web 监控 Linux 节点

·211 字·1 分钟·
Collectd-Web

我有一个 VPS,内存只有 237 MiB,上面运行的是 Debian 9。供应商自己的监控功能和页面只能评价为存在. 我想自己监控下机器的一些指标,用 Prometheu 生态的 node_exporter + grafana 显然不合适,因为资源实在是捉襟见肘。

这时候就需要相对来说比较古老的那些使用 RRD 技术的监控采集软件上场了。我选择的是使用 collectd,具体一套方案是:

  • collectd 负责采集数据
  • collectd-web 来提供 Web 的 UI/UX
  • fcgiwrap 处理 fcgi
  • nginx 做 Web Server

下面简要记录一下对应程序的安装过程和配置。

collectd 直接使用 apt 安装。安装完后,可以对照着文档去编辑 /etc/collectd/collectd.conf,配置开启想要的插件。我配置了以下插件:

LoadPlugin syslog
<Plugin syslog>
    LogLevel info
</Plugin>
LoadPlugin conntrack
LoadPlugin contextswitch
LoadPlugin cpu
LoadPlugin cpufreq
LoadPlugin df
LoadPlugin disk
LoadPlugin entropy
LoadPlugin interface
LoadPlugin iptables
LoadPlugin irq
LoadPlugin load
LoadPlugin memory
LoadPlugin netlink
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin swap
LoadPlugin tcpconns
LoadPlugin uptime
LoadPlugin users
<Plugin df>
    FSType rootfs
    FSType sysfs
    FSType proc
    FSType devtmpfs
    FSType devpts
    FSType tmpfs
    FSType fusectl
    FSType cgroup
    IgnoreSelected true
</Plugin>
<Plugin memory>
    ValuesAbsolute true
    ValuesPercentage true
</Plugin>
<Plugin rrdtool>
    DataDir "/var/lib/collectd/rrd"
</Plugin>
<Plugin tcpconns>
    ListeningPorts true
    AllPortsSummary false
</Plugin>

接着 collectd-web 的安装,我选择直接使用 git 仓库的部署模式,从 github clone 下来:

[root@vps collectd-web]# git remote -v
origin https://github.com/httpdss/collectd-web.git (fetch)
origin https://github.com/httpdss/collectd-web.git (push)

fcgi 的工作交给 fcgiwrap,同样直接使用 apt 安装即可,记得启用对应的 socket unit。

[root@vps nginx]# dpkg -S /lib/systemd/system/fcgiwrap.socket
fcgiwrap: /lib/systemd/system/fcgiwrap.socket
[root@vps nginx]# systemctl enable fcgiwrap.socket

最后配置 nginx,我这里 collectd-web 是 git clone 在了 /opt/collectd-web,读者需要自行修改以匹配自己的实际情况。

server {
    listen *:443 ssl http2;
    ssl_certificate     x.crt;
    ssl_certificate_key x.key;

    server_name abc.com;
    charset utf-8;

    auth_basic     "Restricted area";
    auth_basic_user_file auth.db;

    location / {
        default_type text/html;
        root /opt/collectd-web;
    }

    location /cgi-bin/ {
        gzip off;
        root /opt/collectd-web;
        fastcgi_pass unix:/run/fcgiwrap.socket;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}