Linux 、次の一歩 一般社団法人  LOCAL @smokeymonkey 【 企画セミナー】次の一歩・ OS 編
自己紹介 @smokeymonkey 一般社団法人 LOCAL  社員 LOCAL インフラ部 所属 北海道情報セキュリティ勉強会 副代表 北海道開発オフ 所属 仕事 : 中間管理職
はじめに 本セミナーの主旨  対象者: CentOS や FreeBSD をおっかなびっくり触ってる人、       仮想ソリューションをおそるおそる触ってる人    レベル:初心者向け  テーマ:「次の一歩」にそった、 LOCAL 企画セミナーです。        Web デザイナーやプログラマの方などに 次の一歩を踏み出してもらうために、        Linux や FreeBSD 、仮想化ソリューションを題材に、        次の一歩を踏み出すための秘訣を伝授します。
「 Linux の次の一歩ってなんだろう?」 「Webデザイナーやプログラマの方などに次の一歩を踏み出してもらうために」 サーバ用途にLinuxをインストールした。 設定したLinuxにコンテンツを載せた。 コンテンツを公開した。   -> じゃあ次は?
こう考えました 当たり前のことだけど・・・ 「システムは動いてナンボ」 動き始めただけでは意味が無い。 動き続ける、使われ続けることに意味がある。 じゃあLinuxを 保守・運用の観点 から一歩踏み出してみよう!
運用保守におけるシステム監視 外部監視 対象機器の外側から状態を監視するもの 逆に言えば、対象機器の内側からでは監視できないもの 疎通監視、サービス監視 内部監視 対象機器の内側から状態を監視するもの プロセス監視、リソース監視、ログ監視
外部監視の種類 疎通監視 ネットワーク的な接続状態の監視 ( 主に Ping) サービス監視 特定のサービス ( ネットワークで言うポート ) が稼動状態にあるかどうかを監視する。 単純にサービスが接続可能であるか、だけでは無く、サービス応答まで監視できるものもある。 例えば特定の Web コンテンツにアクセスできるか、等。
内部監視の種類 プロセス監視 特定のプロセスが起動状態にあるかどうかを監視する。 リソース監視 リソースの負荷を監視する。 一時的な過負荷であるかを判断するためには、日々リソースの使用率を計測しておく必要がある。 ログ監視 ログファイルに対し、特定のキーワードの出力状態を監視する。 例 :ERROR 、 WARN 、 link down 等。
内部監視を実現するパッケージ プロセス監視 Monit リソース監視 MRTG ログ監視 logwatch
Monit プロセス監視を行うパッケージ 監視したいプロセスを指定して 特定の条件の検知して 指定したアクションを行う。 例 :httpd が down したら restart する。 例 :postfix の CPU 使用率が 90% を超えたら restart する。 公式 (http://mmonit.com/monit/)
Monit のインストール 公式から Link されたパッケージ置き場 (http://dag.wieers.com/rpm/packages/monit/) から RPM パッケージをダウンロードする。 #  rpm –ivh monit-4.9-2.el5.rf.i386.rpm
Monit の簡単な設定 /etc/monit.conf /etc/monit.d/* #  vi /etc/monit.conf set daemon 120 Include /etc/monit.d/* ※ 例 :httpd が down したら restart するように #  vi /etc/monit.d/httpd.conf check process httpd with pidfile /var/run/httpd.pid   start program = “/etc/init.d/httpd start”   stop program  = “/etc/init.d/httpd stop”   if failed port 80 protocol HTTP then restart
例 : 実際に httpd を落としてみる #  /etc/init.d/monit start Process Monitor (monit)  を起動中 : Starting monit daemon                                                           [  OK  ] #  ps aux | grep httpd root      29237   0.0  0.2   9944  2904 ?        Ss   23:08   0:00 /usr/sbin/httpd apache    29238   0.0  0.1   9944  2068 ?        S    23:08   0:00 /usr/sbin/httpd ... #  /etc/init.d/httpd stop httpd  を停止中 :                                            [  OK  ] ※ しばらく待機… #  ps aux | grep httpd root      29393   0.1  0.2   9944  2912 ?        Ss   23:12   0:00 /usr/sbin/httpd apache    29394   0.0  0.1   9944  2060 ?        S    23:12   0:00 /usr/sbin/httpd ...
MRTG リソース監視を行うパッケージ 公式より引用->「 The Multi Router Traffic Grapher (MRTG) はネットワークの負荷を監視するツールです」 現在は各システムリソースを ( 主に SNMP 経由で ) 取得、可視化し、監視する用途で使われている。 公式 (http://www.mrtg.jp/doc/)
「SNMP」とは 「 Simple Network Management Protocol (シンプル ネットワーク マネージメント プロトコル、 SNMP )は、 DARPA モデルに準じた IP  ネットワーク上のネットワーク機器を監視( モニタリング )・制御するための情報の通信方法を定めるプロトコルである。 」 (Wikipedia より ) つまり、 IP ネットワークの仕組みの上で、接続された機器 ( ノード ) の状態を監視したり、制御したりできる。 Linux サーバも、 IP ネットワークに接続されていて、 SNMP が喋れれば、監視・制御が可能。
MRTG+net-snmp のインストール MRTG でデータを取得するために、 net-snmp を yum でインストール。 MRTG を yum でインストール。 #  yum –y install net-snmp #  yum –y install mrtg
net-snmp の簡単な設定 設定ファイルの編集 Snmp daemon の起動 #  vi /etc/snmp/snmpd.conf com2sec local    localhost        private group   MyGroup v1             local group   MyGroup v2c            local view    all     included  .1 80 access  MyGroup ""      any       noauth    exact  all all none   #  /etc/init.d/snmpd start
MRTGの簡単な設定 設定ファイルの作成->実行 #  cfgmaker private@127.0.0.1 > /etc/mrtg/mrtg.cfg #  vi /etc/mrtg/mrtg.cfg ※ 最低限 WorkDir だけ設定しないと動きません。 #  LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg  ※ 最初は LOG ファイルが無かったりで 2 回ほど WORNING が出ます。
こんな感じ
活用例 CPU 使用率を取得する メモリ使用率を取得する パーティション使用率を取得する 閾値超過時に通知する ( ThreshProgI/O 、 ThreshProgOKI/OKO )
logwatch ログ監視するパッケージ。 CentOS ではデフォルトでインストールされている。 仕組みだけ確認してみましょう。
Cron の設定を確認 毎日 4:22 に Perl スクリプトが動くように設定されている #  cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly #  ls -alF /etc/cron.daily/0logwatch lrwxrwxrwx 1 root root 39  6 月   8 13:40 0logwatch -> /usr/share/logwatch/scripts/logwatch.pl*
logwatch で送信されるメール例 Subject : *** SECURITY information for localhost.localdomain *** localhost.localdomain :  6 月  10 21:47:37 : saru : user NOT in sudoers ; TTY=pts/1 ; PWD=/home/saru ; USER=root ; COMMAND=/usr/bin/yum install apache Subject : Cron <root@localhost> LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok 14-06-2010 22:00:02, Rateup WARNING: /usr/bin/rateup could not read the primary log file for 127.0.0.1_2
統合監視システム システム監視を、個別の仕組みでは無く、統合的に行えるもの。 複数機器を一括で管理可能。 現在はインターフェースが日本語化されたものも多々ある。 ZABBIX Hinemos 導入コスト、運用コストが高いため、単体機器に対してはメリットが低く、複数の機器にて構成されたシステムにおいてメリットがある。
ZABBIX
ZABBIX オフィシャル http://www.zabbix.com/ 国内アンオフィシャルポータル http://www.zabbix.jp/ 国内ベンダ Miracle http://www.miraclelinux.com/products/m_plus/zabbix/index.html NTT コムテクノロジー http://www.zabicom.com/
Hinemos
Hinemos オフィシャル http://www.hinemos.info/
まとめ Linuxサーバを「構築」出来た方が、「運用」出来るようになること、を主旨として、ポインタをまとめてみました。 システム運用にたった一つの「正解」は無く、日々改善していくことで「最適解」を探していくしかありません。 皆さんの構築したLinuxサーバが、いつまでもいつまでも使われ続けますように 
以上、ありがとうございました。 Next: FreeBSD 、次の一歩

Osc10do linux nextstep