Zabbixを使った効果的な運用管理の実現

6,369 views

Published on

2014/07/01 データセンタークロスアライアンス 運用標準化WGでの講演資料です。

Published in: Technology
0 Comments
14 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,369
On SlideShare
0
From Embeds
0
Number of Embeds
278
Actions
Shares
0
Downloads
99
Comments
0
Likes
14
Embeds 0
No embeds

No notes for slide

Zabbixを使った効果的な運用管理の実現

  1. 1. Zabbixを使った 効果的な運用管理の実現 TIS株式会社 戦略技術センター 池田 大輔 2014/7/1データセンタークロスアライアンス 運用標準化WG
  2. 2. アジェンダ ● 自己紹介・会社紹介 ● 運用環境の変化について ● 運用環境が変化することで生じる問題 ● 運用に必要な情報の効果的な収集と活用 ● 構築・運用の自動化による手作業の削減 ● オーケストレションツールの活用 ● まとめ ● 最後に ○ TIS OSSサポートサービスのご紹介
  3. 3. 自己紹介 池田 大輔 TIS株式会社 戦略技術センター @ike_dai https://www.facebook.com/ikedai Zabbix,AWS,fluentd,Chef,JobScheduler... 名前 所属 Twitter Facebook 興味 AWS、VMware監視用プラグイン『HyClops for Zabbix』開発 (http://tech-sketch.github.io/hyclops/jp/)技術評論社HP : http://gihyo.jp/book/2014/978-4-7741-6288-1 Amazon : http://www.amazon.co.jp/dp/4774162884
  4. 4. TIS株式会社 昭和46年 4月28日 231億円 6077名 コンサルティング、ソフトウエア開発等のSI事業 設立 資本金 従業員数 事業 データセンター GDC 御殿山 東京第1センター 東京第2センター 東京第3センター 名古屋センター 師勝センター 心斎橋gDC-EX 心斎橋gDC 大阪センター 天津濱海高新インターネットデータセンター
  5. 5. Cloud 最近の動向・運用環境の変化 HW OS MW APP HW OS MW APP HV VM OS MW APP VM OS MW APP VM OS MW APP VM HW OS HW HV VM Cloud VM Container Container Container Container Container Container 物理 仮想化 クラウド化 マルチ環境化・コンテナ型仮想化 仮想化レイヤの追加 環境がクラウド上に存在 し、HW・HVレイヤの管理 がクラウドレイヤに隠蔽 複数環境の併用 プロセス空間を分離した アプリケーション稼働基盤の実現 HW HV HW HV
  6. 6. 運用環境の変化によって生じる課題 セキュリティリスクを考慮しなければならない箇所の増加 より大規模で動的に変化する環境の運用負荷高騰 障害状況の判断の複雑化 ベンダーロックイン などなど
  7. 7. 運用環境の変化によって生じる課題 セキュリティリスクを考慮しなければならない箇所の増加 より大規模で動的に変化する環境の運用負荷高騰 障害状況の判断の複雑化 ベンダーロックイン などなど
  8. 8. Cloud 障害状況の判断の複雑化 OS MW APP VM OS MW APP VM HW OS MW APP HV VM OS MW APP VMVM障害 HV障害 Cloudサービス障害 障害発生の可能性があるレイヤの増加 HV VM VM VM VM VM 負荷高騰 他のマシンへの影響 集約管理による影響の拡大 HW HV
  9. 9. 手作業の限界 東京データセンター パブリッククラウド 大阪データセンター 多拠点大規模 VM VM VM VM オートスケール スケール時の構築はどうする? 増えたマシンの監視はどうする? 数百・数千台の管理どうする? 複数拠点の監視設定どうする? 監視・管理用 サーバ ? ? ? ?
  10. 10. 環境情報の 効果的な収集と活用 「状況判断の複雑化」への対応
  11. 11. まずは、 必要な情報を確実に集める
  12. 12. どんな情報の収集が必要か? Webサーバ DBサーバ 仮想環境 クラウド環境 ・死活状況 ・リソース状況 ・アクセス状況 (アクセス頻度、レスポンス時間等 ) ・エラー発生状況 (レスポンスコード4xx、5xx系等) ・死活状況 ・リソース状況 ・DB処理状況   (スロークエリ発生状況、 SQL処理実行時間、   SQL発行件数等) ・ハイパーバイザ情報  (稼働状況、リソース割当状況、  リソース仕様状況等 ) ・VM情報  (稼働台数、リソース状況、稼働状況等 ) ・クラウドサービスの稼働状況  (サービスのステータス、クラウド基盤の稼働状況 ) ・クラウドサービスベンダー管理レイヤの状況  (隠蔽されている部分での稼働状況 ) ・クラウド上のインスタンスの稼働状況
  13. 13. Zabbixによる効果的な監視 snmp server snmp server SNMP Trap SNMP ssh server ssh server Zabbix Agent 仮想化HV Cloud ODBC DB JMX Java アプリ 仮想環境API クラウドAPI SSH接続による 内部コマンド実行監視 ZabbixAgentによ る内部監視 (リソースやログ等) ODBCによるDB監視 Zabbix Java GatewayによるJava監視 外部チェックスクリプト監視機能による API監視 Zabbix Server
  14. 14. Zabbixによるクラウド環境の監視 〜AWSの例〜 Zabbix Server AWS EC2 Cloud Watch Zabbix Agent EC2インスタンス内部の監視 EC2インスタンス全体の稼働状況の監視 AWS EC2 API AWS CloudWatch API EC2インスタンス情報の収集 CloudWatchの結果の統合 スクリプト
  15. 15. メタクラウドAPIを使った透過的なクラウド監視 参考1 AWS AWS API RackspaceRackspace API OpenStackOpenStack API ・・・ メタクラウドAPI スクリプト APIの叩き方を統合 複数の異なる環境の APIを叩く際に有効 ・ Deltacloud ・ libcloud ・ jclouds などのメタクラウドAPIがある
  16. 16. Zabbix向けHybrid Cloud監視プラグイン 「HyClops for Zabbix」 参考2 AWSおよびVMware環境の監視自動化のためのツール 機能 クラウドAPI経由でインスタンス名およびインタフェース情報を取得し Zabbixホスト自動登録 ホスト自動登録 テンプレート自動割当 API経由での情報取得 複数インスタンス一括制御 GateOne連携 ホスト自動登録時OS種別(LinuxかWindows)に応じて自動テンプレート割当・ OSレイヤ以上の監視可能 AWS |インスタンス情報(AZ,Type,Status等)、課金情報(CloudWatch BillingData) VMware|HV情報(CPU,Memory,Storageの全体量/割当量/使用量)、VM情報(CPU,Memory,Status等) 起動/停止/再起動を複数インスタンスに一括命令実行可能 (Zabbixグローバルスクリプト機能利用 ) Zabbixに登録したホストのインタフェース情報を使って Webブラウザ上でSSHコンソール接続可能 GitHub上でOSS公開: http://tech-sketch.github.io/hyclops/jp/
  17. 17. 次に、 情報を意味のある形で管理
  18. 18. 収集した情報の適切な活用 大量のデータから意味のあるデータのみを抽出 複数のデータを統合的に見て意味のあるデータに解析
  19. 19. Zabbixの監視アイテムとトリガーの活用 例: 1ハイパーバイザ上に稼働している全マシンのCPU負荷状況をみて CPUの追加割当処理を検討 個で見ていると見えてこない状況を効果的にピックアップ 物理マシンCPU使用率 100% 50% 0% 物理マシン(ハイパーバイザ) 仮想マシン群 仮想マシンCPU使用率 100% 50% 0% 仮想マシンA 仮想マシンB 仮想マシンC 仮想マシンA 仮想マシンB 仮想マシンC CPU追加割り当て検討
  20. 20. Zabbixトリガーの依存関係の活用 例: 仮想環境の稼働状態を統合的に監視 ハイパーバイザが障害 物理マシン(ハイパーバイザ) 仮想マシン群
  21. 21. Zabbixトリガーの依存関係の活用 例: 仮想環境の稼働状態を統合的に監視 1つの障害が影響する範囲を考え障害の本質のみを検知 ハイパーバイザが障害 VMにも影響 各VMが障害 依存関係 物理マシン(ハイパーバイザ) 仮想マシン群
  22. 22. アイテムキー設定例 grpavg[Web servers,system.cpu.load[,avg1],last,0] Zabbixアグリゲートアイテムと          計算アイテムの活用 例: 負荷分散しているWebサーバのロードアベレージの偏りを監視 Zabbixのホストグループ単位で同じアイテムの値を計算処理 平均(grpavg)、最大(grpmax)、最小(grpmin)、合計(grpsum) アグリゲートアイテム 計算アイテム Zabbixの監視アイテムの値を計算処理 加算・減算・乗算・除算・Zabbixのトリガー関数による計算処理 計算処理例 Webサーバグループのロードアベレージの分散値の計算 「(hostAのロードアベレージ - Webサーバのホスト群のロードアベレージの平均)の2乗」
  23. 23. Zabbixアグリゲートアイテムと          計算アイテムの活用 例: 負荷分散しているWebサーバのロードアベレージの偏りを監視 閾値監視だけでは判別できない状況の検知が可能 Immutableな考え方が広まると個々の状況より全体の状況が重要に LoadBalancer Webサーバ1 Webサーバ2 Webサーバ3 Webサーバ4 スケールアウト
  24. 24. 構築・運用自動化による 手作業削減 「手作業の限界」への対応
  25. 25. 環境構築の自動化 - 大量に同じマシンの作成が必要 - オートスケールにより迅速な環境の準備が必要 対応策の一例  セットアップ済みのVMイメージを事前準備  →VMイメージをベースに構築  But.. 設定の違うサーバ毎にイメージを作成→管理が煩雑に。。。 こんな要求に悩まされていませんか? 仮想化やクラウド化により実現が可能な土台は整っている
  26. 26. AnsibleやChefを使った構築自動化 構築作業をコードとして記述し自動化 - name: Register Zabbix yum repository yum: name={{ zabbix_repo }} state=present - name: Install Zabbix yum: name=zabbix-agent-{{ zabbix_version }} state=latest - name: Set zabbix_agentd.conf copy: src=zabbix-agentd.conf dest=/etc/zabbix/zabbix-agent.conf - name: Start Zabbix Agent service: name=zabbix-agent state=started enabled=yes task(実行処理定義) major_version: "2.2" minor_version: "4" zabbix_version: "{{major_version }}.{{ minor_version }}" zabbix_repo: "http://repo.zabbix.com/zabbix/{{major_version}} /rhel/6/x86_64/zabbix-release-{{major_version}}-1.el6.noarch.rpm" vars(変数定義) AnsibleでZabbix Agent構築自動化 変数を書き換えて、処理実行するだけで Zabbix Agentのバージョンアップ可能 これだけの記述でZabbix Agentの導入が自動化可能
  27. 27. Serverspecを使った稼働環境テスト ChefやAnsibleで自動構築 正しくパッケージが入った? 正しくプロセスが稼働している? 正しくセキュリティ設定が反映されている? サーバ稼働状況テストフレームワーク「Serverspec」でテスト Serverspecとは  ・Ruby実装  ・Rubyのテストフレームワーク RSpecに準拠  ・テスト実行元サーバからテスト対象サーバに   SSHログインしてテスト実行  ・サーバ内で稼働状況を確認するための   コマンドを実行して正常かどうかをテスト
  28. 28. Serverspecを使った稼働環境テスト Zabbix Agent稼働テストコード例 require 'spec_helper' describe package('zabbix-agent') do it { should be_installed } end describe service('zabbix-agent') do it { should be_enabled } it { should be_running } end describe port(10050) do it { should be_listening } end describefile('/etc/zabbix/zabbix_agentd.conf') do it { should be_file } its(:content) { should match /Server=127.0.0.1/ } end パッケージがインストールされているか? プロセスが起動しているか? プロセスが初期起動設定が有効になっているか? ZabbixAgentのポート(10050)がリッスンされているか? zabbix_agentd.confが存在するか? 設定ファイル内にServerの設定が入っているか?
  29. 29. 監視設定自動化 snmp server Zabbix Agent Zabbix Server Zabbix Agent自動登録機能 snmp server Zabbix Agent Zabbix Agent ネットワークディスカバリ機能 vSphere API VMware監視機能 Zabbix Agent
  30. 30. NWディスカバリ機能    ZabbixAgent自動登録機能 NWディスカバリ(ポーリング型) 自動登録(プッシュ型) Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server 指定したNW宛に定期ポーリング Zabbix Agent Zabbix Agent Zabbix Agent Zabbix Agent 起動時にプッシュ通知 ■ NWのIPrange指定をしてポーリング ■ 検知条件が豊富  - Zabbix Agent  - SNMP  - ICMP ping  - TCP  - HTTP 等 ■ Agent起動時にZabbixServerに通知  →無駄なパケットが発生しない(効率的) ■ 通知時に送付される情報  - Hostname (Agetホスト名)  - ListenIP (Agent稼働IP)  - ListenPort (Agent稼働ポート)  - HostMetadata (Agentに割り当てられたメタ情報 )
  31. 31. NWディスカバリ機能    ZabbixAgent自動登録機能 NWディスカバリ(ポーリング型) 自動登録(プッシュ型) Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server 指定したNW宛に定期ポーリング Zabbix Agent Zabbix Agent Zabbix Agent Zabbix Agent 起動時にプッシュ通知 ■ NWのIPrange指定をしてポーリング ■ 検知条件が豊富  - Zabbix Agent  - SNMP  - ICMP ping  - TCP  - HTTP 等 ■ Agent起動時にZabbixServerに通知  →無駄なパケットが発生しない(効率的) ■ 通知時に送付される情報  - Hostname (Agetホスト名)  - ListenIP (Agent稼働IP)  - ListenPort (Agent稼働ポート)  - HostMetadata (Agentに割り当てられたメタ情報 )
  32. 32. NWディスカバリ機能    ZabbixAgent自動登録機能 NWディスカバリ(ポーリング型) 自動登録(プッシュ型) Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server Zabbix Server or Zabbix Proxy Target Server Target Server Target Server Target Server 指定したNW宛に定期ポーリング Zabbix Agent Zabbix Agent Zabbix Agent Zabbix Agent 起動時にプッシュ通知 新たな機器発見時に自動実行できるアクション   ホスト追加   ホストグループへの割り当て   監視テンプレートの割り当て   メッセージの送信  など
  33. 33. VMware自動監視機能 VMware監視の仕組み ZabbixServer vCenterServer VMwareESXi VM VM VM VMwareESXi VM VM VM VMwareESXi VM VM VMVMware Cache VMwareCollectors vSphereAPI simple check (VMwareFrequencyの頻度で) - クラスタ情報 - ハイパーバイザ情報 - データストア情報 - 仮想マシン情報 - イベントログ情報 追加&更新 Zabbix2.2から実装された機能 vSphere APIを経由してHVやVMの情報をZabbixで自動監視 vCenter管理下のESXiやVMのリストに合わせる形でZabbix上のホストを自動管理
  34. 34. オペレーション自動化 Zabbixアクション機能の活用 アクション実行条件 アクション実行内容 - メンテナンス期間外で - あるホストグループの - あるトリガーの状態が障害なら ・・・ - あるユーザ宛にメール送信 - あるユーザグループ宛にメール送信 - あるホストグループに対してコマンド実行 - あるホストに対してコマンド実行 ・・ 何らかのイベント発生時に処理を自動実行可能に
  35. 35. Zabbixアクション機能ステップ実行機能 担当者への メッセージ送信 第1ステップ 管理者・担当者 への メッセージ送信 プロセスA再起動 (カスタムスクリプト) 第2ステップ 第3ステップ 間隔 1時間 間隔 2時間 アクション実行フロー 管理者への メッセージ送信 プロセスA再起動 (カスタムスクリプト) 障害発生
  36. 36. 自動化の全体イメージ ベース イメージ 例: AWS AMI   VMイメージ インスタンス VM 自動起動 例:  AWS AutoScaling OpenStack Heat Web Server DB ServersDB Server インスタンス インスタンス VM VM Web ServerWeb Server DB Server 自動構築 例:  AWS OpsWorks Chef/Puppet/Ansible 運用監視・管理ツール Zabbix 自動設定 例:  ZabbixのNWディスカバリ/自動登録  HyClops for Zabbix 自動オペレーション実行 例:  Zabbixアクション機能
  37. 37. オーケストレーションツール 応用編 1ツールだけでなく、様々なツールの組み合わせで エコシステムを実現することが重要 効率良く運用管理するには? オーケストレーションツールとは? Why What How マルチ環境の効率良い運用管理のために 様々な環境(Public/Private Cloud)のあらゆるリソースを 様々なコンポーネントを組み合わせて統一的にソフトウェア管理
  38. 38. オーケストレーションツール 応用編 1ツールだけでなく、様々なツールの組み合わせで エコシステムを実現することが重要 効率良く運用管理するには? オーケストレーションツールとは? Why What How マルチ環境の効率良い運用管理のために 様々な環境(Public/Private Cloud)のあらゆるリソースを 様々なコンポーネントを組み合わせて統一的にソフトウェア管理 TISが開発し、OSSとして公開 公式サイト: http://cloudconductor.org/ 公開先URL: https://github.com/cloudconductor Twitter: @ccndctr Facebook: CloudConductor(https://www.facebook.com/cloudconductor)
  39. 39. CloudCondcutor概要 ● インフラ・運用のノウハウを込めたパターンを中心に ● 「いつでも」 「誰でも」 「どのクラウド」にでも ● その時点で最適な非機能要件を持ったシステムを簡単に構築する、 クラウド オーケストレータ
  40. 40. CloudCondcutor活用例          災害対策への適用 DBWeb/AP Monitoring CoreFileServer Virtual Router DNS 通常時 災害時 Backup User User Virtual Router 業務システム 障害発生! ④接続先が自動的に切り替わる Monitoring CoreFileServer Virtual Router DNS DBWeb/AP Virtual Router 業務システム Restore ②パターンを用いて システムを自動再構築 DBWeb/AP 業務システム ①障害の検知 ①監視 ②データのバックアップ 通知 設定 変更 Virtual Router 通常系 通常系 待機系 待機系 ③データの自動リストア 業務システム用のサーバ等は 構築されていない
  41. 41. まとめ 必要な情報を確実に収集 集めた情報を意味のある形で活用 人手に依存しない仕組み作り 高機能化する監視ツールをうまく活用 個で見る視点と全体で見る視点どちらも重要 ソフトウェア制御できるレイヤの拡大に伴い益々自動化が促進
  42. 42. TIS OSSサポートサービス 宣伝1 保守サポート コンサルティング マイグレーション OSSの利用をトータルにバックアップ
  43. 43. TIS OSSサポートサービス 宣伝1 対象OSS インフラ基盤 運用基盤 アプリケーション 稼働基盤
  44. 44. TIS OSSサポートサービス 宣伝1 問い合わせ先 oss-sales@ml.tis.co.jp TIS株式会社 OSSサポートサービス担当窓口
  45. 45. オープンソースカンファレンス出展 宣伝2 - 2014 7/4(金)-7/5(土) OSC 2014 Nagoya セミナー 7/5(土) 14:00〜  「ツールをちょい足ししてPostgreSQLの運用を楽にする ~pg_monz, fluentd 他~」 - 2014 8/1(金)-8/2(土) OSC 2014 Kansai@Kyoto セミナー 8/1(金) 15:15〜  「手作業なしの安定環境実現に向けたZabbix活用方法紹介+Zabbix2.4最新機能紹介」 - 2014 9/5(金) OSC 2014 Enterprise@Osaka - 2014 12/12(金) OSC 2014 Enterprise(東京 渋谷) 各回ブース展示もします。 ぜひ、お越しください。
  46. 46. ご清聴ありがとうございました

×