使用 collectd 进行服务监控

collectd 的官网 collectd.org

collectd 服务

  • 安装
    yaourt -S collectd
    
  • 启动
    sudo systemctl enable collectd
    sudo systemctl start collectd
    

collectd 界面

安装 rrdtool

yaourt -S rrdtool

下载 GCP

cd /usr/share/nginx/html/
sudo git clone https://github.com/pommi/CGP.git

配置 GCP

修改配置文件 /usr/share/nginx/html/CGP/conf/config.php

# collectd's datadir
$CONFIG['datadir'] = '/var/lib/collectd/rrd';

改为

# collectd's datadir
$CONFIG['datadir'] = '/var/lib/collectd';

打开界面

浏览器打开页面 http://localhost/CGP/index.php ,可以看到服务器自身的监控信息。

collectd 插件

collectd 支持很多 插件 ,使用 c 语言开发插件请参考 Plugin architecture - collectd Wiki

Exec 插件使用 shell 脚本来收集系统监控数据。

以监控电池电量为例。

启用 Exec 插件

修改 collectd 配置文件 /etc/collectd.conf

LoadPlugin exec
<Plugin exec>
   Exec "nobody:nobody" "/usr/bin/power-capacity"
</Plugin>

监控笔记本电量脚本

/usr/bin/power-capacity

#!/bin/bash

HOSTNAME="${COLLECTD_HOSTNAME:-localhost}"
INTERVAL="${COLLECTD_INTERVAL:-60}"

while sleep "$INTERVAL"; do
  VALUE=$(echo -n `cat /sys/class/power_supply/BAT0/capacity`)
  echo "PUTVAL \"$HOSTNAME/power/capacity\" interval=$INTERVAL N:$VALUE"
done

为脚本添加可执行权限

sudo chmod a+x /usr/bin/power-capacity

重启 collectd 生效插件

sudo systemctl restart collectd

过一会儿就可以在界面上看到电量监控项。

collectd 多机器监控

监控本机没有什么用处,通过 network 插件,可以将 collectd 配置为服务器或客户端。

  • collectd 服务器

    接受 collectd 客户端的上报的数据。

  • collectd 客户端

    上报数据到 collectd 服务器。

本机配置为 collectd 服务器

通过 network 插件配置为 server 端。

修改 collectd 配置文件 /etc/collectd.conf

LoadPlugin network

<Plugin network>
    <Listen "0.0.0.0" "25826">
        SecurityLevel Sign
        AuthFile "/etc/collectd/passwd"
    </Listen>
</Plugin>

创建密码文件 /etc/collectd/passwd

user0: foo
user1: bar

重启 collectd 服务,生效配置。

其它机器配置为 collectd 客户端

参考前面的 collectd 服务 一节安装 collectd。

通过 network 插件配置为 client 端。

修改 collectd 配置文件 /etc/collectd.conf

LoadPlugin network

<Plugin network>
    <Server "172.17.0.1" "25826">
        SecurityLevel Encrypt
        Username "user0"
        Password "foo"
    </Server>
</Plugin>

服务器的 IP 为 172.17.0.1。

重启 collectd 服务,生效配置,等一会儿就可以在界面上看到客户端机器的监控信息。