Nagios Coreの設定について

投稿者: | 2020-04-26

前回はNagios Coreのテンプレートとタイムピリオドについて説明しました。今回はNagios Core全体の設定を行うnagios.cfgの設定ファイルについて説明します。

Nagios Coreの設定について

Nagios Coreには全体的な設定を行うnagios.cfgという設定ファイルがあります。ログの配置場所や通知に関する設定、Nagiosの状態に関する設定、管理画面に関する設定等、nagios.cfgを設定することで監視環境をカスタマイズできます。

nagios.cfgの設定方法

Nagiosの全体的な設定を行うためには、nagiosフォルダ内のetc配下にあるnagios.cfgファイルを編集します。

# vi /usr/local/nagios/etc/nagios.cfg

■nagios.cfg
--------------------------------------------------
# Nagiosのログ出力先を設定
log_file=/usr/local/nagios/var/nagios.log

# Nagiosのコンフィグファイルを設定
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

# サービス用のコンフィグディレクトリを設定
cfg_dir=/usr/local/nagios/etc/servers

# オブジェクトキャッシュファイルのパスを設定
object_cache_file=/usr/local/nagios/var/objects.cach

# オブジェクトのプレキャッシュ用ファイルを設定
precached_object_file=/usr/local/nagios/var/objects.precache

# リソースファイルを設定
resource_file=/usr/local/nagios/etc/resource.cfg

# ステータスファイルを設定
status_file=/usr/local/nagios/var/status.dat

# 監視ステータスを更新する間隔を設定
status_update_interval=30

# Nagiosユーザー・グループを設定
nagios_user=nagios
nagios_group=nagios

# 外部コマンドの有効/無効を設定
# 0が無効、1が有効
check_external_commands=1

# 外部コマンドの入力ファイルを設定
command_file=/usr/local/nagios/var/rw/nagios.cmd

# ロックファイルを設定
lock_file=/run/nagios.lock

# tmpファイル、tmpパスを設定
temp_file=/usr/local/nagios/var/nagios.tmp
temp_path=/tmp

# NEB機能の有効/無効を設定。
# 0が無効、-1は全て有効。または特定のイベントを設定。
# NBEはNagiosの監視処理をフックして別の処理を行わせるAPI。
event_broker_options=-1

# NEBモジュールのパスを設定
#broker_module=/somewhere/module1.o
#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0

# ログローテーション方式を設定。
# n:なし、h:毎時0分、d:毎日0時、w:毎週日曜日の0時、m:毎月1日の0時
log_rotation_method=d

# ローテーションしたログの保存先を設定
log_archive_path=/usr/local/nagios/var/archives

# Syslogを使用するかどうかを設定
# 0が無効、1が有効
use_syslog=1

# 動作ログを通知に出力するか設定
# 0が無効、1が有効
log_notifications=1

# サービスチェックの再試行をログに残すかどうかを設定
# 0が無効、1が有効
log_service_retries=1

# ホストチェックの再試行をログに残すかどうかを設定
# 0が無効、1が有効
log_host_retries=1

# イベントハンドラをログに残すかどうかを設定
# 0が無効、1が有効
log_event_handlers=1

# 監視対象の初期状態をログに残すかどうかを設定
# 0が無効、1が有効
log_initial_states=0

# 現在の状態をログに残すかどうかを設定
# 0が無効、1が有効
log_current_states=1

# 外部コマンドの実行をログに残すかどうかを設定
# 0が無効、1が有効
log_external_commands=1

# パッシブチェックをログに残すかどうかを設定
# 0が無効、1が有効
log_passive_checks=1

# グローバルホストイベントハンドラ、グローバルサービスイベントハンドラを設定
#global_host_event_handler=somecommand
#global_service_event_handler=somecommand

# サービスの初期チェックのスケジューリングを指定
# n:全ての監視を同時実行、d:全て1秒間隔、s:自動計算
service_inter_check_delay_method=s

# サービスの初期チェックの最大時間を設定
max_service_check_spread=30

# サービスチェックのインターリーブ方式を設定
# s:デーモンによる自動計算、1:インターリーブを無効
# 2以上:設定値をインターリーブの値とする
service_interleave_factor=s

# ホストの初期チェックのスケジューリングを指定
# n:全ての監視を同時実行、d:全て1秒間隔、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=/usr/local/nagios/var/spool/checkresults

# チェック結果の一時ファイルの生存期間の最大値を設定
max_check_result_file_age=3600

# ホストのチェック結果をキャッシュする時間を設定
cached_host_check_horizon=15

# サービスのチェック結果をキャッシュする時間を設定
cached_service_check_horizon=15

# ホストの依存設定の予測機能を設定
# 0が無効、1が有効
enable_predictive_host_dependency_checks=1

# サービスの依存設定の予測機能を設定
# 0が無効、1が有効
enable_predictive_service_dependency_checks=1

# ホストやサービスの依存チェックでSOFT状態を使うかどうかを設定
# 0が無効、1が有効
soft_state_dependencies=0

# OSの時刻変化を検出する閾値を設定
#time_change_threshold=900

# 自動再スケジュールを行うかどうかを設定
# 0が無効、1が有効
auto_reschedule_checks=0

# 自動再スケジュールの間隔を設定
auto_rescheduling_interval=30

# 自動再スケジュールのウインドを設定
auto_rescheduling_window=180

# Nagiosの各種タイムアウトを設定
service_check_timeout=60
host_check_timeout=30
event_handler_timeout=30
notification_timeout=30
ocsp_timeout=5
ochp_timeout=5
perfdata_timeout=5

# 監視状態を自動保存するかどうかを設定
# 0が無効、1が有効
retain_state_information=1

# 監視状態を保存するファイルを設定
state_retention_file=/usr/local/nagios/var/retention.dat

# 監視状態を保存するファイルの自動保存間隔を設定
retention_update_interval=60

# 保存した設定情報を使用するかどうか設定
# 0が無効、1が有効
use_retained_program_state=1

# 保存した監視スケジュールを使用するかどうかを設定
# 0が無効、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

# Nagiosのアップデートをチェックするかどうかを設定
# 0が無効、1が有効
check_for_updates=1

# アップデート時の送信情報を制限するかどうかを設定
# 0が無効、1が有効
bare_update_check=0

# アグレッシブホストチェックを行うかどうかを設定
# 0が無効、1が有効
use_aggressive_host_checking=0

# アクティブサービスチェックを行うかどうかを設定
# 0が無効、1が有効
execute_service_checks=1

# パッシブサービスチェックを行うかどうかを設定
# 0が無効、1が有効
accept_passive_service_checks=1

# ホストチェックを行うかどうかを設定
# 0が無効、1が有効
execute_host_checks=1

# パッシブホストチェックを行うかどうかを設定
# 0が無効、1が有効
accept_passive_host_checks=1

# 通知を行うかどうかを設定
# 0が無効、1が有効
enable_notifications=1

# イベントハンドラを使うかどうかを設定
# 0が無効、1が有効
enable_event_handlers=1

# パフォーマンスデータを収集するかどうかを設定
# 0が無効、1が有効
process_performance_data=0

# ホスト、サービスのパフォーマンスデータコマンドを設定
#host_perfdata_command=process-host-perfdata
#service_perfdata_command=process-service-perfdata

# ホスト、サービスのパフォーマンスデータの出力先を設定
#host_perfdata_file=/usr/local/nagios/var/host-perfdata
#service_perfdata_file=/usr/local/nagios/var/service-perfdata

# ホスト、サービスのパフォーマンスデータの出力形式を設定
#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$ 
#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$ 

# ホスト、サービスのパフォーマンスデータファイルの書き出しモードを設定
# a:追記モード、w:上書きモード、p:パイプ出力モード
#host_perfdata_file_mode=a
#service_perfdata_file_mode=a

# ホスト、サービスのパフォーマンスデータファイル処理コマンドの実行間隔を設定
#host_perfdata_file_processing_interval=0
#service_perfdata_file_processing_interval=0

# ホスト、サービスのパフォーマンスデータファイルを処理するコマンドを設定
#host_perfdata_file_processing_command=process-host-perfdata-file
#service_perfdata_file_processing_command=process-service-perfdata-file

# ホスト、サービスの空のパフォーマンスデータを許可するかどうかを設定
# 0が無効、1が有効
#host_perfdata_process_empty_results=1
#service_perfdata_process_empty_results=1

# サービスのオブセスオーバーを使うかどうかを設定
# 0が無効、1が有効
obsess_over_services=0

# サービスのオブセスオーバーのコマンドを設定
#ocsp_command=somecommand

# ホストのオブセスオーバーを使うかどうかを設定
# 0が無効、1が有効
obsess_over_hosts=0

# ホストのオブセスオーバーのコマンドを設定
#ochp_command=somecommand

# パッシブホストチェックの結果を変換するかどうかを設定
# 0が無効、1が有効
translate_passive_host_checks=0

# パッシブホストチェックの状態の扱い方を設定
# 0:HARD状態、1:SOFT状態
passive_host_checks_are_soft=0

# 孤立サービス、ホストを検出するかどうかを設定
# 0が無効、1が有効
check_for_orphaned_services=1
check_for_orphaned_hosts=1

# サービスのフレッシュネスチェックを行うかどうかを設定
# 0が無効、1が有効
check_service_freshness=1

# サービスのフレッシュネスチェック間隔を設定
service_freshness_check_interval=60

# サービスチェックがタイムアウトになった時のステータスを設定
# c:CRITICAL、w:WARNING、u:UNKNOWN、o:OK
service_check_timeout_state=c

# ホストのフレッシュネスチェックを使うかどうかを設定
# 0が無効、1が有効
check_host_freshness=0

# ホストのフレッシュネスチェックの間隔を設定
host_freshness_check_interval=60

# フレッシュネスチェックの閾値の追加の遅延時間を設定
additional_freshness_latency=15

# サービスのフラッピングを検出するかどうかを設定
# 0が無効、1が有効
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

# データフォーマットを設定
# 日本の形式ならiso8601(YYYY-MM-DD HH:MM:SS)を設定
date_format=us

# タイムゾーンを設定
#use_timezone=US/Mountain

# オブジェクト名に使用できない文字を設定
illegal_object_name_chars=`~!$%^&*|'"<>?,()=

# マクロ名に使用できない文字を設定
illegal_macro_output_chars=`~$&|'"<>

# オブジェクト定義のオブジェクト名で正規表現を使うかどうかを設定
# 0が無効、1が有効
use_regexp_matching=0

# オブジェクト定義で全ての正規表現を使用可能にするかどうかを設定
# 0が無効、1が有効
use_true_regexp_matching=0

# 管理者のメールアドレス、携帯メールアドレスを設定
admin_email=nagios@localhost
admin_pager=pagenagios@localhost

# Nagiosのデーモンがコアダンプを生成するかどうかを設定
# 0が無効、1が有効
daemon_dumps_core=0

# 大規模なサイトでのパフォーマンス調整設定をするかどうかを設定
# 0が無効、1が有効
use_large_installation_tweaks=0

# 環境変数マクロを許可するかどうかを設定
# 0が無効、1が有効
enable_environment_macros=0

# 子プロセスのメモリ解放方法を設定
# 0:メモリを開放しない、1:メモリを開放する
#free_child_process_memory=1

# 子プロセスのfork方法を設定
# 0:fork()を1回実行、1:forkを2回実行
#child_processes_fork_twice=1

# デバッグログを取得するレベルを指定
# -1:全て取得
# 0:取得しない
# 1:機能に関するログ
# 2:コンフィギュレーションに関するログ
# 4:プロセスに関するログ
# 8:スケジューリングイベントに関するログ
# 16:ホスト、サービスのチェックに関するログ
# 32:通知に関するログ
# 64:イベントブローカに関するログ
# 128:外部コマンドに関するログ
# 256:コマンドに関するログ
# 512:スケジュールダウンタイムに関するログ
# 1024:コメントに関するログ
# 2048:マクロに関するログ
debug_level=0

# デバッグ出力の冗長度合いを設定
# 0:簡潔に、1:やや冗長、2:非常に冗長
debug_verbosity=1

# デバッグファイルの最大サイズを設定
max_debug_file_size=1000000

# ホストグループにホストを持たせないようにするかどうかを設定
# 0が無効、1が有効
allow_empty_hostgroup_assignment=0

# チェックするワーカー数を設定
#check_workers=3

# ホストがUP状態でない時に全てのサービスを無効にするかどうかを設定
# 0が無効、1が有効
#host_down_disable_service_checks=0

--------------------------------------------------

nagios.cfgファイル編集後、Nagiosを再起動します。

# systemctl restart nagios

まとめ

  • Nagios全体の設定はnagios.cfgで行う
  • nagios.cfgでコンフィグファイルの設定や機能の有効/無効を設定できる

今回でNagiosの基本的な設定は一旦終わりとします。Windowsホストの監視や外部プラグインの追加等もありますが、この辺については時間に余裕があれば記事化します。

次回以降のテーマはまだ決まっていませんが、決まりましたらまだ記事を書いていきます。