ZabbixでAWSのステータスを監視

前回「Zabbix5でCloudWatch監視設定」記載しましたが、参考サイトのZabbixサイト「AWS監視テンプレート」にAWSのサービス状態が見れる「Service Health Dashboard」をZabbixで監視する方法が記載されています。AWSのサービス状態を監視し障害発生時に通知出来れば、障害ポイントの早期発見につなげることが出来ますので、監視設定することをおススメします。しかし、そのZabbixサイト「AWS監視テンプレート」では使用しているバージョンが古く、現時点で一番サポートが長い「Zabbix 5」では動作しないため、前々記事「AWS AmazonLinuxへのZabbixインストール」で構築したZabbix5環境での構築方法を以下記載します。AWS Service Health Dashboard

設定項目

  • Zabbixサーバーのconfig設定
  • Python環境設定
  • Pythonファイル修正
  • zabbixテンプレート設定
  • 監視設定

    Zabbixサーバーのconfig設定

    ZabbixよりAWS Service Health Dashboardへの値取得に時間がかかるため、以下のコマンドでZabbixサーバーのconfigに記載されているTimeout値を変更します。

    vi /etc/zabbix/zabbix_server.conf

    デフォルトでは482行目の「Timeout」値を「30」秒に変更します。

    ### Option: Timeout
    # Specifies how long we wait for agent, SNMP device or external check (in seconds).
    #
    # Mandatory: no
    # Range: 1-30
    # Default:
    # Timeout=3
    
    Timeout=30

    Python環境設定

    本記事作成時点のAmazonLinux上ではPython2.7とPython3.7がインストールされていますが、Python2はサポート終了ということで、Python3での環境設定を記載します。

    1. PythonファイルをPython2よりPython3へ変換するツールをインストールするため、以下のコマンドを実行します。
      yum install 2to3
    2. 以下のコマンドを実行し、Pythonファイルを実行出来るようにするためのモジュールをインストールします。
      pip3 install boto3
      pip3 install feedparser

    Pythonファイル修正

    AWS Service Health Dashboardのステータスを取得するためには、githubサイトのPythonファイルを利用しステータスを取得します。しかし、Python3用ではないため、実行出来るよう修正します。

    1. 以下のgithubサイトよりPythonファイルを入手し、以下の場所に保存します。
      githubサイト<https://github.com/tech-sketch/zabbix_aws_template/blob/master/scripts/AWS_Service_Health_Dashboard.py>

      保存場所
      /usr/lib/zabbix/externalscripts/
    2. Zabbixからのファイル実行はzabbixユーザーが実行するため、以下のコマンドを実行し、ファイルのオーナーや権限を変更します。
      chown zabbix:zabbix AWS_Service_Health_Dashboard.py
      chmod 755 AWS_Service_Health_Dashboard.py
    3. 入手したPythonファイルをPython3用に変換するため、以下のコマンドを実行します。
      2to3 -w AWS_Service_Health_Dashboard.py
    4. PythonファイルをPython3で実行出来るように、先頭行のShebangを修正します。また、変換だけではプログラム内で値を渡せずエラーとなるため、文字コード指定するよう、行頭の箇所 1行名、79行目より81行目、92行目を修正します。さらに、githubサイトのPythonファイルに記載されている4地域より2地域「AF」「ME」が増えているため138行目に追記します。
      vi AWS_Service_Health_Dashboard.py

      <1行目修正前>

      #!/bin/env python

      <1行目修正後>

      #!/usr/bin/env python3

      <79~81行目修正前>※行目空白行79

      
      header = struct.pack('<4sBQ', 'ZBXD', 1, len(send_data_string))
      send_data_string = header + send_data_string
      

      <79~81行目修正後>

      b1, b2 = ('<4sBQ'.encode('utf-8'), 'ZBXD'.encode('utf-8'))
      header = struct.pack(b1, b2, 1, len(send_data_string))
      send_data_string = header + send_data_string.encode('utf-8')

      <92行目修正前>

      response += data

      <92行目修正後>

      response += data.decode(encoding='utf-8')

      <138行目修正前>

      block_list = ["NA", "SA", "EU", "AP"]

      <138行目修正後>

      block_list = ["NA", "SA", "EU", "AP", "AF", "ME"]
    5. 「AWS_Service_Health_Dashboard.py」実行時に、以下のファイル「parser.py」も使用します。しかし、こちらも値を渡せずエラーとなるため、文字コード指定するよう110行目の行末に追記します。
      vi /usr/lib64/python3.7/html/parser.py

      <110行目修正前>

      self.rawdata = self.rawdata + data

      <110行目修正後>

      self.rawdata = self.rawdata + data.decode(encoding='utf-8')

    Zabbixテンプレート設定

    上記Zabbixサイトのリンクにもある以下のgithubサイトにZabbixテンプレートがありますので、そちらを使用します。

    1. 以下のgithubサイトよりZabbixテンプレートを入手します。
      githubサイト<https://github.com/tech-sketch/zabbix_aws_template/blob/master/templates/3.0/AWS_Service_Health_Dashboard_template.xml>
    2. Zabbix Web UIへログインし、左ペイン「レポート」-「テンプレート」をクリックしテンプレート一覧を表示します。
    3. 画面右上「インポート」をクリックします。Zabbixテンプレート一覧
    4. 「参照」ボタンより入手したZabbixテンプレートを選択し「インポート」をクリックします。Zabbixテンプレート インポートインポートに成功すると、以下のメッセージが表示されます。Zabbixテンプレート インポート成功メッセージ
    5. テンプレート画面に戻り、インポートされたことを確認します。

    監視設定

    以下の手順でEC2インスタンスの監視設定します。注意点はテンプレート設定上、ホスト名にインスタンスIDを記載します。インターフェースは設定不要になります。

    1. 左ペインの「設定」-「ホスト」をクリックしホスト一覧を表示します。
    2. 画面右上「ホストの作成」をクリックします。Zabbixホスト一覧
    3. 「ホスト」タブでは、以下を入力します。
      ホスト名:「AWS_Service_Health_Dashboard.py」の138行目で修正した「NA」「SA」「EU」「AP」「AF」「ME」を指定
      表示名:わかりやすい表示名など(入力しない場合は「ホスト名」で記載した内容が表示されます)
      グループ:任意のグループを指定

      ホスト名記入内容 Service Health Dashboard名
      NA North America
      SA South America
      EU Europe
      AP Asia Pacific
      AF Status Africa
      ME Middle East

      Zabbix ホスト追加

    4. 「テンプレート」タブでは、「選択」をクリックし、上記でインポートしたテンプレートを追加します。Zabbixホスト追加 テンプレート指定
    5. 各タブの記載内容に問題なければ「追加」をクリックし、監視ホストを追加します。
    6. ホスト一覧より、追加されたことを確認します。
      ※しばらくするとディスカバリルールが実行され、アイテム数が増加します。AWS Service Health Dashboard ホスト一覧

     

    以上、AWSステータスのZabbix監視設定完了となります。

    最短でAWSを習得したい方におすすめ!
    オンラインスクール「とらくら」

    当ブログを運営しているオンラインスクール「とらくら」では、AWSを扱うために必要不可欠な主要サービスの知識を、理論学習だけでなく、環境構築をハンズオン形式で実践できるカリキュラムを行なっております。

    随時、個別の無料説明会を開催しており、講座内容や料金、本講座を受講するメリット・デメリットについてはもちろん、業界に精通しているからこそできるエンジニアのキャリアプランや業界の情勢などを、ざっくばらんにお話します。

    些細なことでも、お気軽にご相談ください。

    
    
    インフラ構築コース、受講生募集中!AWS WordPress環境構築コース、受講生募集中!

    資料のご請求をありがとうございました

    ご入力いただいたメールアドレスへ
    「資料ダウンロード用URL」が記載されたメールをお送りしました

    ※メールが届かない場合、ご入力されたメールアドレスが間違っているか
    「迷惑メールフォルダ」に入っている可能性がありますのでご確認ください