ggdG:wq

技術的な事とか日記とかフワッと書く

Nagios+nginxをCentOS7にインストールして動かしたメモ

普通にyum install nagiosとか雑にやったらnginxの設定で分からなくなったので
ソースインストールした時の設定とかのメモを残しておく(どうせまた詰むので)

事前準備

必要なものをインストール

$ sudo yum -y install nginx php php-fpm php-common gcc glibc glibc-common gd gd-devel make net-snmp unzip
$ sudo yum -u groups install "Development tools"

Nagios用にnginxのconfigファイルを作成

$ sudo vim /etc/nginx/conf.d/nagios.conf
server {
  listen 80;
  server_name nagios_local;
  access_log /var/log/nginx/nagios-access.log;
  error_log /var/log/nginx/nagios-error.log info;
  root /usr/local/nagios/share;
  index index.php;
  auth_basic "Nagios Restricted Access";
  auth_basic_user_file /usr/local/nagios/passwd;
  location /stylesheets {
    alias /usr/local/nagios/share/stylesheets;
  }

  location ~ .cgi$ {
    root /usr/local/nagios/sbin/;
    include fastcgi_params;
    rewrite ^/nagios/cgi-bin/(.*).cgi /$1.cgi break;
    fastcgi_param AUTH_USER $remote_user;
    fastcgi_param REMOTE_USER $remote_user;
    fastcgi_pass unix:/var/run/fcgiwrap.sock;
    fastcgi_param SCRIPT_FILENAME /usr/local/nagios/sbin/$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
  }

  location ~ .php$ {
    include fastcgi_params;
    fastcgi_pass unix:/var/run/php-fpm/nagios.socket;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /usr/local/nagios/share$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_script_name;
  }

  location ~ (.*.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf))$ {
    root /usr/local/nagios/share/;
    rewrite ^/nagios/(.*) /$1 break;
    access_log off; expires max;
  }
}

nginxの設定の反映

nginx再起動して設定を反映させる
自動起動設定出来ていないならそれもやっておく

$ sudo systemctl restart nginx.service
$ sudo systemctl enable nginx.service

php-fpmのNagios用設定ファイルを作成

$ sudo vim /etc/php-fpm.d/nagios.conf
[nagios]
listen = /var/run/php-fpm/nagios.sock
listen.owner = nginx
listen.group = nginx
listen.mode=0660listen.allowed_clients = 127.0.0.1

user = nagios
group = nagios
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

slowlog = /var/log/php-fpm/www-slow.log

php_flag[display_errors] = on
php_admin_value[error_log] = /var/log/php-fpm/nagios-error.log
php_admin_flag[log_errors] = on
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session

php-fpmの起動と自動起動設定

$ sudo systemctl start php-fpm.service
$ sudo systemctl enable php-fpm.service

Nagios

Nagiosのインストール

nagiosのユーザとグループの作成

nagiosユーザを作成し、nagiosグループへnginxユーザを入れる

$ sudo useradd nagios
$ sudo usermod -a -G nagios nginx

Nagiosのダウンロード、コンパイル、インストール

Thanks for Downloading Nagios Coreから落としてくる
"Nagios"でググると公式じゃないのが上にばかり出てくる(ありがちだけど)

$ tar xzf 落としてきたファイル
$ cd 解凍したディレクトリ
$ ./configure
$ sudo make all
$ sudo make install
$ sudo make install-init
$ sudo make install-config
$ sudo make install-commandmode
$ sudo make install-webconf

makeしてる時って依存ライブラリ入ってなくてこけたらどうしよーってドキドキする

インストールされているか確認してみる
configファイルを渡すとエラーチェックしてくれるらしい
Usage: /usr/local/nagios/bin/nagios [options] <main_config_file>

$ sudo /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Nagios Core 4.3.4
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 2017-08-24
License: GPL

Website: https://www.nagios.org
Reading configuration data...
   Read main config file okay...
   Read object config files okay...

Running pre-flight check on configuration data...

Checking objects...
        Checked 8 services.
        Checked 1 hosts.
        Checked 1 host groups.
        Checked 0 service groups.
        Checked 1 contacts.
        Checked 1 contact groups.
        Checked 24 commands.
        Checked 5 time periods.
        Checked 0 host escalations.
        Checked 0 service escalations.
Checking for circular paths...
        Checked 1 hosts
        Checked 0 service dependencies
        Checked 0 host dependencies
        Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...

Total Warnings: 0
Total Errors:   0

Things look okay - No serious problems were detected during the pre-flight check

良さそう

Nagios pluginのインストール

これはyumでさくっと

$ sudo yum -y install nagios-plugins-all.x86_64

インストールしたpluginをNagiosのデフォルトのpluginフォルダにシンボリックリンクを貼っておきたい

$ sudo rm -rf /usr/local/nagios/libexec/
$ sudo ln -s /usr/lib64/nagios/plugins /usr/local/nagios/libexec
$ sudo chown -R nagios:nagios /usr/local/nagios/libexec

Nagiosの起動と自動起動設定

$ sudo systemctl start nagios.service
$ sudo systemctl enable nagios.service

Nagios password設定

Nagiosのログインパスワード設定

$ sudo htpasswd -c /usr/local/nagios/passwd <ユーザ名>

設定ファイルに合わせてディレクトリにシンボリックリンク貼っておく

$ sudo mkdir /usr/local/nagios/share/nagios
$ cd /usr/local/nagios/share/nagios
$ sudo ln -s /usr/local/nagios/share/stylesheets/ stylesheets
$ sudo ln -s /usr/local/nagios/share/js js

spawn-fcgiインストール、設定

必要なものをインストール

$ sudo yum -y install fcgi-devel spawn-fcgi
$ cd /usr/local/src/
$ sudo git clone https://github.com/gnosek/fcgiwrap.git
$ cd fcgiwrap
$ sudo autoreconf -i
$ sudo ./configure
$ sudo make
$ sudo make install

spawn-fcgiの設定

$ sudo vim /etc/sysconfig/spawn-fcgi

FCGI_SOCKET=/var/run/fcgiwrap.socket
FCGI_PROGRAM=/usr/local/sbin/fcgiwrap
FCGI_USER=nginx
FCGI_GROUP=nginx
FCGI_EXTRA_OPTIONS="-M 0700"
OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM"

spawn-fcgiの起動と自動起動設定

$ sudo systemctl start spawn-fcgi.service
$ sudo systemctl enable spawn-fcgi.service

ここまで出来たらあとはブラウザから動作確認して動いてたら良さそう

その他メモ

  • 管理画面のユーザ名, パスワードはNagios password設定で設定したもの
  • nginxとfastCGIで502 bad gatewayになる時はsocketのパスが違うかも
    • 最初php-fpm.sockをタイポしててハマった