2013-11-25 33 views
3

我在collectd.conf取消註釋LoadPlugin dbi,但現在重新啓動collectd給我:collectd - 如何安裝dbi插件?

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

如何啓用該插件?該操作系統是CentOS的6.4和yum list all不顯示collectd-dbi插件:

[[email protected] ~]# yum list all | grep collectd | grep dbi 
[[email protected] ~]# 

我已經安裝了libdbi-dbd-mysql這是缺少的,但這並沒有改變任何東西。

回答

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,有人建,但在我的情況我找不到我的確切版本。正因爲如此,我認爲唯一的解決方案是從源代碼編譯collectd。以下是我帶的步驟編譯collectd並獲得DBI插件安裝

克隆collectd回購和結帳,你已經安裝了

git clone https://github.com/collectd/collectd.git 
cd collectd/ 
git checkout collectd-4.10.7 

安裝依賴編譯collectd版本。以下是編譯時需要安裝的所有內容,但可能還需要安裝更多內容。請注意,libdbi-devel是必需的。如果它沒有安裝,那麼在運行configure腳本時,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 ] 

希望可以幫到

+0

非常好的答案,謝謝。 –