我在 CentOS 6.3 上遇到了同样的问题。问题最终是 EPEL yum 存储库中没有 collectd-dbi rpm。您必须从其他地方获取 dbi 插件。
检查您安装了哪个版本的collectd
$ yum info collectd
这就是我的结果
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Installed Packages
Name : collectd
Arch : x86_64
Version : 4.10.7
Release : 1.el6
Size : 1.3 M
Repo : installed
From repo : epel
您可以尝试在网上搜索某人构建的 RPM,但在我的情况下,我找不到适合我的确切版本的 RPM。因此,我认为唯一的解决方案是从源代码中编译 collectd。以下是我编译collectd并安装dbi插件的步骤
克隆 collectd 存储库并检查您已经安装的版本
git clone https://github.com/collectd/collectd.git
cd collectd/
git checkout collectd-4.10.7
安装依赖项来编译collectd。以下是我编译它所需安装的所有内容,但您可能需要安装更多内容。注意,需要 libdbi-devel。如果没有安装,那么在运行配置脚本时,dbi 插件将不会启用并且不会编译。
sudo yum install autoconf automake flex ppl cloog-ppl cpp libgomp mpfr glibc-devel glibc-headers kernel-headers gcc libtool libtool-ltdl libtool-ltdl-devel libgcrypt-devel libgpg-error-devel libdbi libdbi-devel bison byacc db4-cxx db4-devel gdbm-devel perl-ExtUtils-MakeMaker perl-ExtUtils-ParseXS perl-Test-Harness perl-devel
运行以下命令并确保没有错误
./build.sh && ./configure && make
假设编译没有问题,那么您应该编译 dbi 插件。你可以在src/.libs/dbi.so
检查您是否安装了所有链接库
$ ldd src/.libs/dbi.so
linux-vdso.so.1 => (0x00007fff109ff000)
libdbi.so.0 => /usr/lib64/libdbi.so.0 (0x00007fca4a53c000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fca4a338000)
libc.so.6 => /lib64/libc.so.6 (0x00007fca49fa3000)
libm.so.6 => /lib64/libm.so.6 (0x00007fca49d1f000)
/lib64/ld-linux-x86-64.so.2 (0x00007fca4a95a000)
如果看起来不错,您可以将 dbi.so 共享对象安装到 collectd lib 目录,如下所示:
sudo install -o root -g root src/.libs/dbi.so /usr/lib64/collectd/
您现在应该能够重新启动 collectd 并加载 dbi 库
$ sudo service collectd restart
Stopping collectd: [ OK ]
Starting collectd: [ OK ]
希望有帮助