3

LoadPlugin dbi在 collectd.conf 中取消了注释,但现在重新启动 collectd 给了我:

Stopping collectd:                                         [  OK  ]
Starting collectd: Could not find plugin dbi.
                                                           [  OK  ]

如何启用该插件?操作系统是centos 6.4,yum list all不显示collectd-dbi插件:

[root@virtualbox ~]# yum list all | grep collectd | grep dbi
[root@virtualbox ~]# 

我已经安装libdbi-dbd-mysql了丢失的东西,但这并没有改变任何东西。

4

1 回答 1

4

我在 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  ]

希望有帮助

于 2015-03-23T20:18:26.000 回答