我有一个 VPS,内存只有 237 MiB,上面运行的是 Debian 9
。供应商自己的监控功能和页面只能评价为存在. 我想自己监控下机器的一些指标,用 Prometheu
生态的 node_exporter
+ grafana
显然不合适,因为资源实在是捉襟见肘。
这时候就需要相对来说比较古老的那些使用 RRD
技术的监控采集软件上场了。我选择的是使用 collectd
,具体一套方案是:
collectd
负责采集数据collectd-web
来提供 Web 的 UI/UXfcgiwrap
处理 fcginginx
做 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;
}
}