ソケットをバインドできません:UNIXソケットを使用してNDOUtilsを起動中に権限が拒否されました。

ソケットをバインドできません:UNIXソケットを使用してNDOUtilsを起動中に権限が拒否されました。

フォローするこれらティーボックスへの道:

実際にこのコマンドを実行してみるまではすべてがうまく進んでいました(記事に誤字があってここで修正しました)。

/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

私の結果:

# /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 
Could not bind socket: Permission denied

このコマンドをrootとして実行しました。私はTCPの代わりにUNIXソケットを使うことにしました。再起動後、Nagiosログに次のものが表示されますが、コマンドを手動で実行しようとすると何も表示されません。

[1371152186] ndomod: NDOMOD 1.5.2 (06-08-2012) Copyright (c) 2009 Nagios Core Development Team and Community Contributors
[1371152186] ndomod: Could not open data sink!  I'll keep trying, but some output may get lost...
[1371152186] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.

プロセスツリーを見ると、どんな種類の "ndo"プロセスも実行されていないことがわかります。

netstatを見ると、次のようになります。

unix  2      [ ACC ]     STREAM     LISTENING     841374 /var/run/saslauthd/mux
unix  2      [ ACC ]     STREAM     LISTENING     840356 @/com/ubuntu/upstart
unix  2      [ ]         DGRAM                    840610 @/org/kernel/udev/udevd
unix  10     [ ]         DGRAM                    841162 /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     841337 /var/lib/mysql/mysql.sock
unix  2      [ ]         DGRAM                    857504 
unix  2      [ ]         DGRAM                    847472 
unix  2      [ ]         DGRAM                    841625 
unix  2      [ ]         DGRAM                    841584 
unix  2      [ ]         DGRAM                    841534 
unix  2      [ ]         DGRAM                    841517 
unix  2      [ ]         DGRAM                    841373 
unix  2      [ ]         DGRAM                    841212 
unix  3      [ ]         DGRAM                    840614 
unix  3      [ ]         DGRAM                    840613 

このユーティリティを使用してデバッグを有効にしようとしています。

debug_level=-1
debug_verbosity=1
debug_file=/usr/local/nagios/var/ndo2db.debug
max_debug_file_size=1000000

しかし、何も書かれていません/usr/local/nagios/var/ndo2db.debug

答え1

これは許可です。このプロセスはユーザー "nagios"で始まりますが、root:rootは/usr/local/nagiosのユーザー:グループ所有者であり、ユーザーnagiosはルートグループのメンバーではありません。

# groups nagios
nagios: nagios centreon

とにかく解決策は次のとおりです。

# chmod -R 770 /usr/local/nagios
# chgrp -R nagios /usr/local/nagios

今すぐ起動します。

# /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg 
# ps aux | grep ndo
nagios    4423  0.0  0.0   8220   652 ?        Ss   00:14   0:00 /usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg

これらの権限に関して問題が見つかった場合は、お知らせください。

# stat /usr/local/nagios
  File: `/usr/local/nagios'
  Size: 4096        Blocks: 8          IO Block: 4096   directory
Device: 18h/24d Inode: 75507753    Links: 5
Access: (0770/drwxrwx---)  Uid: (    0/    root)   Gid: (  499/  nagios)
Access: 2013-06-14 00:16:38.195375728 +0400
Modify: 2013-06-13 22:38:29.836402241 +0400
Change: 2013-06-14 00:16:38.196375599 +0400

答え2

Could not bind socket: Permission deniedソケットファイルが書き込まれるディレクトリへの書き込み権限が原因でエラーが発生する可能性があります。

私の場合はchmodそうし/dir/of/socket/fie/なければなりませんでした777。この変更の後、プロセスは正常に開始されます。

/usr/local/nagiosIMOでは権限を変更する必要はありません。ndo2dbプロセスがソケットファイルを書き込もうとするディレクトリです。 [通常は../varですが、ndo設定ファイルの他の場所で設定できます。 ]

関連情報