LoginSignup
0
0

More than 5 years have passed since last update.

Ubuntuでcollectdのapacheプラグインを使おうとするとfile not foundと言われる

Posted at

サーバの各種メトリクスを収集するcollectdというソフトウェアがあります。収集対象ごとにプラグインが用意されていて、その中にApache用のapacheプラグインがあります。このプラグインをUbuntu 14.02で普通に使おうとするとなぜかエラーになり使えません。

collectdのapacheプラグインはApacheのmod_statusの機能を使うので、まずは以下のコマンドでmod_statusを有効にします。

a2enmod status
service apache2 restart

つづいてapacheプラグイン用の設定ファイルを追加します。

/etc/collectd/plugins/apache.conf
LoadPlugin apache
<Plugin apache>
  URL "http://localhost/server-status?auto"
</Plugin>

そしてcollectdを再起動すると以下のようなエラーが表示されます。

# service collectd restart
Restarting statistics collection and monitoring daemon: collectdlt_dlopen (/usr/lib/collectd/apache.so) failed: file not found
lt_dlopen (/usr/lib/collectd/apache.so) failed: file not found
Unable to load plugin apache.
Found a configuration for the `apache' plugin, but the plugin isn't loaded or didn't register a configuration callback.
lt_dlopen (/usr/lib/collectd/apache.so) failed: file not found
lt_dlopen (/usr/lib/collectd/apache.so) failed: file not found
Unable to load plugin apache.
Found a configuration for the `apache' plugin, but the plugin isn't loaded or didn't register a configuration callback.
.

プラグインの実体であるapache.soが見つからないと言われていますが、以下のように存在します。

# file /usr/lib/collectd/apache.so
/usr/lib/collectd/apache.so: ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0f860725fd69ec754142c93f3cd66011b198d852, stripped

こういう場合はおおむねファイルの読み込みに失敗したときのエラーメッセージが「file not found」固定になっているというしょっぱい実装になっている可能性が高く、ファイルが存在しない以外の原因で失敗していることが考えられます。とはいえ何の手がかりも無いので原因究明の難度が高すぎます……

と思ったら、collectdのFAQにそのものずばりなものがありました。

I installed the Debian package of collectd. Now I get the error “lt_dlopen (foo.so) failed: file not found” – but the file exists!

「but the file exists!」という叫びに非常に共感を覚えますが、それはともかく、どうやらプラグインの依存ライブラリが全部そろっていないのが原因のようです。

lddコマンドで調べろとあるのでapache.soの依存ライブラリを見てみます。

# ldd /usr/lib/collectd/apache.so
        linux-vdso.so.1 =>  (0x00007fff1b5c7000)
        libcurl-gnutls.so.4 => not found
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8ae41b0000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8ae4784000)

libcurl-gnutls.so.4が「not found」になっているので、これが不足しているようです。
libcurl4-gnutlsはなぜかdevじゃないバージョンのパッケージが無かったのでdevを入れます。

apt-get install -y libcurl4-gnutls-dev

無事「not found」が無くなりました。依存ライブラリが激しく増えているのはlibcurl-gnutls.so.4の依存ライブラリのせいです。

# ldd /usr/lib/collectd/apache.so
        linux-vdso.so.1 =>  (0x00007fffb8963000)
        libcurl-gnutls.so.4 => /usr/lib/x86_64-linux-gnu/libcurl-gnutls.so.4 (0x00007f854ff06000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f854fb41000)
        libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f854f90d000)
        librtmp.so.0 => /usr/lib/x86_64-linux-gnu/librtmp.so.0 (0x00007f854f6f3000)
        libgcrypt.so.11 => /lib/x86_64-linux-gnu/libgcrypt.so.11 (0x00007f854f473000)
        libgnutls.so.26 => /usr/lib/x86_64-linux-gnu/libgnutls.so.26 (0x00007f854f1b4000)
        libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f854ef6e000)
        liblber-2.4.so.2 => /usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007f854ed5f000)
        libldap_r-2.4.so.2 => /usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007f854eb0d000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f854e8f4000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f854e6d6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8550377000)
        libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f854e4d0000)
        libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f854e2bc000)
        libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f854e07a000)
        libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f854ddae000)
        libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f854db7f000)
        libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f854d97b000)
        libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f854d76f000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f854d554000)
        libsasl2.so.2 => /usr/lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007f854d339000)
        libgssapi.so.3 => /usr/lib/x86_64-linux-gnu/libgssapi.so.3 (0x00007f854d0fa000)
        libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f854cef2000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f854ccee000)
        libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f854cae9000)
        libheimntlm.so.0 => /usr/lib/x86_64-linux-gnu/libheimntlm.so.0 (0x00007f854c8e0000)
        libkrb5.so.26 => /usr/lib/x86_64-linux-gnu/libkrb5.so.26 (0x00007f854c657000)
        libasn1.so.8 => /usr/lib/x86_64-linux-gnu/libasn1.so.8 (0x00007f854c3b6000)
        libhcrypto.so.4 => /usr/lib/x86_64-linux-gnu/libhcrypto.so.4 (0x00007f854c183000)
        libroken.so.18 => /usr/lib/x86_64-linux-gnu/libroken.so.18 (0x00007f854bf6d000)
        libwind.so.0 => /usr/lib/x86_64-linux-gnu/libwind.so.0 (0x00007f854bd44000)
        libheimbase.so.1 => /usr/lib/x86_64-linux-gnu/libheimbase.so.1 (0x00007f854bb35000)
        libhx509.so.5 => /usr/lib/x86_64-linux-gnu/libhx509.so.5 (0x00007f854b8ec000)
        libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f854b633000)
        libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f854b3f9000)

ということで無事apacheのメトリクスが取得できるようになりました。yumの方ではプラグインごとに別パッケージになっているようですが、こういうことにならない為だったわけですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0