ZabbixユーザへのPATHの追加方法について
いつもお世話になっております。
AWSのサーバーにて、下記サイトを参考に、Cloudwatchから値を取得するrubyのスクリプトを作成しました。
http://dev.classmethod.jp/cloud/aws/zabbix-with-cloudwatch/
上記サイトの「事前準備」のコマンドでエラーが出ないことを確認し、「スクリプトの設置」を行いました。
スクリプトを設置し、rootユーザでスクリプト実行してみると、値が取得できたのですが、zabbixユーザで実行すると、
下記エラーが出てしまい値が取得できませんでした。
# ./cloudwatch
===
0.6
===
# sudo -u zabbix /usr/lib/zabbix/externalscripts/cloud_watch --region ap-northeast-1 --service RDS --metric CPUUtilization --dimension_name DBInstanceIdentifier --dimension_value HOGEHOGE --statistics Average
===
/usr/share/ruby/vendor_ruby/2.0/rubygems/path_support.rb:68:in `path=': undefined method `+' for nil:NilClass (NoMethodError)
from /usr/share/ruby/vendor_ruby/2.0/rubygems/path_support.rb:30:in `initialize'
from /usr/share/ruby/vendor_ruby/2.0/rubygems.rb:357:in `new'
from /usr/share/ruby/vendor_ruby/2.0/rubygems.rb:357:in `paths'
from /usr/share/ruby/vendor_ruby/2.0/rubygems.rb:379:in `path'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:794:in `dirs'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:658:in `each_normal'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:669:in `_all'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:822:in `each'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:864:in `find'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/specification.rb:864:in `find_inactive_by_path'
from /usr/share/ruby/vendor_ruby/2.0/rubygems.rb:175:in `try_activate'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:132:in `rescue in require'
from /usr/share/ruby/vendor_ruby/2.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from :2:in `'
===
エラーの内容から、rubyやgemのPATHが通っていないためと考えています。
PATHを通すため、zabbixユーザの.bash_profile を探しましたが、zabbixユーザのものはみつかりませんでした。
(rootとec2-userはみつかりました。)
この場合、zabbixユーザへPATHを通すにはどのようにすればよいのでしょうか。
TNK - 投稿数: 4769
zabbixユーザのホームディレクトリが無ければ、ホームディレクト
リを作成して、そこに.bash_profileを新規作成してみてはいかが
でしょうか?
それでだめなら、直接ルビーのスクリプトを起動するのではなく、
シェルスクリプトでラッピングしてしまってはいかがでしょうか?
つまり、呼び出すシェルスクリプト内で環境変数を設定後に、
現在実行しようとされたrubyのスクリプトを呼び出すイメージで
す。
kasugai - 投稿数: 72
ご回答頂きありがとうございます。
>zabbixユーザのホームディレクトリが無ければ、ホームディレクトリを作成して、そこに.bash_profileを新規作成してみてはいかがでしょうか?
ホームディレクトリを作成したところ、エラーが発生しなくなりました。
今後必要に応じて、.bash_profileを作成して不足しているPATHの追加を行っていきます。
ありがとうございました。