zabbixの用語について
初めて投稿します。zabbix初心者です。
初歩的な質問で大変恐縮なのですが、
http://enterprise.zabbix.co.jp/faq/372
↑のサイトで言われている「20000監視項目(アイテム)/5分間隔」とはどういう意味でしょうか。
zabbixのドキュメント( https://www.zabbix.com/documentation/2.2/jp/manual/concepts/definitions )で書かれている「アイテム」の定義からはすこしずれているような気がして、意味がつかめません。また監視項目という言葉もいまいちピンと来ません。
監視項目=アイテムと認識は正しいでしょうか。
正しいとすれば、zabbixのアイテムって20000項目もありましたっけ…。
「20000監視項目(アイテム)/5分間隔」とは何がどうなっている状況なのかご教示お願いします。
heya - 投稿数: 319
>監視項目=アイテムと認識は正しいでしょうか。
正しいです。もうちょっと細かく書くと、監視項目数=アイテムを登録した数です。
>正しいとすれば、zabbixのアイテムって20000項目もありましたっけ…。
種類は20000も無い(※)でしょうが、最終的な監視項目数は「各ホストの監視項目数の合計」なわけで、監視対象のホストが多くなれば20000ということも十分ありえます。
例えば、インターフェースが100個あるホストでトラフィックの in/out を監視しようと思えばそれだけでアイテム数は200個になります。そしてそういうホストが100台あれば全部で20000個という数になります(それに加えてインターフェースの状態(ifOperStatus など)を見るならさらに10000個追加で30000個となります)。
「20000監視項目(アイテム)/5分間隔」というのは、20000個のアイテムを、それぞれ5分間隔で監視するという意味です。これが1分間隔だと負荷は大きくなりますし、逆に10分間隔だと負荷は小さくなります(単純計算では20000監視項目/5分間隔と4000監視項目/1分間隔はだいたい同じくらいの負荷となります)。
もちろん、実際は全部のアイテムが同じ監視間隔とは限らないので、平均的な監視間隔と思った方がいいでしょう。だいたいの目安というか。
※シンプルチェックや Zabbixエージェント など、あらかじめアイテムキーが決められているものの数に限った話です。SNMP 監視や Zabbixトラッパー など、キーを自由に設定できるアイテムもあるので、理論上は20000種類というのも不可能ではありません(実際はそこまで必要になることは無いと思いますが)。
fripper - 投稿数: 495
広く言われている「監視項目」は、概ね「アイテム」の認識で正しいと思います
正常・異常を判定するために必要となるデータとして‥や
データ量・負荷などを知るために必要となるデータとして‥といった目的で
「CPUの使用率」や「メモリの空き容量」「ネットワークのデータ流量」など
「監視するうえで、どのようなデータを集めてくるか」に相当するのが「アイテム」です
heyaさんの仰っているように、1台の監視対象ホストであっても、
データとして収集したいポイントが多数あるような場合には、アイテムの設定数は
100項目・1000項目などになってしまいますし、そういった監視対象ホストが多数あれば
「Zabbixサーバとして取り扱うアイテムの総数は20000項目」‥といった状況にもなってしまいます
また、1つの項目について、30秒間隔でデータを集めるのか、5分間隔でデータを集めるのか‥という
データの収集間隔は、とても重要です
アイテム項目が1つしか設定されていなくても、30秒間隔なら1日あたり2880個の監視結果データ、
5分間隔なら288個の監視結果データ‥といった具合で、Zabbixサーバが取り扱わなければいけない
データの総量が変わってきてしまいます
「20000監視項目(アイテム)/5分間隔」の状態とは
トータルとして、20000個の監視アイテムが設定されている状態で、
各々のデータ収集間隔が5分として設定されているような状態のこととなります
概ね、1日あたりで5760000個の収集結果データがZabbixサーバ・DBに格納される状態です
「監視対象として設定されているホストの数」や
「1台の監視対象ホストあたりに設定されている監視アイテムの数」について
特に言及・限定されていないのは、Zabbixサーバの処理性能や負荷などを考える際に
「単位時間あたりにおいて、どの程度の量のデータを収集してくる必要があるのか」が
一番大きな要素となるからだと思います
R2D2017 - 投稿数: 11
>>heyaさま、fripperさま
迅速かつ丁寧なご回答ありがとうございます。
よく理解できました。
もう少し質問させてください。色々と調べてみましたが、なかなか参考となる資料が見つからず、困っています。
・20000より多いアイテムを監視するとして、そういう大規模な場合はZabbixProxyを用いるのが一般的なのでしょうか。Zabbixサーバ1台で監視できる最大数等はありますでしょうか。
・また、Zabbixをインストールしているサーバとは別にWebサーバを立て、同時に100台程度のクライアントからZabbixのUIを見れるようにするシステムを構築したいのですが、Zabbixでそれは可能でしょうか?
まだまだ質問が尽きないので、Zabbixの性能について詳しくわかる資料があればご教示お願いします…。
fripper - 投稿数: 495
>・大規模な場合はProxyを用いるのが一般的なのか?
>・Zabbixサーバ1台で監視できる最大数等は?
Zabbixのアイテムには、「Zabbixエージェント」「Zabbixエージェント(アクティブ)」
「SNMP」「IPMI」「シンプルチェック」等、多くの種類・タイプ(データ収集方式)があります
そのうち、一部種類を除いて多くのタイプで「Zabbixサーバのモジュールが監視対象に聞きに行って、結果値を貰ってくる」と
いうような動作をしています
そのため、監視対象となる項目数が増えてくると「聞きに行く手間」が
サーバ側にとって、バカにならない負荷となってきてしまいます
また、監視対象との間にあるネットワーク経路に障害が発生した場合などでは
「聞きに行くための接続ができず、通信タイムアウトが発生するまで待ちが発生」なども
起こることが想定されます
Zabbixサーバモジュールの設定で、この「問合せ処理を行うPollerの同時起動数」なども
チューニングできるようになっているのですが、それでも
「一部の通信途絶したホストのデータ収集処理が滞留してしまった結果
他の正常なホストのデータ収集が間に合わなくなる」といった事態が起こり得てしまうため
「データ収集処理の部分の大半をProxyに任せてしまい
Proxyから届いた監視結果データのDB格納処理と、障害判定・通知等の処理だけに専念する」
といったアプローチで、大規模な監視、監視規模のスケールアップを実現する方法が
広く用いられている次第です
VPN接続で多拠点にまたがるような構成の場合などでは、
地方拠点毎にProxyを配置して、監視データの収集・問い合わせ処理を肩代わりさせたうえで
中央拠点にServerを配置し、各Proxyの収集結果データと、全体の監視設定を集約管理する‥と
いったような感じでしょうか
>・別にWebサーバを立て、同時に100台程度のクライアントからZabbixのUIを見れるように‥
問題ありません
・Zabbixサーバモジュールが動作するサーバ
・DBが動作するサーバ
・WebUIが動作するサーバ
これらは全て別々に構成することが可能です
Zabbixサーバモジュールは、DBに接続さえできれば問題なく動作しますし
WebUIモジュールも、DBに接続さえできれば問題なく動作します
AWSのRDS等、DBのみ稼働するようなサービスをDBバックエンドとして利用することも
全く問題ありません
wakaba - 投稿数: 228
広瀬です
実務経験上からの回答ですが、ZabbixServer1台でならそれなりのチューニングは必要ですが、
10万アイテムくらいはさほど苦ににはなりません
※この10万には死活・リソース、ログ監視、JMX、SNMP、IPMI、計算、DBモニタなど項目は多彩です
R2D2017 - 投稿数: 11
>>fripperさま、広瀬さま
返信、遅くなりまして申し訳ございません。
Zabbixの動きがなかなかつかめなかったので、大変勉強になりました。
立て続けに質問して恐縮なのですが、Zabbixサーバ1台で100万アイテムを監視し、Webサーバを建てずにZabbixサーバのUIに100台のクライアントが同時接続できる構成というのは可能でしょうか。
問題があるとすれば、どこがネックになりますでしょうか。
TNK - 投稿数: 4742
ZabbixサーバーのWebインターフェースを使用するためには、Apache
HTTP ServerやnginxなどのWebサーバーが必須です。
また、100万アイテムを監視できるかどうかは、1秒間に何アイテムに
なるかと、それを処理できるだけのパフォーマンスをもったサーバー
を用意できるか次第です。
R2D2017 - 投稿数: 11
>>THKさま
言葉が足りず申し訳ありません。
httpdをZabbixと同じサーバにインストールすれば別にWebサーバを立てる必要はありませんよね。
そのサーバに100台くらいのクライアントを集中させたいのですが、可能でしょうか。
つまり、proxyサーバとZabbixサーバ(兼Webサーバ)の2台の2台で100万アイテムを監視したいのですが、可能ですか。
下段について。
1秒間に1000アイテム程度になる仕様です。
「それを処理できるだけのパフォーマンスをもったサーバ」に関しては、上記の構成に際してどのくらいのスペックのサーバが必要か教えていただくことはできないでしょうか。
TNK - 投稿数: 4742
表示する画面次第です。
基本的なWebサーバーとしてのチューニングは必須ですし、大量の
データベースアクセスを必要とする画面を多くのユーザーが同時に
表示する場合は、データベースの性能も高くなければ表示が非常に
遅くなってしまう可能性があることに注意してください。
最悪の場合、タイムアウトが発生してグラフも表形式の情報も表示
できなくなる場合があります。
以下のURLの情報を参考にしてください。
ご参考:Zabbixで10,000台のサーバーを監視する
http://kodai74.blogspot.jp/2013/11/zabbix10000.html
実際には、どのようなアイテムであるかも重要になってきます。
短時間で応答が得られるようなアイテムであれば良いのですが、ア
イテムによっては数秒かかるようなものもあるかもしれません。
そのような環境で、秒間1000件も処理するとなると、平行してアイ
テムの値を取得できるよう、アイテムの種別に合わせて、そのアイ
テム用のプロセスを増加させることが必要になるでしょう。
プロセスを増やせば、メモリやデータベースの同時接続可能数など
にも影響がありますし、1台のZabbixサーバーでアイテムの値取得
処理用のプロセスを増やすのが難しくなってきた場合には、Zabbix
プロキシを使用してアイテムの値の取得処理の負荷を分散させるわ
けです。
ボトルネックになりやすいのは、Zabbixサーバー用のデータベース
なので、データベースのチューニングは必須です。
また、ディスクのI/O性能が低いものを使用していると、秒間1000
件はさばけないと思います。
最新のZabbixでは、上記URLの情報よりデータベースに負荷を掛け
ないように改善されていますが、ネットワーク構成やアイテムの種
別などでも差が出てくると思いますので、事前に、導入予定の環境
の一部で試行してみることをお勧めします。
あと、使用するDBMSやそのバージョンによっても、性能は変わって
くると思います。
R2D2017 - 投稿数: 11
>>TNKさま
ご教示ありがとうございます。
難しいですね、Zabbixで対応できる規模のものかを判断できる指標があるといいのですが…
Zabbixそのものよりは、ハードウェアの性能に拠るといったところでしょうか。
1つ確認させていただきたいのですが、「1秒間当たりの監視項目数(NVPS)」と「1秒間当たりのアラート数」は同じものと考えて間違いないですか?
1秒間に数千監視項目という記述はよく見かけますが、数千アラートはあまり見かけないので…。
秒間1000アラートをZabbix3.0で実現できるかが今問題になっておりまして、無理筋であれば、3.0が安定してさばけるのがだいたい/秒でいくらくらいのアラートか、という情報がほしいのですが、ご教示願えないでしょうか。
TNK - 投稿数: 4742
いいえ、違います。
「1秒間当たりの監視項目数(NVPS)」というのは、1秒間にどれだけ
の個数のアイテムの値(メトリクス値など)を収集するかです。
Zabbixの考え方をご理解頂きたいのですが、Zabbixでは、
・アイテム
・トリガー
・アクション
という概念の理解が必要です。
アイテムというのは、様々なメトリクス情報などを取得するための
設定です。
このアイテム自体には、障害かどうかを判定する閾値や条件などは
持ちません。
単純に値を取得して収集するだけという利用方法もあるのです。
続いてトリガーですが、アイテムで取得してきた値に対して、障害
とみなす条件や、障害から回復したとみなす条件を設定します。
そして、アクションですが、トリガーで設定した条件によって、ア
イテムの値を判定した時に、障害、または障害回復というイベント
が発生するわけですが、そのイベント発生を契機に、何を実行する
かを設定します。
以下のURLの内容もご確認ください。
zabbixの性能限界について
http://www.zabbix.jp/node/4040
アクションで何を実行するか次第です。
例えば、R2D2017さんが使用されている障害通知用のメールサーバー
では、秒間1000通のメールを配送することは可能ですか?
できないのであれば、障害を検知してもメールを使用して秒間1000
件の通知を行うことはできません。
メール以外であっても、Zabbix 3.2以前であれば、アクションの実
行(アラートの通知)はシーケンシャルに処理されますので、1つの
処理が1/1000秒で終わるような処理でない限り、実現は不可能です。
つまり、Zabbixの性能(特にデータベースの性能)も必要ですが、ア
クションで実行して処理するものも高速でさばくことができるよう
なものでない限り1秒間では処理することはできずに、キューに溜
まることになるでしょう。
R2D2017 - 投稿数: 11
THKさま
基礎的なことから非常に分かりやすく教えていただきありがとうございました。
理解していたようで全く誤解していたようです。
助かりました。またよろしくお願いします。
R2D2017 - 投稿数: 11
アラートの方法について質問させてください。
Zabbixのアクションとして、snmptrapdで受け取ったトラップのうち、トリガーによって障害とみなされたものだけ別のサーバ(Zabbixではない)に振り分ける、という設定をすることは可能でしょうか。
TNK - 投稿数: 4742
受け取ったSNMPトラップそのままを送ることはできませんが、SNMP
トラップを投げるスクリプトを実行させることであればできます。
メディアとしてSNMPトラップを投げるためのスクリプトを登録して
アクションの実行時にそのメディアを使用して実行させるか、リモ
ートコマンドを使用してスクリプトなどを直接実行させる方法のど
ちらかになるでしょう。
メディアの実行やリモートコマンドの実行時には、アイテムの値な
どを引数に指定することができますので、トラップ内に組み込みた
いメッセージに加工するようなスクリプトを作成すれば良いと思い
ます。
R2D2017 - 投稿数: 11
TNKさま
いつも迅速に対応していただきありがとうございます。
なるほど、やり方についてすこし調べてみます。
またお願いします。
R2D2017 - 投稿数: 11
Zabbixの機能について二つ質問させてください。
ZabbixのGUI上からtracerouteを実行する方法はありますか?
また、Zabbixには手動でポーリングする機能はないという理解でよろしいでしょうか。
TNK - 投稿数: 4742
マップ上のホストのアイコンや最新データなどのホスト名をクリッ
クすると、ポップアップメニューが表示され、事前に登録されたコ
マンドやスクリプトを実行できます。
サンプルとして、tracerouteの実行はそのメニューに登録されてい
ます。
ただし、Zabbixサーバー上にtracerouteコマンドをインストールし
ておくことと、「管理」->「スクリプト」の画面で、インストール
したtracerouteのパスと一致しているかを確認しておいてください。
一度、Zabbixをインストールして操作してみることをお勧めします。
アイテムの値として、Webインターフェース上からの操作で即座に
現時点の値を取得するという機能はありません。
とはいえ、Zabbixサーバー上から、zabbix_getというコマンドを使
用すれば、現時点の値をZabbixエージェントから取得することはで
きます。
heya - 投稿数: 319
R2D2017さん
もうすでに「zabbixの用語について」の内容ではなくなっているので、別の質問などの場合はここへの返信でなく新規の投稿でお願いします。内容が別のものは、分かれていた方が、後から見るときに分かりやすいので。
R2D2017 - 投稿数: 11
>>THKさま
ありがとうございます。
Zabbixはインストールして触っているのですが、設定等複雑でなかなか慣れません。
>>heyaさま
失礼いたしました。毎回新規でスレッドを立てると乱立しそうでここで質問していました。
承知しました。