こんにちは。TS部のsadakataです。
今回は、サーバ運用において重要な『監視』について書きます。
1.サーバ監視とは
サーバ監視とは、そのサーバが壊れていないか(死活監視)、
ちゃんとした性能をだせているか(リソース監視)、などをチェックすることをいいます。
もしサーバが壊れていたり、性能が低下していることが分かったら、
運用担当者(僕たちです)にアラートを出します。
いちはやく異常を見つけて早急に対処することで、システムの稼働への影響を
最小にとどめることができます。
2.サーバ監視の方法
基本的には、サーバに「監視エージェント」と呼ばれるソフトウェアを導入して
「監視マネージャ(監視官)」からチェックする、という方法が一般的です。
死活監視では、マネージャから監視対象のサーバに対して、
「生きてますか?」と定期的に点呼を行います。
点呼に対して「大丈夫、生きてますよ!」と返事が返ってきたらOK。
ここで返事がなかったら大変です。
安否不明ということで、監視官は運用担当者に知らせます。
パフォーマンス監視は、主にCPU、メモリの使用率をチェックします。
監視マネージャはエージェントからCPUやメモリの使用状況について定期的に報告を受け、
「CPUの使用率が95%を超えた状態が5分続いたらNG」というように、
「閾値」を設けて監視します。
3.最近の監視がすごい
実はここが今回僕が一番書きたかった項目です。
現在リソース監視では、先述しましたとおり「閾値」を設けるやり方が一般的です。
しかし閾値監視にはちょっとした問題点があるのです。
それは、閾値設定が意外に難しいことです。
閾値を下げすぎるとアラートがバンバンあがってしまいますし、
逆に閾値を上げすぎると、検知したい時に検知できないことになってしまいます。
そこで最近、「機械学習」による監視が注目されています。
「機械学習」とは「人工知能(AI)」の分野の一つで、
人間がするような判断を、コンピュータにもさせようとするものです。
https://ja.wikipedia.org/wiki/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92
機械学習を導入した監視では、監視官は対象のサーバの挙動(クセ)を
ずーっと『学習』しつづけます。
「このサーバは平均して○○%くらいのCPU使用率なんだな」
「このサーバは毎週水曜日の00:00頃は負荷が高いな。
じゃあこの時にメモリの使用率が上がるのは仕方ないか…」
といった具合に学習し、そのクセから外れる動きをした場合に
「なんか変だ!」と判断してアラートを発します。
人間の運用担当者が、見て・考えて・判断する、という一連のことをやってくれるのです。
閾値をどの程度にするか悩んだり試行錯誤したり、また発せられたアラートに対して
「これはOK、これはNG」と担当者が都度確認する必要もなくなります。
学習が進むにつれてクセをより細かく把握できるようになり、監視の制度は高くなっていきます。
(はじめのうちは十分な学習が必要なので、僕が検証している機械学習の監視製品では、
「最低でも3週間の学習期間を与えてください」と注意書きがありました。)
本当に人間がやるようなやり方を実現していて、おもしろいですよね。
・・・最後は監視ではなくちょっとした機械学習のお話になってしまいましたが(笑)、
人工知能や機械学習はIT業界のホットワードで、「こんなことができるようになる」ということを
知るだけでもワクワクしますので、今後このTS部ブログでも触れていけたらと思っています。