2015年07月17日
TIS株式会社 池田 大輔
2015 年 5 月 28 日 (木) に、当社主催にて「Zabbixだけじゃない! OSSを徹底活用して運用自動化を実現」セミナーを開催致しました。おかげ様で定員40名のところ、約100名の方にお申込み頂くなど、大好評のセミナーとなりました。ありがとうございます。 今回は、本イベントにて、TIS株式会社 IT基盤技術本部 OSS推進室 池田 大輔 が講演させていただいた「Zabbixと外部連携の効果とその可能性を探る」の内容をご紹介致します。
(著者:TIS株式会社 池田 大輔)
Zabbixは監視に特化しているツールであるため、基本的に監視の領域については、カバーできています。ただ、その監視に紐づく周辺領域にも、少しずつ手が伸びているようなイメージです。Zabbix単体でも、いろいろとできることもありますが、当然不足している部分もあるので、連携を考えてみる必要が出てくることになります。
もし、Zabbix単体のみで運用できるのであれば、基本的に、Zabbixをどううまく使うのかについてのみ考えておけばOKです。当然、1つのツールで全部をカバーできて「Zabbixだけ運用していればよい」となるのが、理想ではあるのですが、全部をZabbix単体に求めてしまうというのは、商用ベンダーの製品の考え方に近づいていってしまうのではないか、と個人的に思います。
Zabbixはあくまでオープンソースであり、いろいろな領域を賄えるツールをいかにうまく連携させるか、そういったところが、非常に効果が出てくるポイントであると考えています。
現状でもZabbixはいろいろな機能を持っているため、初めて使う人にはちょっと難しいと思われるところもあるかもしれません。Zabbix1つで全部できればよいのですが、それを全部実装されてしまうと、使うのにさらにハードルが高くなってしまうという弊害も考えられます。
他には、いろいろな変化に対応できなくなってしまうという問題もあります。管理すべきシステムの様変わりは結構激しいものがあるため、そういった点にも適時適切に対応していかなければなりません。その時に、本当に1つのツールで全部カバーしてしまった場合、そのツールの開発が遅れたりしてしまうと、全然対応できなくなることもあります。
1つのツールだけで完結させてしまうというのは、便利な半面、副作用も多いのが実情であると思います。そのため、最近アプリ開発でよくやられているマイクロサービス的な考え方で、得意領域を持ったものをうまく組み合わせて1つのサービスに作り上げるようなイメージが、運用のシーンでも重要になってくるのではないかと思います。
例を挙げて見ていきます。 通常、ジョブ管理というと、ある日の何時にジョブ実行するなどの時間ベースでのイベントドリブンでのジョブ実行や、複数のジョブがある場合には、前のジョブの状態などを見ながら実行させるなどのイベントベースのジョブ実行が一般的だと思います。
そこに、監視結果を条件にジョブ実行を行う、ということを考えてみます。 例えば、「とあるジョブを実行する時に、複数の実行先候補を用意しておき、それぞれの実行先候補の負荷状況監視情報を元に、実行先を選択してジョブを起動する」などのことが考えられると思います。
こういった形で、時間や監視結果やジョブの状態などの様々なイベントを融合させて、ジョブのコントロールができるようになると、ますますより高度なジョブの運用管理が可能になると思います。
次の例は、 OTRSやRedmineなどのインシデント管理ツールに対して、監視結果をそのまま連携してチケットの起票や、障害発生時の対応フロー管理の自動化例です。 構成情報と紐付いていることにより、インシデント管理ツールから状況が一覧で把握できたり、チケットが発生することにより影響範囲を把握することができるなどのメリットがあります。
まさに、このようなところは、高機能なインシデント管理ツール、高機能な監視ツール、構成情報管理ツール、などをそれぞれうまく組み合わせて自動連携させることで、より大きな効果が出るようなシーンであると思います。
連携によって発生する有効効果と、大量のツール連携による管理の複雑化は、トレードオフの関係であると思います。そのため、このトレードオフについては、よく考えなければなりません。
トレードオフを管理するポイントとして、2つ挙げます。 1つ目は、連携をよりシンプルに、複雑にならないような形で組み上げるということ。 2つ目は、むやみやたらに連携するような不要な連携は削除するということです。
オープンソースの運用監視ツールは他にもありますが、なぜZabbixが連携に適しているのでしょうか。 1つ目は、Zabbixには連携を効果的に行えるいろいろな仕組みが備わっていることが、一番大きなポイントだと思います。 2つ目は、仕様が非常にオープンであるため、他のソフトウェアに比べても、いろいろな情報にアクセスできるという点です。
他のツールとの連携に利用するZabbix APIについてご紹介します。Zabbix APIは、外部のツールやプログラムからZabbixに対して、HTTPのリクエストを投げると、その応答を返してくるという仕組みです。 Zabbixの設定情報に対して、CRUD(create,read,update,delete)することができます。他にも、Zabbixが監視してデータベースに蓄えられている監視結果情報を、外からget(read)することができます。 この機能を使えば、いろいろな可能性が広がるという形になっています。
他ツールとの連携に利用するための機能として、マクロをベースとしたアクション機能があります。 アクション機能とは、障害が発生した場合に、何らかのスクリプトを起動させたり、メールを飛ばしたりなどができる機能です。 マクロとは、Zabbix内部で扱っている変数のことです。通知メール設定の中に、{HOST.NAME}と書いておくと、障害が発生したホスト名がそのままメールの中に展開されて、ホスト名が書かれたメールアラートを飛ばすことができます。 このように上手にマクロを活用すると、いろいろなパターンの情報を外部のツールに連携することができます。 こういった機能をうまく活用するということが、効果的に連携するためのポイントと言えます。
他にも連携のための様々な機能があり、ここでは、3つ紹介します。
1つ目は、『外部チェックスクリプト』です。Zabbixサーバから外部のツールに対して、何らかのスクリプトを実行して、その結果をZabbixに取り込む機能です。
2つ目は、『ZabbixエージェントのUserParameter』です。Zabbixエージェントを経由して、外部のツールと連携する機能です。Zabbixサーバから直接届かないところに対してでも、エージェントが届くところであれば、情報を取ってくることができます。
3つ目は、『Zabbix Sender』です。 今までの2つは、1回のリクエストごとに1つの監視結果を返すという形になるのですが、『Zabbix Sender』を使うと、一括でいろいろな情報を外から送り込むことができるため、効率よく連携することができます。
以上のように、Zabbixは連携を行える仕組みが豊富に整っていると言えます。
次に、「仕様のオープン性」について考えてみます。 Zabbixは、その仕組み自体が「自分達で何か考えて作ってみよう」と思わせるような、好奇心をくすぐられるようなものをいろいろと持っています。
公式ドキュメントを見ると、開発はすべてチケット管理システムを中心にして行われているため、どういった改良がされているのかなどが、一目瞭然で分かります。
ロードマップも非常に細かく定義されています。次の3.0の新機能なども一目で分かります。
ソースコードが公開されているため、中身を見れば、基本的にすべて分かります。ただ「ソースコードのここの部分の書き方は、どのような意図で書かれているのだろうか?」のようなものは、なかなか分かりにくいところがあるので、他のオープンドキュメントと紐付けて見ていく必要もあります。
公式ドキュメントは、日本語化も結構進んでいます。 本当に簡単な使い方、監視アイテムの設定に書くパラメータの情報、内部資料についての解説などまで含めて、いろいろな情報が書かれています。
このようにZabbixがオープンな仕様になっていて、いろいろなアプローチができるというところから、様々なエンジニアが興味を持って、各種情報を活用して、発展してきていると言えると思います。
AWS(Amazon Web Services)とは、Amazon Web Services社が主にWeb事業者・開発者向けに提供しているオンラインサービス群の総称です。 AWSが普及している現在、AWSとの連携も重要なテーマです。
AWSは、ただ単にインスタンスを動かすだけではなく、運用系の便利なサービスも充実してきています。 AmazonCloudWatchは、AWSの中で動いているサービスの状態を監視するサービスです。 もう1つ、AutoScalingという機能があります。これは、サーバを自動的に、あるしきい値に従ってスケールアウトするサービスです。
これらのサービスとZabbixを連携すると、より効率的な運用が可能になります。
新しい便利ツールも次々と出てきています。そういったものを、うまく活用していくと、より効率的になります。
1つのツールで全部をカバーしているのではなく、いろいろなものが連携して実現するような構成をとっているからこそ、一部分だけを置き換えて、新しいものにするといったことが、非常にやりやすいと言えます。
例えば、fluentdがあります。fluentdは、ログを収集の機能に特化したツールです。データベースに入っている情報や、ログファイルに吐き出された情報などを、inputで取り込んで、活用したい場所に吐き出します。本当にそれだけのシンプルな機能になっています。ここのoutputのフィルターを上手に活用することで、inputしてきたデータをうまく加工した上で、外部に出力することができるツールです。
連携によって効果を求めようとすれば、いろいろな可能性が広がっています。多種多様なパターンがあるので、連携する目的をしっかりと抑えた上で、是非積極的にいろいろと活用して頂ければと思います。
「Zabbixと外部連携の効果とその可能性を探る」いかがでしたでしょうか? TISでは、Zabbixや他のツールとの連携による、システムの運用自動化のご支援をしています。以下のURLもご参考下さい。 http://www.tis.jp/service_solution/zabbix/
TIS株式会社 OSS推進室 所属。社内向けシステムの保守運用業務を経験後、クラウド時代の効率的な統合運用管理をテーマに活動中。特に、OSSを駆使した運用のエコシステム実現を目指し、Zabbix,fluentd,Serverspec,Ansibleなどの導入や検証に取り組む。技術検証成果などを技術ブログ『Tech-Sketch』にて発信中。著書:『Zabbix統合監視徹底活用 - 複雑化・大規模化するインフラの一元管理』
2022-09-28(水)13:00 - 13:55 「【SIer・MSP事業者向け】ハイブリッドクラウド環境の監視問題をどう解決するか? ~日本製SaaS型監視サービス"Mackerel(マカレル)"でオンプレ・クラウドを統合監視~」 と題したウェビナーが開催されました。 皆様のご参加、誠にありがとうございました。 当日のサマリー動画は以下から無料でご覧いただけます。 ご興味の...
「Baton」(バトン)とは、インフラストラクチャアクセス監査のためのオープンソースツールキットです。「ユーザーアカウント」「権限」「ロール」「グループ」「リソース」などのアイデンティティデータについて、「抽出」「正規化」することで、インフラストラクチャアクセスをオンデマンドで監査できます。
「Grafana Faro Web SDK」(グラファナファロWebSDK)とは、ブラウザフロントエンドアプリケーション観測用ライブラリです。「Grafana Faroプロジェクト」の一部であり、Webアプリケーションに埋め込んで、メトリックなどを収集し、コレクターエンドポイントに転送します。
「Munin」(ムニン)とは、ネットワーク化されたリソース監視ツールです。「PC」「ネットワーク」「SAN」「アプリケーション」「気象観測デバイス」などを監視します。ネットワーク全体のリソースを監視する「グラフ作成フレームワーク」として機能し、「リソース傾向」および「パフォーマンス低下要因把握」などを分析できます。
Icinga2(アイシンガ2/イッティンガ2)とは、オープンソースの監視システムです。「強力な構成言語」+「RESTAPI」を備えた監視プラットフォームコアとして動作し、「ネットワークリソース可用性チェック」「レポート用パフォーマンスデータ生成」「ユーザーへの通知」などの機能を提供します。
Serverspec(サーバスペック)とは、サーバ状態のテスト自動化フレームワークです。『テスト駆動によってインフラコードのリファクタリングや開発を促進すること』を目標としており、「構築したサーバ環境が意図した通りに構成されているのか?」について自動的に確認作業を実施できます。
7-Zip(セブンジップ)とは、オープンソースのファイル圧縮(展開)アーカイバです。WindowsやLinuxなどで使用できます。「高圧縮率」「多くのフォーマットに対応」などの特色があり、有償の圧縮(展開)ツールに匹敵する高機能性が評価され、高い人気を得ています。
daloRADIUS(ダロラディウス)とは、認証サーバ「FreeRADIUS」に対して、「ユーザー設定」や「アカウンティング設定」などの管理を行うためのWebインタフェース機能を提供します。「グラフィカルレポート機能」や「地理情報(GIS)機能」などの機能も搭載しています。
Filebeat(ファイルビート)とは、Elastic Stackに属する「軽量ログデータ収集ツール」です。サーバエージェントとしてインストールされたFilebeatは、指定したログファイルなどを監視し、ログイベントを収集して、インデックス作成のためにElasticsearchやLogstashに転送します。
Apache Guacamole(アパッチ ワカモレ/グアカモーレ)とは、クライアントレスのリモートデスクトップゲートウェイです。「VNC」「RDP」「SSH」などの標準プロトコルをサポートしています。Guacamoleサーバをインストールすれば、クライアントとしてWebブラウザのみでデスクトップにアクセスできます。
Alertmanager(アラートマネージャー)とは、オープンソース監視ソリューション「Prometheus」に付随するアラート管理ソリューションです。Prometheusサーバや他サーバからさまざまな種類のアラートを受信して処理できます。「クラスタ構成による高可用性」も実現できます。
Activiti(アクティビティ)とは、オープンソースのビジネスプロセス管理(BPM)プラットフォームです。軽量ワークフローを作成でき、プロセス自動化ニーズをサポートします。ビジネスエンドユーザー/開発者/システム管理者などを対象としており、自動化課題の解決を支援します。
Camunda BPM(カムンダBPM)とは、「ワークフロー」および「意思決定自動化」のためのオープンソースプラットフォームです。「BPMN 2.0ビジネスプロセス定義」+「ビジネスユーザーとソフトウェア開発者を結集させるワークフロー機能」により、ビジネス意思決定をサポートします。
rsyslog(アールシスログ)とは、オープンソースの高性能ロギングツールです。「syslogプロトコル」を実装し、ネットワーク経由での強力なログ転送処理機能を提供します。「マルチスレッドアーキテクチャ」「高スループット処理」「拡張性」などを特徴としています。
Hinemos(ヒネモス)とは、国産オープンソース統合運用管理ソリューションです。複数コンピュータ群を単一コンピュータのようなイメージで管理することを可能とします。「各種監視機能」と「ジョブ管理(ワークロードスケジューリング)機能」の両方の機能を提供し、システム運用の自動化をサポートします。
Bacula(バキュラ)とは、オープンソースのバックアップ&リカバリソリューションです。複数OSが混在する異種ネットワークでのバックアップも可能であるため、エンタープライズレベルの統合的バックアップシステムを構築できます。「高度なストレージ管理機能」や「紛失/破損ファイルの検索および回復機能」などの機能を備えています。
syslog-ngとは、柔軟で拡張性の高いシステムロギングアプリケーションです。「syslog」「非構造化テキスト」「キューイング」「SQL」「NoSQL」などの幅広い入出力メソッドをサポートし、一元化された信頼できるロギングソリューションを構築できます。
collectdとは、システム情報を定期的に収集する小さなデーモンであり、さまざまなシステム値を保存および監視するメカニズムを提供します。数十万のメトリックを処理するための最適化と機能を利用して、システム(アプリケーション)のパフォーマンスメトリックを定期的に収集し、RRDファイルなどのさまざまな方法で値を格納します。
Cacti(カクタイ)とは、ネットワークグラフ作成ツールです。データロギングおよびグラフ作成ツール「RRDTool」のデータストレージおよびグラフ作成機能を活用するフロントエンドとして機能します。「ネットワークトラフィック」「CPU使用率」「空きメモリ量」「ディスク使用率」などをグラフ化できます。
JobScheduler(ジョブスケジューラ)とは、ワークロード自動化ソリューションです。「実行可能ファイル」や「シェルスクリプト」などを起動し、データベースプロシージャなどの自動実行などに使用されます。「高可用性クラスタリング機能」や「ロードシェアリング機能」を利用可能で、エンタープライズレベルにも対応できます。
Polaris(ポラリス)とは、Kubernetesデプロイについて検証および実施するためのオープンソースツールです。クラスタ構成に対してさまざまなチェックを実行して、Kubernetesポッドとコントローラーがベストプラクティスを使用して構成されていることを確認し、将来の問題を回避するために役立ちます。
Chef(シェフ)とは構成管理(プロビジョニング)ツールです。インフラ環境構築を簡単に行うための各種機能が搭載されており、「ユーザー作成」「パッケージインストール」「設定ファイル編集」「システム各種設定」などの展開作業を自動化できます。「物理環境」「仮想環境」「クラウド環境」などの各種インフラ環境をサポートしています。
Spinnaker(スピネーカー)とは、マルチクラウド継続的デリバリープラットフォームです。複数クラウドに対するデプロイやクラスタ管理を実施し、アプリケーションリリースについて高速かつ確実にリリースするためのインテリジェントな継続的デリバリープロセスを自動化できます。
SEC(Simple Event Correlator)とは、高度なイベント処理のためのイベント相関ツールです。「イベントログ監視」「ネットワーク監視」「セキュリティ監視」「不正検出」「イベント相関を含むその他のタスク」などに利用できます。単一プロセスとして実行され、プラットフォームに依存しない軽量ツールとして利用できます。
Embulk(エンバルク)とは、プラグ可能なマルチソースバルクデータローダーです。バルク処理に特化したプラグインベースのデータローダーで、大規模データセットのバルク転送を実施します。「データベース」「DWH」「NoSQL」「ファイル形式」「クラウドデータストア」などのデータ転送を強力にサポートします。
Apache ZooKeeper(アパッチズーキーパー)とは、分散環境運用サポートサービスを提供するコーディネーションエンジンです。各ノード(システム全体)を集中保守管理するための機能を提供します。「設定管理」「名前解決」「同期」「グループサービス」などの利用頻度の高いさまざまなサービスが用意されています。
Graphite(グラファイト)とは、高度にスケーラブルなエンタープライズ対応監視ツールで、リアルタイムグラフを作成できます。「Webサイト」「アプリケーション」「ビジネスサービス」「ネットワークサーバ」などのパフォーマンスを追跡し、時系列データの「保存」「取得」「共有」「視覚化」が可能です。
Zabbix(ザビックス)とは、オープンソースの統合監視ツールです。統合監視ツールとして必要な機能を網羅的に搭載しており、「サーバ」「ネットワーク」「アプリケーション」などを高度に集中監視し、「障害検知」「アラート通知」「パフォーマンス可視化」などを行えます。システム全体を1つのZabbixで監視できます。
Puppet(パペット)とは、オープンソースの構成管理ツールです。「パッケージインストール」「サーバ構成更新」「ユーザー追加」などインフラストラクチャの管理を自動化するツールを提供します。「Linux」「UNIX」「Windows」をサポートし、システムの自動管理エンジンとして一元化された仕様に基づいて管理タスクを実行します。
NUT(ナット)とは、電源デバイスを監視するために設計されたソフトウェアコンポーネントスイートです。「無停電電源装置」「配電ユニット」「ソーラーコントローラー」「サーバ電源ユニット」などの多くのブランドとモデルをサポートし、ネットワークプロトコルと標準化されたインターフェースを介して管理できます。
Graylog(グレイログ)とは、オープンソースのログ管理プラットフォームです。オープンスタンダードに基づいてさまざまなデータソースからデータを収集し、1つの中央ロケーションからデータ管理を行えます。セキュリティとコンプライアンスに関するニーズに対応できる包括的なログ管理ソリューションを構築できます。
Nagios(ナギオス)は統合監視フレームワークです。「サーバ」「ネットワーク」「リソース」「サービス」などの稼働状況を監視し異常時に通知を行います。Nagios本体は主に「プラグインのスケジューリング」「チェック結果保存」「チェック結果通知」「Webインターフェース提供」などを行い、実際の監視は各プラグインが実施する構造になっています。
Prometheus(プロメテウス)とは、システム監視および警告ツールキットです。柔軟なクエリとリアルタイムアラートを備えたHTTPプルモデルを使用して構築された時系列データベースにリアルタイムメトリックを記録します。時系列データに基づいたアクティブな「スクレイピング」「保存」「クエリ」「グラフ化」「アラート」を含む完全な監視および傾向分析機能を提供します。
Ansible(アンシブル)とは構成管理ツールです。多数の構築管理対象に対するアプリケーションとシステムの導入を容易にするシンプルなIT環境構築自動化プラットフォームです。「設定ファイルがシンプル」「使いやすい」「管理対象サーバへのエージェントソフトウェアインストール不要」など、最小限の手間で各種設定を自動化できる特徴があります。
Fluentd(フルエントディー)とは、データコレクタ(ログデータ収集管理ツール)として、ログデータを収集しJSONに変換して出力する機能を提供します。「入力機能」や「出力機能」などはモジュール化されており、プラグインモジュールを追加することで、さまざまなデータソースや出力先に対応できます。
Grafana(グラファナ)とは、オープンソースのデータ時系列分析用ダッシュボードツールです。インフラやアプリケーションなどのさまざまなデータソースにアクセスして各種メトリクス情報を収集し、時系列データとして可視化できます。リッチなグラフ描画によって一目見ただけでリアルタイムにステータスを把握できます。
OTRS(オーティーアールエス)とは、「ヘルプデスク機能」+「ITIL対応運用管理機能」を備えるオープンソースの高機能チケット管理ソリューションです。会社や団体や組織などが「顧客から受け取った個々の問い合わせやクレーム」や「それに関連する対応履歴や各種事象など」を「チケット」と呼ばれる単位でまとめて効率的に管理できます。
Logstash(ログスタッシュ)とは、Elastic社が提供するログ収集管理ツールです。サーバサイドデータ処理パイプラインとして、さまざまなデータソースからログを収集し、1つのサーバに集約する機能を提供します。多様なプラグインを使用して、どのようなタイプのイベント(ログ)にも対応できます。
Kubernetes(クーベルネイテス)とは、クラウドネイティブコンピューティング基盤のためのDockerコンテナ群管理フレームワークです。Dockerコンテナ群に対する各種管理機能を提供することで、アプリケーションコンテナを論理的な単位にグループ化し、管理性を向上させます。
FOG Project(フォグプロジェクト)とはオープンソースのコンピュータイメージングソリューションです。「OSイメージング(クローニング)機能」および「ネットワーク管理機能」を備えています。「Windows」「Mac OSX」「各種Linuxディストリビューション」などのデスクトップOSをサポートしています。
Juju(ジュジュ)とは、アプリケーションモデリングによるデプロイツールです。パブリック(プライベート)クラウドおよびローカルコンテナに対して効率的な展開/構成/拡張/操作を行えます。
Beats(ビーツ)とは、オープンソースデータ収集/転送プラットフォームです。Elastic社のプロダクト群で、サーバからあらゆる種類のオペレーショナルデータを収集して、Elasticsearch/Logstashなどに情報を転送します。
Xymon(シモン/サイモン)とは、ネットワーク監視ツールです。サーバ/アプリケーション/ネットワークなどについてグラフィカルインターフェースでの監視を行えます。
Apache Maven(アパッチ メイヴン)とは、Java用プロジェクト管理ツールです。不明瞭なソフトウェア開発プロジェクトをモデル化して、開発効率を高めます。
Draft(ドラフト)とは、「Docker」コンテナデプロイサポートツールです。Microsoftが提供しています。「Kubernetes」クラスタ上へのデプロイと継続的インテグレーション機能を提供します。
Consul(コンサル/コンスル)とは、クライアントサーバ型のクラスタ管理ツールです。同様ツール「Serf」よりも汎用的で、サービス検出(ヘルスチェック)用途などにも活用できます。
Packer(パッカー)とは、マシンイメージの自動生成/管理を行なうコマンドラインツールです。マシンイメージ作成に関するさまざまな問題を解決するためのサポートを行います。
Vagrant(ベイグラント)とは、仮想環境構築/共有ツールです。仮想化ツール(VirtualBoxなど)のフロントエンドラッパーとして機能し、数行のコマンドのみで簡単に仮想化環境を構築できます。
Itamae(イタマエ)とは、サーバ管理を自動化する構成管理ツールです。「Chef」ライクなRuby DSLで記述するツールで、必要最低限の機能のみを揃えており、非常にシンプルに使用できます。
CDIR Collector(シーディーアイアールコレクター)。セキュリティインシデント初動対応時の適切なデータ保全をサポートするツールです。調査対象端末汚染を最小限に抑えながら安全にデータを収集します。
Apache Ant(アパッチ アント)。ビルドツールです。複雑なコンパイル作業を自動化します。「XML記述」「Javaベースであるためプラットフォームに依存しない」などの特徴があります。
Pandora FMS(パンドラエフエムエス)。オープンソースの高機能統合監視ツールです。ネットワーク/コンピュータシステム/アプリケーション稼働状況などの監視を行います。
Hatohol(ハトホル)。システム全体を一元的に監視する統合運用管理ツールです。複数の運用管理ツール(Zabbix、Nagiosなど)のハブとして統合的に機能します。
OSS×Cloud ACCESS RANKING