<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>System Clinic &#187; Nagios</title>
	<atom:link href="http://clinic.acc-s.com/?cat=44&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://clinic.acc-s.com</link>
	<description>　－　悩めるシステム運用に関するサイト　－</description>
	<lastBuildDate>Sun, 13 Dec 2015 06:05:15 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Nagiosのお仕事（社内教育）</title>
		<link>http://clinic.acc-s.com/?p=784</link>
		<comments>http://clinic.acc-s.com/?p=784#comments</comments>
		<pubDate>Tue, 10 Dec 2013 10:39:13 +0000</pubDate>
		<dc:creator>所長</dc:creator>
				<category><![CDATA[Nagios]]></category>

		<guid isPermaLink="false">http://clinic.acc-s.com/?p=784</guid>
		<description><![CDATA[  nagiosとは監視のOSS（OpenSourceSoftware）になります。 本家ページは、http://www.nagios.org ﻿翻訳ページは、http://nagios.x-trans.jp/nagios/index.php 弊社デモサイト、http://acc-s.com/nagios/   （ユーザ：demo、パスワード：demoでログインできます。） ※弊社デモサイトはカスタマイズしていて、純粋なNagiosは、「Nagios画面」のページのみです。 ここでは、概要についてふれます。 監視とは サービスの正常運用を保つ為には以下のことが、重要です。 正常、異常の定義／境界 ステータスの読み方、正確な値の取り方 製品（Nagios）の特徴と理解 正常、異常は利用者が境界線を定義します。システムの特性により、どのような状況を警告とし、また異常と扱うか。提供サービスの負荷状況が徐々に変化するものであれば、90%で警告、95%で異常としてもいいかもしれない。突発的に変化するサービスであれば、50%警告、75%で異常とする必要があります。要は100%が来る前に何らかの回避策が必要で、手を打つまでの時間を作る事が目的です。 監視で取り扱うステータスは、取得方法は標準化されていますが、取得した値は機器によるばらつきがあります。また、メーカー側も主となるサービスには人員が確保されていますが、このステータスを理解している担当者が少なく、誤情報を提供されることもあります。システムを構成するファイアウォール、ロードバランサー、L3スイッチ、サーバ、ストレージ、データベースと複数の機器のステータスをみて、問題の機器のステータスが正しいかを見極める必要があり、疑問があれば、メーカー側に何度も問い合わせる必要があります。 監視製品はいくつも出回っています。どの製品を採用するかは、扱っているシステムの特徴や、監視の運用方針にかかわってきます。Nagiosの特徴は、下記でしょうか。  すべてのステータスが１ページ内で確認できる（次ページとか、子ページにいく必要がない） 技術者の好きな言語でカスタマイズできる（Shell、perl、C言語など）   システムに標準でついている機能では、特定の機器に対応できていない場合があります。あるいは、サービス障害により取得したステータスが違う事に気づく事があります。標準で対応できていないのであれば、容易にカスタマイズできるのは、Nagiosの特徴でしょう。   監視項目 とりあえず、列挙していきます。 FW（ファイアウォール）　－　ネットワーク機器 ネットワークトラフィック　・・・　100MBps、1GBpsという規格に対し、通信量を監視 アタック件数　・・・　分間や秒間における外部からの攻撃された件数を監視 CPU使用率　・・・　機器のCPU使用率を監視 メモリ使用率　・・・　機器の搭載メモリに対する使用率を監視　   LB（ロードバランサー）　－　ネットワーク機器  ネットワークトラフィック　・・・　1GBpsという規格に対し、通信量を監視 ネットワークトラフィック（仮想サーバ）　・・・ 仮想サーバ単位に通信量を監視 同時接続数　・・・　同時分秒内に接続しているユーザ数を監視 新規接続数(New Conn)　・・・ 分間、秒間での新規に接続してきたユーザ数を監視 CPU使用率 メモリ使用率   L3SW（L3コアスイッチ）　－　ネットワーク機器  ネットワークトラフィック　・・・　24ポート、48ポートと機器により変わり、利用中のポートに対し通信量を監視 CPU使用率 メモリ使用率   LINUXサーバ　－　サーバ機器  ネットワークトラフィック CPU使用率 メモリ使用率 ディスク使用率 プロセス数 ファイル数 時刻同期　・・・　時刻同期を設定しているが時刻提供サーバとの時刻差を監視   WINDOWSサーバ　－　サーバ機器  [...]]]></description>
			<content:encoded><![CDATA[<p> </p>
<p>nagiosとは監視のOSS（OpenSourceSoftware）になります。</p>
<ul>
<li>本家ページは、<a href="http://www.nagios.org">http://www.nagios.org</a></li>
<li>﻿翻訳ページは、<a href="http://nagios.x-trans.jp/nagios/index.php">http://nagios.x-trans.jp/nagios/index.php</a></li>
<li>弊社デモサイト、<a href="http://acc-s.com/nagios/">http://acc-s.com/nagios/</a>   （ユーザ：demo、パスワード：demoでログインできます。）</li>
</ul>
<p>※弊社デモサイトはカスタマイズしていて、純粋なNagiosは、「Nagios画面」のページのみです。</p>
<p>ここでは、概要についてふれます。</p>
<h1>監視とは</h1>
<p style="padding-left: 30px;">サービスの正常運用を保つ為には以下のことが、重要です。</p>
<ol>
<li>正常、異常の定義／境界</li>
<li>ステータスの読み方、正確な値の取り方</li>
<li>製品（Nagios）の特徴と理解</li>
</ol>
<p style="padding-left: 30px;">正常、異常は利用者が境界線を定義します。システムの特性により、どのような状況を警告とし、また異常と扱うか。提供サービスの負荷状況が徐々に変化するものであれば、90%で警告、95%で異常としてもいいかもしれない。突発的に変化するサービスであれば、50%警告、75%で異常とする必要があります。要は100%が来る前に何らかの回避策が必要で、手を打つまでの時間を作る事が目的です。</p>
<p style="padding-left: 30px;">監視で取り扱うステータスは、取得方法は標準化されていますが、取得した値は機器によるばらつきがあります。また、メーカー側も主となるサービスには人員が確保されていますが、このステータスを理解している担当者が少なく、誤情報を提供されることもあります。システムを構成するファイアウォール、ロードバランサー、L3スイッチ、サーバ、ストレージ、データベースと複数の機器のステータスをみて、問題の機器のステータスが正しいかを見極める必要があり、疑問があれば、メーカー側に何度も問い合わせる必要があります。</p>
<p style="padding-left: 30px;">監視製品はいくつも出回っています。どの製品を採用するかは、扱っているシステムの特徴や、監視の運用方針にかかわってきます。Nagiosの特徴は、下記でしょうか。 </p>
<ul>
<li>すべてのステータスが１ページ内で確認できる（次ページとか、子ページにいく必要がない）</li>
<li>技術者の好きな言語でカスタマイズできる（Shell、perl、C言語など）</li>
</ul>
<p> </p>
<p style="padding-left: 30px;">システムに標準でついている機能では、特定の機器に対応できていない場合があります。あるいは、サービス障害により取得したステータスが違う事に気づく事があります。標準で対応できていないのであれば、容易にカスタマイズできるのは、Nagiosの特徴でしょう。</p>
<p style="padding-left: 30px;"> </p>
<h1>監視項目</h1>
<p style="padding-left: 30px;">とりあえず、列挙していきます。</p>
<h2 style="padding-left: 30px;">FW（ファイアウォール）　－　ネットワーク機器</h2>
<ul>
<li>ネットワークトラフィック　・・・　100MBps、1GBpsという規格に対し、通信量を監視</li>
<li>アタック件数　・・・　分間や秒間における外部からの攻撃された件数を監視</li>
<li>CPU使用率　・・・　機器のCPU使用率を監視</li>
<li>メモリ使用率　・・・　機器の搭載メモリに対する使用率を監視　</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">LB（ロードバランサー）　－　ネットワーク機器 </h2>
<ul>
<li>ネットワークトラフィック　・・・　1GBpsという規格に対し、通信量を監視</li>
<li>ネットワークトラフィック（仮想サーバ）　・・・ 仮想サーバ単位に通信量を監視</li>
<li>同時接続数　・・・　同時分秒内に接続しているユーザ数を監視</li>
<li>新規接続数(New Conn)　・・・ 分間、秒間での新規に接続してきたユーザ数を監視</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">L3SW（L3コアスイッチ）　－　ネットワーク機器 </h2>
<ul>
<li>ネットワークトラフィック　・・・　24ポート、48ポートと機器により変わり、利用中のポートに対し通信量を監視</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">LINUXサーバ　－　サーバ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
<li>プロセス数</li>
<li>ファイル数</li>
<li>時刻同期　・・・　時刻同期を設定しているが時刻提供サーバとの時刻差を監視</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">WINDOWSサーバ　－　サーバ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">共有ストレージ　－　SAN、NASストレージ機器 </h2>
<ul>
<li>ネットワークトラフィック</li>
<li>CPU使用率</li>
<li>メモリ使用率</li>
<li>ディスク使用率</li>
<li>ディスクIO　・・・ 秒間のディスクI／O件数を監視</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">データベース　－　ミドルウェア製品 </h2>
<ul>
<li> テーブルスペース使用率　・・・　データベース上のディスク使用率</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">アプリサーバ　－　ミドルウェア製品 </h2>
<ul>
<li>javaヒープ使用率　・・・　（例：javaプロセスに割り当てたメモリの使用率）</li>
<li>javaスレッド件数　・・・　（例：javaプロセスに割り当てたスレッド数の件数）</li>
</ul>
<p> </p>
<h2 style="padding-left: 30px;">サービス　－　アプリケーション </h2>
<ul>
<li>発生件数　・・・　ユーザ操作によるデータの発生件数を秒間で監視　</li>
<li>処理時間　・・・　ユーザ操作によるデータの登録要求から完了までの時間を監視</li>
</ul>
<p> </p>
<p style="padding-left: 30px;">上記のような監視項目をNagiosに設定していきます。</p>
<p style="padding-left: 30px;"> </p>
<h1>Nagiosの構成</h1>
<p style="padding-left: 30px;">Nagiosは大きく２つの監視方法を持っています。</p>
<ol>
<li>snmpインタフェースを持つ機器にステータスを要求、取得</li>
<li>nagiosクライアントをインストールした機器にステータスを要求、取得</li>
</ol>
<p style="padding-left: 30px;">「１」はネットワーク機器で、サーバ機器は「１」と「２」の両方になります。いずれも、対象機器の接続許可の設定や、インストール作業が必要です。</p>
<p style="padding-left: 30px;">図解したいのですが、</p>
<ol>
<li>監視サーバ（Nagiosサーバ）　←(snmp)→　ネットワーク機器</li>
<li>監視サーバ(Nagiosサーバ）　←(nrpe)→　サーバ機器（Nagiosクライアント）</li>
</ol>
<p> </p>
<h2>Configの構成(Nagiosサーバ）</h2>
<p style="padding-left: 30px;">Nagiosのバージョンにより異なりますが、</p>
<p style="padding-left: 30px;">メインの設定ファイルは/etc/nagios.cfgで、このファイルから下記を読み込んでいます。</p>
<ul>
<li>commands.cfg　・・・ 監視で使用するコマンドの設定</li>
<li>contacts.cfg　・・・　ユーザ、グループ定義</li>
<li>localhost.cfg 　・・・　監視対象機器の定義</li>
<li>printer.cfg  ・・・　（使ったことがない）</li>
<li>switch.cfg  ・・・ ネットワーク機器の定義</li>
<li>templates.cfg  ・・・　他のcfgをテンプレートとして定義したもの</li>
<li>timeperiods.cfg  ・・・　監視間隔、監視曜日、監視時間帯の定義</li>
<li>windows.cfg　・・・　監視対象のWindowsサーバの定義</li>
</ul>
<p style="padding-left: 30px;">上記は、デフォルトかつサンプルの定義です。すべて名前を変えることができ、その場合、/etc/nagios.cfg に記載したファイルの名前を同様に変えます。</p>
<blockquote><p>（参考:抜粋）　$ more nagios.cfg<br />
##############################################################################<br />
#<br />
# NAGIOS.CFG &#8211; Sample Main Config File for Nagios 3.1.0<br />
#<br />
# Read the documentation for more information on this configuration<br />
# file.  I&#8217;ve provided some comments here, but things may not be so<br />
# clear without further explanation.<br />
#<br />
# Last Modified: 12-14-2008<br />
#<br />
##############################################################################<br />
# LOG FILE<br />
# This is the main log file where service and host events are logged<br />
# for historical purposes.  This should be the first option specified<br />
# in the config file!!!</p>
<p>log_file=/usr/local/nagios/var/nagios.log</p>
<p># OBJECT CONFIGURATION FILE(S)<br />
# These are the object configuration files in which you define hosts,<br />
# host groups, contacts, contact groups, services, etc.<br />
# You can split your object definitions across several config files<br />
# if you wish (as shown below), or keep them all in a single config file.</p>
<p># You can specify individual object config files as shown below:<br />
cfg_file=/usr/local/nagios/etc/objects/commands.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg<br />
cfg_file=/usr/local/nagios/etc/objects/templates.cfg</p>
<p># You can also tell Nagios to process all config files (with a .cfg<br />
# extension) in a particular directory by using the cfg_dir<br />
# directive as shown below:</p>
<p>cfg_dir=/usr/local/nagios/etc/servers</p></blockquote>
<p> </p>
<blockquote><p>（参考:抜粋）　$ more command.cfg</p>
<p>################################################################################<br />
#<br />
# SAMPLE SERVICE CHECK COMMANDS<br />
#<br />
# These are some example service check commands.  They may or may not work on<br />
# your system, as they must be modified for your plugins.  See the HTML<br />
# documentation on the plugins for examples of how to configure command definitions.<br />
#<br />
# NOTE:  The following &#8216;check_local_&#8230;&#8217; functions are designed to monitor<br />
#        various metrics on the host that Nagios is running on (i.e. this one).<br />
################################################################################</p>
<p># &#8216;check_local_disk&#8217; command definition<br />
define command{<br />
        command_name    check_local_disk<br />
        command_line    $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$<br />
        }<br />
# &#8216;check_local_load&#8217; command definition<br />
define command{<br />
        command_name    check_local_load<br />
        command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$<br />
        }<br />
# &#8216;check_local_procs&#8217; command definition<br />
define command{<br />
        command_name    check_local_procs<br />
        command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$<br />
        }<br />
# &#8216;check_local_users&#8217; command definition<br />
define command{<br />
        command_name    check_local_users<br />
        command_line    $USER1$/check_users -w $ARG1$ -c $ARG2$<br />
        }</p></blockquote>
<p> </p>
<blockquote><p>（参考:抜粋）　$ more XXXXXX.cfg</p>
<p>define contactgroup{<br />
        contactgroup_name       A07000009<br />
        alias                   Service User<br />
        members                 A07000009<br />
        }<br />
define contact{<br />
        contact_name            A07000009<br />
        use                     generic-contact<br />
        alias                   service user<br />
        email                   <a href="mailto:kei@acc-s.co.jp">kei@acc-s.co.jp</a><br />
        }<br />
define hostgroup{<br />
        hostgroup_name          group-A07000009<br />
        alias                   HTTP Servers<br />
        members                 <a href="http://www.google.com">www.google.com</a><br />
        }<br />
define host{<br />
        name                    group-A07000009<br />
        use                     generic-host<br />
        check_period            24&#215;7<br />
        check_interval          5<br />
        retry_interval          3<br />
        max_check_attempts      1<br />
        ;check_command          check-host-alive<br />
        check_command           check_http<br />
        ;notification_period    workhours<br />
        ;notification_period    24&#215;7<br />
        notification_interval   120<br />
        notification_options    d,u,r<br />
        contact_groups          admins,A07000009<br />
        register                0<br />
        }<br />
define service{<br />
        name                    services-A07000009<br />
        use                     generic-service<br />
        max_check_attempts      4<br />
        normal_check_interval   5<br />
        retry_check_interval    1<br />
        contact_groups          admins,A07000009<br />
        register                0<br />
        }</p></blockquote>
<p> </p>
<h2>Configの構成(Nagiosクライアント）</h2>
<p>クライアント側は下記のようになっています。</p>
<blockquote><p>（参考:抜粋）　$ more nrpe.cfg</p>
<p>command[check_load]=/usr/local/nagios/libexec/check_load -w 9.0,7.0,6.0 -c 10.0,8.0,7.0<br />
command[check_disk]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /<br />
command[check_mem]=/usr/local/nagios/libexec/check_mem.pl -f -w 20 -c 10　<br />
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 250 -c 400 -s RSZDT<br />
command[check_users]=/usr/local/nagios/libexec/check_users -w 3 -c 5<br />
command[check_ssh]=/usr/local/nagios/libexec/check_ssh -H 127.0.0.1<br />
command[check_ntp]=/usr/local/nagios/libexec/check_ntp -H 外部NTPサーバーIPアドレス -w 1 -c 2<br />
command[check_http]=/usr/local/nagios/libexec/check_http -H 127.0.0.1<br />
command[check_smtp]=/usr/local/nagios/libexec/check_smtp -H 127.0.0.1<br />
command[check_amavisd]=/usr/local/nagios/libexec/check_tcp -H 127.0.0.1 -p 10024</p></blockquote>
<p>check_loadや、check_diskはC言語になり、標準でついています。check_mem.pl は perlプログラムです。ファイルに実行権限があれば、実行することができるので、カスタマイズする場合は、自身で作ったプログラムを上記、設定ファイルに追加します。</p>
<p>サーバ側の command.cfg の command_name　check_disk が、クライアント側のcommand[check_disk]になり、一連の設定の流れになります。</p>
<h1>Nagiosにないもの</h1>
<p>大方の監視は、実現できますが決定的に足りないものとして、下記があります。</p>
<ul>
<li>ログ監視</li>
<li>CPU使用率などの日、週、月のグラフ　・・・ 追加製品を公開している人がいたような気がします。</li>
</ul>
<p>ログ監視は、syslog とswatchというOSSを使用して実現したりします。</p>
<p>グラフ表示は、mrtg(OSS)や、munin(OSS)を使用して実現したりします。</p>
<p>ほかにも監視の製品はたくさんあります。結構、注目を浴びているのは ZABBIXですが、どの製品も１つで十分とは言い切れないのが現状でしょうか。</p>
<h1>Nagiosの感想</h1>
<p>製品自体は難しくはありません。ファイル数もアプリと比較すれば非常に少ないです。実際、やっている事もC言語で作られたコマンドを実行し、そのステータスを収集するものです。どちらかと言えば、監視対象機器の知識だったり、誰かが設定した各設定ファイルの誤りを見つける為に使用するサーバコマンドの知識が大切でしょう。</p>
<ul>
<li>現在の監視では不十分だから、○○を監視する項目を追加したい要望に応える。</li>
<li>新しい機器のMIB（snmpで取得したいステータスのID）がわからない。</li>
<li>標準の監視コマンドが、怪しいので調べる。</li>
</ul>
<p>上記のような技術があると、重宝されるのではないかと思います。ただ、この辺は、徐々に把握できればいいでしょう。昨今はサーバ増設が多いので、Nagiosサーバには既存の設定に監視項目を追加していき、増設サーバにはNagiosクライアントをインストールする作業が優先です。</p>
]]></content:encoded>
			<wfw:commentRss>http://clinic.acc-s.com/?feed=rss2&#038;p=784</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
