zabbix_agentのSolarisへのインストールについて

こんにちは。tigerと申します。
*初投稿です。宜しくお願いします。

zabbix_agentをSolaris 5.8のサーバへインストールしたのですが、下記エラーが出てコンパイルNGになりました。
(make -dでの実行結果)

make[4]: Entering directory `/export/spare/zabbix-1.1.2/src/libs/zbxsysinfo'
if gcc -DHAVE_CONFIG_H -I. -I. -I../../../include -static -g -O2 -MT common.o -MD -MP -MF ".deps/common.Tpo" -c -o common.o `test -f 'common/common.c' || echo './'`common/common.c; \
then mv -f ".deps/common.Tpo" ".deps/common.Po"; else rm -f ".deps/common.Tpo"; exit 1; fi
Putting child 0x0004e248 (common.o) PID 2318 on the chain.
Live child 0x0004e248 (common.o) PID 2318
common/common.c: In function `CHECK_DNS':
common/common.c:2104: invalid use of undefined type `struct __res_state'
common/common.c:2105: invalid use of undefined type `struct __res_state'
common/common.c:2108: invalid use of undefined type `struct __res_state'
common/common.c:2109: invalid use of undefined type `struct __res_state'
common/common.c:2110: invalid use of undefined type `struct __res_state'
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x0004e248 PID 2318
make[4]: *** [common.o] Error 1
Removing child 0x0004e248 PID 2318 from chain.
make[4]: Leaving directory `/export/spare/zabbix-1.1.2/src/libs/zbxsysinfo'
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x0004e248 PID 2305
make[3]: *** [all-recursive] Error 1
Removing child 0x0004e248 PID 2305 from chain.
make[3]: Leaving directory `/export/spare/zabbix-1.1.2/src/libs/zbxsysinfo'
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x00055358 PID 2252
make[2]: *** [all-recursive] Error 1
Removing child 0x00055358 PID 2252 from chain.
make[2]: Leaving directory `/export/spare/zabbix-1.1.2/src/libs'
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x00055980 PID 2246
make[1]: *** [all-recursive] Error 1
Removing child 0x00055980 PID 2246 from chain.
make[1]: Leaving directory `/export/spare/zabbix-1.1.2/src'
Got a SIGCHLD; 1 unreaped children.
Reaping losing child 0x00056f28 PID 2240
make: *** [all-recursive] Error 1
Removing child 0x00056f28 PID 2240 from chain.

インストールしたのは、zabbix-1.1.2で、同じソースファイルをlinuxサーバへインストールしたときは問題なく出来ました。

ご教授いただけるとありがたいです。

宜しくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー kodai の写真

こんにちは。こちらこそよろしくお願いします。

タイトルが文字化けしてしまっているようで申し訳ありません。
データベース内でも文字化けしてしまっているようなので、よろしければどのようなタイトルだったのか教えて頂けますか?

ご質問についてですが、こちらにSolaris環境がないので検証はできない状態のため、推測での回答になってしまいます。

makeのログからすると、__res_state構造体(リゾルバ関連の構造体です)が含まれるヘッダファイルが読み込めていないと思われます。システムのどこかに上記の構造体が書かれたヘッダファイル(〜.h)があるはずですので、まずはそれを探してみてください。

ヘッダファイルが見付かったら、zabbixのソースコードのsrc/libs/zbxsysinfo/common.c、もしくは、include/common.hの先頭(inclideの行がある場所あたり)に以下の行を追加してください。

#include <__res_stateが含まれるヘッダファイル名>

うまくヘッダファイルが読み込めれば、コンパイルが成功するはずです。

試せないので正確なことが言えないのですが、来週頭にでも会社のsolarisマシンを拝借して試してみます。

ユーザー tiger の写真

早速のご返事、有難うございます。

タイトルは”zabbix_agentのSolarisへのインストールについて”でした。

本日、再チャレンジということで、もう一度最初から行ってみました。
前回./configureをする際に、--enable-agentというオプションを付けて行って先の結果になったのですが、今回はオプションなしで./configureを行い、makeを行ったところ、エラーは出ませんでした。

root[14]fcptasb% make
Making all in src
make[1]: Entering directory `/export/spare/zabbix-1.1.2/src'
make[2]: Entering directory `/export/spare/zabbix-1.1.2/src'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/export/spare/zabbix-1.1.2/src'
make[1]: Leaving directory `/export/spare/zabbix-1.1.2/src'
make[1]: Entering directory `/export/spare/zabbix-1.1.2'
make[1]: Nothing to be done for `all-am'.
make[1]: Leaving directory `/export/spare/zabbix-1.1.2'
root[15]fcptasb%

エージェント側のインストールとして上記で正しいのか教えていただけますか?(本ページのインストールガイドは確かにオプションは付いていませんでした。ググって他の方のメモなどを見ると上記オプションが付いてインストールするように書かれていたの結構あったので、付けるものだと思ってました。サーバ側をインストールする際は、--enable-serverのオプションを付けて行ったというのもあります。ちなみにエージェント側はmake installは必要ないですよね?)

agentのバイナリファイルは本家よりzabbix_agents_1.0_Solaris8_UltraSparc.tar.gzをダウンロードしてこれを使っています。
設定も終わって起動したところ、無事にzabbix_agentdのプロセスも上がり、見た目はよさげなのですが、サーバからの接続がNG(Cannot connect to [fcptasb] [Connection refused]←zabbix_server.logより)で、これは十中八九、設定かと思いますが、上記エージェントのインストールが正しいか不安があったので、念のために確認したい次第です。

お忙しいところ申し訳有りませんが、宜しくお願いいたします。

ユーザー tiger の写真

サーバ接続NGの件ですが、zabbix_agentd.confにてListenPortのコメントアウトを外してませんでした。

大変お騒がせいたしました。。。

ユーザー kodai の写真

zabbix 1.1.2を利用されているのであれば、configure時に--enable-agentのオプションは必要です(zabbix 1.0までは必要ありませんでしたが)。上記ログからも、何もコンパイルせずにmakeが終了してしまっていると思われます。

また、make installも実施する必要があります。実施しない場合は、agentのバイナリファイルと、zabbixのライブラリファイルを手動でコピーする必要があります。

zabbix 1.0のagentでは、zabbix 1.1のmanagerから取得できない監視項目があります。不便がなければ問題はありませんが、zabbix 1.1のmanagerの機能を全て利用されたいのであれば、--enable-agentオプションを付けてコンパイルすることをお勧めします。

ユーザー tiger の写真

--enable-agentのオプションとmake installは必要なのですね。
ご教授有難うございます。

とすると(また最初に戻って)_res_state構造体エラーの原因を見つけるべきですね。

もう少し探って見ます。

ユーザー ksato の写真

はじめまして。こちらへの投稿は初めてになります。
当方Solaris 10でzabbix_agentd 1.1.4を動かしてます(最近放置状態ですけど)。

__res_stateは/usr/include/resolv.hで定義されています。
configureのログでresolv.hを発見できているか確認してみてはいかがでしょうか。
ウチは↓のように出てました。
checking for sys/var.h... yes
checking resolv.h usability... yes
checking resolv.h presence... yes
checking for resolv.h... yes

resolvに関しては私も以前のzabbixで別の問題に当たりました。
そのときはライブラリのほうのリンクに失敗してたので、
$ make LIBS="-lresolv"
とやって凌ぎましたが。

ユーザー meja の写真

便乗で質問させてください。
Solaris8 に agent をインストールしようとすると下記のエラーが出ます。
色々調べたのですが…全くわかりません…。

環境は
SunOS meja 5.8 Generic_117350-23 sun4u sparc SUNW,Ultra-5_10
zabbix-1.4.1 です。

make[4]: Entering directory `/export/home/meja/zabbix-1.4.1/src/libs/zbxsysinfo/solaris'
source='cpu.c' object='libspecsysinfo_a-cpu.o' libtool=no \
DEPDIR=.deps depmode=gcc /bin/bash ../../../../depcomp \
gcc -DHAVE_CONFIG_H -I. -I. -I../../../../include -I../../../../src/zabbix_agent/ -g -O2 -c -o libspecsysinfo_a-cpu.o `test -f 'cpu.c' || echo './'`cpu.c
Putting child 0x0007cdd0 (libspecsysinfo_a-cpu.o) PID 27099 on the chain.
Live child 0x0007cdd0 (libspecsysinfo_a-cpu.o) PID 27099
In file included from ../../../../include/sysinc.h:122,
from ../../../../include/common.h:23,
from cpu.c:20:
/usr/include/ldap.h:494: field `ldctl_value' has incomplete type
/usr/include/ldap.h:1083: parse error before `BerElement'
/usr/include/ldap.h:1085: parse error before `BerElement'
/usr/include/ldap.h:1115: parse error before `BerElement'
Reaping losing child 0x0007cdd0 PID 27099
make[4]: *** [libspecsysinfo_a-cpu.o] Error 1
Removing child 0x0007cdd0 PID 27099 from chain.
make[4]: Leaving directory `/export/home/meja/zabbix-1.4.1/src/libs/zbxsysinfo/solaris'
Reaping losing child 0x0007bb58 PID 27089
make[3]: *** [all-recursive] Error 1
Removing child 0x0007bb58 PID 27089 from chain.
make[3]: Leaving directory `/export/home/meja/zabbix-1.4.1/src/libs/zbxsysinfo'
Reaping losing child 0x0006e3f0 PID 27073
make[2]: *** [all-recursive] Error 1
Removing child 0x0006e3f0 PID 27073 from chain.
make[2]: Leaving directory `/export/home/meja/zabbix-1.4.1/src/libs'
Reaping losing child 0x0006e210 PID 27067
make[1]: *** [all-recursive] Error 1
Removing child 0x0006e210 PID 27067 from chain.
make[1]: Leaving directory `/export/home/meja/zabbix-1.4.1/src'
*** Error code 1
make: Fatal error: Command failed for target `all-recursive'

御教示いただけると幸いです。

以上、宜しくお願い致します。 .

ユーザー kodai の写真

こんにちは。

起こっている現象(出力されているエラーログ)が異なる場合、(便乗ではなく)基本的には新しいスレッドを立てるようにしていただけると助かります。その方があとから閲覧される方も見やすいと思いますので :-)

ご質問について、こちらではSolarisの環境がないため試せないのですが、エラーからするとldap.hに問題があるようです。ldapのパッケージは何を利用されているでしょうか?SolarisのLDAPパッケージを使われているのであれば、OpenLDAPを使ってみるとうまくいくかもしれません。

もしくは、LDAPの監視をされる予定がないのであれば、Configure時に--with-ldapオプションを付加しないでコンパイルしてみてください。