lpic303 nagios

前置き

監視をZabbixに切り替えるまではNagios+Cactiっていう環境だったが、管理は1台でアクセスもそんなに無いとくれば、とくに何も起こらないので残念ながらあまり印象にない・・・。
毎晩グラフの確認をしていつも通りのふにゃふにゃ具合だったら確認よし!としていた。
そんなnagiosです。

 

インストール

事前の用意はないのでNagiosを実験環境にインストールしようか。
さぁ実験ですよ。

rpmforgeだとちょっと古いらしいので、epelからインストールします。

rpmforgeでのNagiosのバージョン

nagios    x86_64              3.2.3-3.el6.rf

epelでのNagiosのバージョン

nagios    x86_64      3.5.1-1.el6

プラグインの数もepelの方が多いですね。というかrpmforgeだと全然ないです。

# yum --enablerepo=epel install nagios nagios-plugins nagios-plugins-all

グラフ描画に必要なGDをインストール。

# yum -y install gd-devel

設定ファイルはNagiosの場合はどこかからcpする訳でもなくインストールすれば/etc以下にある。

vi /etc/nagios/nagios.cfg

コメントアウト以外を出力してみると結構項目が多いようで。

# egrep -v "^\s*$|^#" /etc/nagios/nagios.cfg | 
 log_file=/var/log/nagios/nagios.log
 cfg_file=/etc/nagios/objects/commands.cfg
 cfg_file=/etc/nagios/objects/contacts.cfg
 cfg_file=/etc/nagios/objects/timeperiods.cfg
 cfg_file=/etc/nagios/objects/templates.cfg
 cfg_file=/etc/nagios/objects/localhost.cfg
 cfg_dir=/etc/nagios/conf.d
 object_cache_file=/var/log/nagios/objects.cache
 precached_object_file=/var/log/nagios/objects.precache
 resource_file=/etc/nagios/private/resource.cfg
 status_file=/var/log/nagios/status.dat
 status_update_interval=10
 nagios_user=nagios
 nagios_group=nagios
 check_external_commands=1
 command_check_interval=-1
 command_file=/var/spool/nagios/cmd/nagios.cmd
 external_command_buffer_slots=4096
 lock_file=/var/run/nagios.pid
 temp_file=/var/log/nagios/nagios.tmp
 temp_path=/tmp
 event_broker_options=-1
 log_rotation_method=d
 log_archive_path=/var/log/nagios/archives
 use_syslog=1
 log_notifications=1
 log_service_retries=1
 log_host_retries=1
 log_event_handlers=1
 log_initial_states=0
 log_external_commands=1
 log_passive_checks=1
 service_inter_check_delay_method=s
 max_service_check_spread=30
 service_interleave_factor=s
 host_inter_check_delay_method=s
 max_host_check_spread=30
 max_concurrent_checks=0
 check_result_reaper_frequency=10
 max_check_result_reaper_time=30
 check_result_path=/var/log/nagios/spool/checkresults
 max_check_result_file_age=3600
 cached_host_check_horizon=15
 cached_service_check_horizon=15
 enable_predictive_host_dependency_checks=1
 enable_predictive_service_dependency_checks=1
 soft_state_dependencies=0
 auto_reschedule_checks=0
 auto_rescheduling_interval=30
 auto_rescheduling_window=180
 sleep_time=0.25
 service_check_timeout=60
 host_check_timeout=30
 event_handler_timeout=30
 notification_timeout=30
 ocsp_timeout=5
 perfdata_timeout=5
 retain_state_information=1
 state_retention_file=/var/log/nagios/retention.dat
 retention_update_interval=60
 use_retained_program_state=1
 use_retained_scheduling_info=1
 retained_host_attribute_mask=0
 retained_service_attribute_mask=0
 retained_process_host_attribute_mask=0
 retained_process_service_attribute_mask=0
 retained_contact_host_attribute_mask=0
 retained_contact_service_attribute_mask=0
 interval_length=60
 check_for_updates=1
 bare_update_check=0
 use_aggressive_host_checking=0
 execute_service_checks=1
 accept_passive_service_checks=1
 execute_host_checks=1
 accept_passive_host_checks=1
 enable_notifications=1
 enable_event_handlers=1
 process_performance_data=0
 obsess_over_services=0
 obsess_over_hosts=0
 translate_passive_host_checks=0
 passive_host_checks_are_soft=0
 check_for_orphaned_services=1
 check_for_orphaned_hosts=1
 check_service_freshness=1
 service_freshness_check_interval=60
 service_check_timeout_state=c
 check_host_freshness=0
 host_freshness_check_interval=60
 additional_freshness_latency=15
 enable_flap_detection=1
 low_service_flap_threshold=5.0
 high_service_flap_threshold=20.0
 low_host_flap_threshold=5.0
 high_host_flap_threshold=20.0
 date_format=us
 p1_file=/usr/sbin/p1.pl
 enable_embedded_perl=1
 use_embedded_perl_implicitly=1
 illegal_object_name_chars=`~!$%^&*|'"<>?,()=
 illegal_macro_output_chars=`~$&|'"<>
 use_regexp_matching=0
 use_true_regexp_matching=0
 admin_email=nagios@localhost
 admin_pager=pagenagios@localhost
 daemon_dumps_core=0
 use_large_installation_tweaks=0
 enable_environment_macros=1
 debug_level=0
 debug_verbosity=1
 debug_file=/var/log/nagios/nagios.debug
 max_debug_file_size=1000000

Apacheがincludeしているファイルを見てみます。

# egrep -v "^\s*$|^#" /etc/httpd/conf.d/nagios.conf
ScriptAlias /nagios/cgi-bin/ "/usr/lib64/nagios/cgi-bin/"
<Directory "/usr/lib64/nagios/cgi-bin/">
   Options ExecCGI
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/passwd
   Require valid-user
</Directory>
Alias /nagios "/usr/share/nagios/html"
<Directory "/usr/share/nagios/html">
   Options None
   AllowOverride None
   Order allow,deny
   Allow from all
   AuthName "Nagios Access"
   AuthType Basic
   AuthUserFile /etc/nagios/passwd
   Require valid-user
</Directory>

管理ユーザーのパスワードだけつけておきます。

# htpasswd /etc/nagios/passwd nagiosadmin
New password:
Re-type new password:
Updating password for user nagiosadmin

ひとまず起動して、WEBの管理画面を見てみますと

nagi001

何もせずともデフォルトでこれだけの監視は入ってます。

 

監視のこと

監視のファイルはどこぞにあるのか??
/etc/nagios/objects/commands.cfg です。

# cat /etc/nagios/objects/commands.cfg | head -157 | tail -20
define command{
        command_name    check_snmp
        command_line    $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
        }


# 'check_http' command definition
define command{
        command_name    check_http
        command_line    $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
        }


# 'check_ssh' command definition
define command{
        command_name    check_ssh
        command_line    $USER1$/check_ssh $ARG1$ $HOSTADDRESS$
        }

これだけだと何だかよく分かりません。$HOSTADDRESSやらは環境変数ではなくて

/etc/nagios/objects/localhost.cfg

ここに記述されています。さきほどのcommands.cfgとはセットですね。

プラグインを入れておけば、ここで色々と設定を追加すればOKみたいですね。
どれだけあるのかというと、epelで入れているならこんな感じかと。

# ls /usr/lib64/nagios/plugins
check_breeze    check_fping      check_load         check_ntp.pl    check_sensors  check_users
check_by_ssh    check_ftp        check_log          check_ntp_peer  check_simap    check_wave
check_clamd     check_game       check_mailq        check_ntp_time  check_smtp     eventhandlers
check_cluster   check_hpjd       check_mrtg         check_nwstat    check_snmp     negate
check_dhcp      check_http       check_mrtgtraf     check_oracle    check_spop     urlize
check_dig       check_icmp       check_mysql        check_overcr    check_ssh      utils.pm
check_disk      check_ide_smart  check_mysql_query  check_pgsql     check_ssmtp    utils.sh
check_disk_smb  check_imap       check_nagios       check_ping      check_swap
check_dns       check_ircd       check_nntp         check_pop       check_tcp
check_dummy     check_jabber     check_nntps        check_procs     check_time
check_file_age  check_ldap       check_nt           check_real      check_udp
check_flexlm    check_ldaps      check_ntp          check_rpc       check_ups

記述は-hで確認できます。

# /usr/lib64/nagios/plugins/check_mysql -h
check_mysql v1.4.16 (nagios-plugins 1.4.16)
Copyright (c) 1999-2007 Nagios Plugin Development Team
        <nagiosplug-devel@lists.sourceforge.net>

This program tests connections to a MySQL server


Usage:
 check_mysql [-d database] [-H host] [-P port] [-s socket]
       [-u user] [-p password] [-S]

Options:
 -h, --help
    Print detailed help screen
 -V, --version
    Print version information

監視を追加したい時はさっき書いた通り

/etc/nagios/objects/commands.cfg
/etc/nagios/objects/localhost.cfg

この2個のファイル両方ともに追加の記述が必要なのですだ。

試しにMySQLを増やしてみましんす。

# 'check_mysql' command definition
define command{
        command_name    check_mysql
        command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$
        }

引数にアドレス、ユーザー名を取らせます。※パスワード設定していないので。

# Define a service to check MYSQL on the local machine.
define service{
        use                             generic-service
        host_name                       localhost
        service_description             MySQL
        check_command                   check_mysql!root
        }

service nagios restart してWEBを見てみます。

nagi002

HTTPの下にMySQLが追加されました。

 

その他いろいろ

パス

# egrep -v "^\s*$|^#" /etc/nagios/private/resource.cfg
$USER1$=/usr/lib64/nagios/plugins

メール関連

# egrep -v "^\s*$|^#" /etc/nagios/objects/contacts.cfg
define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           nagios@localhost        ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 nagiosadmin
        }

CGI

# egrep -v "^\s*$|^#" /etc/nagios/cgi.cfg
main_config_file=/etc/nagios/nagios.cfg
physical_html_path=/usr/share/nagios/html
url_html_path=/nagios
show_context_help=0
use_pending_states=1
use_authentication=1
use_ssl_authentication=0
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
default_statusmap_layout=5
default_statuswrl_layout=4
ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$
refresh_rate=90
result_limit=100
escape_html_tags=1
action_url_target=_blank
notes_url_target=_blank
lock_author_names=1

その他のconfファイル

# ls /etc/nagios/objects/
commands.cfg  localhost.cfg  switch.cfg     timeperiods.cfg
contacts.cfg  printer.cfg    templates.cfg  windows.cfg

たまーに重箱の隅系の問題が出題されるので、色々見ておくのがいいね。

プロセスはnagios.confで指定している通りです。

nagios_user=nagios
nagios_group=nagios
nagios    7613  0.0  0.1 138176  2060 ?        Ssl  02:39   0:01 /usr/sbin/nagios -d /etc/nagios/nagios.cfg

 

nagiostats

ダジャレ気味ですが、CLIでの状態確認コマンドもあり、以下のように出力されます。

# nagiostats

Nagios Stats 3.5.1
Copyright (c) 2003-2008 Ethan Galstad (www.nagios.org)
Last Modified: 08-30-2013
License: GPL

CURRENT STATUS DATA
------------------------------------------------------
Status File:                            /var/log/nagios/status.dat
Status File Age:                        0d 0h 0m 7s
Status File Version:                    3.5.1

Program Running Time:                   0d 0h 58m 27s
Nagios PID:                             7613
Used/High/Total Command Buffers:        0 / 0 / 4096

Total Services:                         9
Services Checked:                       9
Services Scheduled:                     9
Services Actively Checked:              9
Services Passively Checked:             0
Total Service State Change:             0.000 / 11.050 / 1.644 %
Active Service Latency:                 0.017 / 0.215 / 0.113 sec
Active Service Execution Time:          0.004 / 4.015 / 0.455 sec
Active Service State Change:            0.000 / 11.050 / 1.644 %
Active Services Last 1/5/15/60 min:     1 / 9 / 9 / 9
Passive Service Latency:                0.000 / 0.000 / 0.000 sec
Passive Service State Change:           0.000 / 0.000 / 0.000 %
Passive Services Last 1/5/15/60 min:    0 / 0 / 0 / 0
Services Ok/Warn/Unk/Crit:              9 / 0 / 0 / 0
Services Flapping:                      0
Services In Downtime:                   0

Total Hosts:                            1
Hosts Checked:                          1
Hosts Scheduled:                        1
Hosts Actively Checked:                 1
Host Passively Checked:                 0
Total Host State Change:                0.000 / 0.000 / 0.000 %
Active Host Latency:                    0.037 / 0.037 / 0.037 sec
Active Host Execution Time:             4.009 / 4.009 / 4.009 sec
Active Host State Change:               0.000 / 0.000 / 0.000 %
Active Hosts Last 1/5/15/60 min:        1 / 1 / 1 / 1
Passive Host Latency:                   0.000 / 0.000 / 0.000 sec
Passive Host State Change:              0.000 / 0.000 / 0.000 %
Passive Hosts Last 1/5/15/60 min:       0 / 0 / 0 / 0
Hosts Up/Down/Unreach:                  1 / 0 / 0
Hosts Flapping:                         0
Hosts In Downtime:                      0

Active Host Checks Last 1/5/15 min:     0 / 1 / 3
   Scheduled:                           0 / 1 / 3
   On-demand:                           0 / 0 / 0
   Parallel:                            0 / 1 / 3
   Serial:                              0 / 0 / 0
   Cached:                              0 / 0 / 0
Passive Host Checks Last 1/5/15 min:    0 / 0 / 0
Active Service Checks Last 1/5/15 min:  2 / 8 / 25
   Scheduled:                           2 / 8 / 25
   On-demand:                           0 / 0 / 0
   Cached:                              0 / 0 / 0
Passive Service Checks Last 1/5/15 min: 0 / 0 / 0

External Commands Last 1/5/15 min:      0 / 0 / 0

 

参考書籍

LPI level3 問題集 株式会社ソキウスジャパン  金沢 泳義 (著), 菖蒲 淳司 (著), 森嶋 秀樹 (監修)

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です