NTT東日本の自治体クラウドソリューション

ZabbixでAWS EC2を監視してみよう
~CloudWatch連携とZabbix Agentの比較~

こんにちは、保坂です。

サービスを安定運用するうえで、継続的なモニタリングは欠かせません。

この継続的なモニタリングを実現する仕組みの1つとして、オープンソースの統合監視ソフトウェアであるZabbixを用いた方法があります。

Zabbixはオンプレミス環境だけでなくAWSをはじめとしたクラウド環境の監視にも対応しています。近年はAWS向けテンプレートや自動検出機能なども充実し、以前より容易にクラウド環境の監視を実現できるようになりました。

本コラムではZabbixを利用してAWS上のEC2インスタンスを監視する以下の2つの方法についてご紹介します。

  1. AWSテンプレート(AWS EC2 by HTTP)による監視:CloudWatch API経由でエージェントレスに監視する方法
  2. Zabbix Agentによる監視:監視対象にエージェントをインストールし、OSレベルの詳細なメトリクスを取得する方法

Zabbixを活用したクラウド環境の監視方法について、NTT東日本のエンジニアがご相談にお応えしますので、お気軽にご連絡ください!

NTT東日本のクラウド事業をご紹介!登録不要・無料公開中、詳細はこちら

Zabbix環境の展開

本コラムで使用するZabbixや監視対象となるEC2インスタンスなどはCloudFormationテンプレートとして定義しています。

CloudFormationで展開するZabbix環境:

CloudFormationテンプレートサンプル

検証環境を容易に再現できるよう、本コラムではCloudFormationテンプレートを用いて監視環境を一括構築します。テンプレートにはネットワーク環境(VPC・サブネット)に加え、Zabbix Serverと監視対象EC2インスタンスが含まれています。


AWSTemplateFormatVersion: 2010-09-09
Description: Zabbix sample template.

# ==============================================================================
# Parameters
# ==============================================================================
Parameters:
  AllowedCidr:
    Type: String
    Default: 0.0.0.0/0
    Description: CIDR block allowed to access Zabbix Web UI and SSH (restrict in production)
    AllowedPattern: ^(\d{1,3}\.){3}\d{1,3}/\d{1,2}$

  DBRootPassword:
    Type: String
    NoEcho: true
    MinLength: 8
    MaxLength: 41
    Description: MySQL root password
    AllowedPattern: ^[a-zA-Z0-9!@#$%^&*()_+=\-]*$

  DBZabbixPassword:
    Type: String
    NoEcho: true
    MinLength: 8
    MaxLength: 41
    Description: MySQL user password for Zabbix
    AllowedPattern: ^[a-zA-Z0-9!@#$%^&*()_+=\-]*$

# ==============================================================================
# Metadata
# ==============================================================================
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Network Settings
        Parameters:
          - AllowedCidr
      - Label:
          default: Database Settings
        Parameters:
          - DBRootPassword
          - DBZabbixPassword

# ==============================================================================
# Resources
# ==============================================================================
Resources:
  # ----------------------------------------------------------------------------
  # VPC
  # ----------------------------------------------------------------------------
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-vpc"

  # ----------------------------------------------------------------------------
  # Internet Gateway
  # ----------------------------------------------------------------------------
  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-igw"

  VPCGatewayAttachment:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      VpcId: !Ref VPC
      InternetGatewayId: !Ref InternetGateway

  # ----------------------------------------------------------------------------
  # Public Subnet
  # ----------------------------------------------------------------------------
  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.1.0/24
      MapPublicIpOnLaunch: true
      AvailabilityZone: !Select [0, !GetAZs ""]
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-public-subnet"

  # ----------------------------------------------------------------------------
  # Public Route Table
  # ----------------------------------------------------------------------------
  PublicRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-public-rt"

  PublicRoute:
    Type: AWS::EC2::Route
    DependsOn: VPCGatewayAttachment
    Properties:
      RouteTableId: !Ref PublicRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref InternetGateway

  PublicSubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PublicSubnet
      RouteTableId: !Ref PublicRouteTable

  # ----------------------------------------------------------------------------
  # NAT Gateway (Elastic IP + NAT GW)
  # ----------------------------------------------------------------------------
  NatGatewayEIP:
    Type: AWS::EC2::EIP
    DependsOn: VPCGatewayAttachment
    Properties:
      Domain: vpc
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-nat-eip"

  NatGateway:
    Type: AWS::EC2::NatGateway
    Properties:
      AllocationId: !GetAtt NatGatewayEIP.AllocationId
      SubnetId: !Ref PublicSubnet
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-nat-gw"

  # ----------------------------------------------------------------------------
  # Private Subnet
  # ----------------------------------------------------------------------------
  PrivateSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.2.0/24
      AvailabilityZone: !Select [0, !GetAZs ""]
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-private-subnet"

  # ----------------------------------------------------------------------------
  # Private Route Table
  # ----------------------------------------------------------------------------
  PrivateRouteTable:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-private-rt"

  PrivateRoute:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref PrivateRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref NatGateway

  PrivateSubnetRouteTableAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PrivateSubnet
      RouteTableId: !Ref PrivateRouteTable

  # ----------------------------------------------------------------------------
  # Security Group - Zabbix Server
  # ----------------------------------------------------------------------------
  ZabbixSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group for Zabbix Server
      VpcId: !Ref VPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: !Ref AllowedCidr
          Description: Zabbix Web UI (HTTP)
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-zabbix-sg"

  # ----------------------------------------------------------------------------
  # Security Group - Monitored Instance
  # ----------------------------------------------------------------------------
  MonitoredInstanceSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: Security group for monitored instances
      VpcId: !Ref VPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 10050
          ToPort: 10050
          SourceSecurityGroupId: !Ref ZabbixSecurityGroup
          Description: Allow Zabbix Server passive checks
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-monitored-sg"

  # ----------------------------------------------------------------------------
  # IAM Role - Zabbix
  # ----------------------------------------------------------------------------
  ZabbixInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub "${AWS::StackName}-zabbix-role"
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
      Policies:
        - PolicyName: !Sub "${AWS::StackName}-zabbix-monitoring-policy"
          PolicyDocument:
            Version: "2012-10-17"
            Statement:
              - Effect: Allow
                Action:
                  - cloudwatch:DescribeAlarms
                  - cloudwatch:GetMetricData
                  - cloudwatch:ListMetrics
                  - ec2:DescribeInstances
                  - ec2:DescribeRegions
                  - ec2:DescribeVolumes
                Resource: "*"
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-zabbix-role"

  ZabbixInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref ZabbixInstanceRole

  # ----------------------------------------------------------------------------
  # EC2 Instance
  # ----------------------------------------------------------------------------
  ZabbixInstance:
    Type: AWS::EC2::Instance
    DependsOn: VPCGatewayAttachment
    Properties:
      ImageId: "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64}}"
      InstanceType: t3.medium
      IamInstanceProfile: !Ref ZabbixInstanceProfile
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          DeviceIndex: "0"
          SubnetId: !Ref PublicSubnet
          GroupSet:
            - !Ref ZabbixSecurityGroup
      BlockDeviceMappings:
        - DeviceName: /dev/xvda
          Ebs:
            VolumeSize: 30
            VolumeType: gp3
            Encrypted: true
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-zabbix-server"
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -xe
          exec > >(tee /var/log/zabbix-install.log) 2>&1

          echo "=========================================="
          echo " Zabbix 8.0 LTS Installation Start"
          echo "=========================================="

          # ------------------------------------------------------------------
          # 0. Wait for any existing dnf/rpm lock to be released
          # ------------------------------------------------------------------
          echo "Waiting for dnf/rpm lock to be released..."
          while fuser /var/lib/rpm/.rpm.lock /var/cache/dnf/metadata_lock.pid 2>/dev/null; do
            echo "  Another process is using dnf/rpm. Waiting 5 seconds..."
            sleep 5
          done
          echo "Lock released. Proceeding with installation."

          # ------------------------------------------------------------------
          # 1. System Update
          # ------------------------------------------------------------------
          dnf update -y

          # ------------------------------------------------------------------
          # 2. Install MySQL 8.4 LTS
          # ------------------------------------------------------------------
          dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
          dnf install -y mysql-community-server mysql-community-client

          systemctl enable mysqld --now

          # Retrieve temporary root password generated by MySQL
          TEMP_PASSWORD=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')

          # Secure MySQL: set root password and remove defaults
          mysql --connect-expired-password -uroot -p"$TEMP_PASSWORD" <<EOF
          ALTER USER 'root'@'localhost' IDENTIFIED BY '${DBRootPassword}';
          DELETE FROM mysql.user WHERE User='';
          DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
          DROP DATABASE IF EXISTS test;
          DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
          FLUSH PRIVILEGES;
          EOF

          # ------------------------------------------------------------------
          # 3. Install Zabbix 8.0 Repository & Packages
          # ------------------------------------------------------------------
          rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/amazonlinux/2023/noarch/zabbix-release-latest-8.0.amzn2023.noarch.rpm
          dnf clean all
          dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-web-japanese

          # ------------------------------------------------------------------
          # 4. Create Zabbix Database & User
          # ------------------------------------------------------------------
          mysql -uroot -p'${DBRootPassword}' <<EOF
          CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
          CREATE USER 'zabbix'@'localhost' IDENTIFIED BY '${DBZabbixPassword}';
          GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
          SET GLOBAL log_bin_trust_function_creators = 1;
          FLUSH PRIVILEGES;
          EOF

          # ------------------------------------------------------------------
          # 5. Import Initial Schema & Data
          # ------------------------------------------------------------------
          zcat /usr/share/zabbix/sql-scripts/mysql/server.sql.gz | \
            mysql --default-character-set=utf8mb4 -uzabbix -p'${DBZabbixPassword}' zabbix

          # Disable log_bin_trust_function_creators after import
          mysql -uroot -p'${DBRootPassword}' -e "SET GLOBAL log_bin_trust_function_creators = 0;"

          # ------------------------------------------------------------------
          # 6. Configure Zabbix Server - DB Password
          # ------------------------------------------------------------------
          sed -i "s/^# DBPassword=.*/DBPassword=${DBZabbixPassword}/" /etc/zabbix/zabbix_server.conf

          # ------------------------------------------------------------------
          # 7. Start & Enable All Services
          # ------------------------------------------------------------------
          systemctl enable zabbix-server zabbix-agent httpd php-fpm --now

          # ------------------------------------------------------------------
          # 8. Installation Complete
          # ------------------------------------------------------------------
          echo "=========================================="
          echo " Zabbix 8.0 LTS Installation Complete!"
          echo "=========================================="

  # ----------------------------------------------------------------------------
  # IAM Role - Monitored Instance
  # ----------------------------------------------------------------------------
  MonitoredInstanceRole:
    Type: AWS::IAM::Role
    Properties:
      RoleName: !Sub "${AWS::StackName}-monitored-role"
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service: ec2.amazonaws.com
            Action: sts:AssumeRole
      ManagedPolicyArns:
        - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-monitored-role"

  MonitoredInstanceProfile:
    Type: AWS::IAM::InstanceProfile
    Properties:
      Roles:
        - !Ref MonitoredInstanceRole

  # ----------------------------------------------------------------------------
  # EC2 Instance - Monitored Target
  # ----------------------------------------------------------------------------
  MonitoredInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64}}"
      InstanceType: t3.micro
      IamInstanceProfile: !Ref MonitoredInstanceProfile
      SubnetId: !Ref PrivateSubnet
      SecurityGroupIds:
        - !Ref MonitoredInstanceSG
      Tags:
        - Key: Name
          Value: !Sub "${AWS::StackName}-monitored-instance"

# ==============================================================================
# Outputs
# ==============================================================================
Outputs:
  ZabbixWebUrl:
    Description: Zabbix Web UI URL
    Value: !Sub "http://${ZabbixInstance.PublicIp}/zabbix"

  ZabbixServerPrivateIp:
    Description: Private IP address of the Zabbix Server
    Value: !GetAtt ZabbixInstance.PrivateIp

  MonitoredInstanceId:
    Description: Instance ID of the monitored target
    Value: !Ref MonitoredInstance

  MonitoredInstancePrivateIp:
    Description: Private IP address of the monitored instance
    Value: !GetAtt MonitoredInstance.PrivateIp


CloudFormationスタックの展開手順

1. CloudFormationのマネジメントコンソールを開き、「スタックの作成」を押下

2. スタックの作成にて「テンプレートファイルのアップロード」を選択、「zabbix-sample.yaml」をアップロードし「次へ」を押下

3. スタックの詳細を指定にて以下入力し「次へ」を押下

項目 入力内容
スタック名 スタック名を入力
パラメータ / AllowedCidr 自身の環境のグローバルIPアドレスを入力
パラメータ / DBRootPassword DBのrootユーザのパスワードとして設定するものを入力
パラメータ / DBZabbixPassword DBのzabbixユーザのパスワードとして設定するものを入力

4. スタックオプションの設定にて最下部の「AWS CloudFormation によって IAM リソースがカスタム名で作成される場合があることを承認します。」のチェックボックスに同意し「次へ」を押下

5. 確認して作成にて、入力した内容に誤りがない事を確認し「送信」を押下

6. 作成したスタックのステータスが「CREATE_COMPLETE」になれば展開完了

Zabbix Webインターフェースの初期設定とログイン

1. CloudFormationスタックの展開が完了したら、作成したスタックの「出力」タブに記載された「ZabbixWebUrl」の値を押下しZabbix WebインターフェースへWebブラウザでアクセス

スタック展開後にzabbix-serverなどがインストールされるため、アクセスできるようになるまでに時間がかかります。

2. Webインターフェースが表示されたら「デフォルトの言語」を「日本語」にし「次のステップ」を押下

3. 前提条件のチェックにて、すべての条件が「OK」であること確認して「次のステップ」を押下

4. データベース接続設定にて、「パスワード」にCloudFormationスタック展開時に指定した「DBZabbixPassword」を入力し「次のステップ」を押下

5. 設定にて、以下入力し「次のステップ」を押下

項目 入力内容
Zabbixサーバー名 Webインターフェースに表示するZabbixサーバー名を入力
デフォルトのタイムゾーン Webインターフェースで使用するデフォルトのタイムゾーンを入力

6. 設定パラメータの確認にて、内容に問題ない事確認し「次のステップ」を押下

7. Webインターフェースのインストールが終了した旨表示されるので「完了」を押下

8. ログイン画面にて、以下入力し「サインイン」を押下

項目 入力内容
ユーザ名 Admin
パスワード zabbix

9. ダッシュボードが表示されればログイン完了

Zabbixを活用したクラウド環境の監視方法について、NTT東日本のエンジニアがご相談にお応えしますので、お気軽にご連絡ください!

AWSテンプレートを利用したEC2インスタンスの監視

概要

Zabbixには公式で「AWS by HTTP」テンプレートが同梱されています。

このテンプレートは監視対象のEC2インスタンスについてCloudWatch標準メトリクスを取得し、監視を行うものです。

この方式ではZabbix ServerがAWS APIを利用してCloudWatchメトリクスを定期的に取得します。そのためZabbix Serverと監視対象サーバーとの直接通信は不要である点がメリットです。

設定手順

マネジメントコンソールでの操作

展開したCloudFormationスタックの「出力」タブに記載された「MonitoredInstanceId」の値を確認

Zabbix Webインターフェースでの操作

1. 左ペインより「データ収集 > ホスト」を開き「ホストの作成」を押下

2. 新しいホストの作成のホストタブにて、以下を入力

項目 入力内容
ホスト名 monitored-instance-by-aws-template
テンプレート AWS EC2 by HTTP
ホストグループ Linux servers

3. 新しいホストの作成のマクロタブにて、以下を入力し「追加」を押下

項目 入力内容
{$AWS.AUTH_TYPE} role_base
{$AWS.EC2.INSTANCE.ID} 確認したMonitoredInstanceId
{$AWS.REGION} CloudFormationスタックを展開したリージョンを入力

4. ホスト追加に成功すれば完了

監視状況の確認

追加したホストが正常に監視できているかは各種メトリックが取得できているかで確認します。

1. 左ペインより「監視データ > ホスト」を開き「monitored-instance-by-aws-template」行の「グラフ」を押下

2. 遷移先の画面にて、各メトリックのグラフが表示されていることが確認できればOK

監視できる内容

テンプレート「AWS EC2 by HTTP」で監視できる内容は以下です。

  • CPU Utilization / CPU Credit
  • EBS Read bytes / EBS Write bytes
  • Network Bytes In / Network Bytes Out
  • Status Check failed instance / Status Check failed system
  • DiskReadOps / DiskWriteOps
  • etc…

詳細は以下ドキュメントをご確認ください。

https://www.zabbix.com/integrations/aws#:~:text=aws.backup_vault.discovery-,AWS EC2 by HTTP,-Overview

Zabbixを活用したクラウド環境の監視方法について、NTT東日本のエンジニアがご相談にお応えしますので、お気軽にご連絡ください!

Zabbix Agentを利用したEC2インスタンスの監視

Zabbix Agentを監視対象にインストールし、エージェント経由で各種メトリクスを取得して監視を行う方法です。

最短1秒間隔でのメトリクス取得が可能でリアルタイム性が高く、メモリ使用率やログ、プロセス監視など、テンプレート「AWS EC2 by HTTP」のCloudWatch標準メトリクスでは取得できない多様な監視を実現できます。

一方で、監視対象サーバーへのエージェント導入やポート開放が必要になるため、運用設計やセキュリティポリシーによっては慎重に検討する必要があります。

設定手順

マネジメントコンソールでの操作

1. 展開したCloudFormationスタックの「出力」タブに記載された「ZabbixServerPrivateIp」の値を確認

2. 展開したCloudFormationスタックの「リソース」タブにて「MonitoredInstance」の物理IDを押下

3. 遷移先の画面にて「zabbix-test-monitored-instance」にチェックを付け「接続」を押下

4. 遷移先の画面にて「SSM Session Manager」を選択して「接続」を押下

5. root権限に変更したうえで、Zabbix 8.0のリポジトリを追加しzabbix-agentをインストール


rpm -Uvh https://repo.zabbix.com/zabbix/8.0/release/amazonlinux/2023/noarch/zabbix-release-latest-8.0.amzn2023.noarch.rpm
dnf clean all
dnf install -y zabbix-agent

6. zabbix-agent.confを編集


sed -i 's/^Server=127.0.0.1/Server=<確認したZabbixServerPrivateIp>/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^ServerActive=127.0.0.1/ServerActive=<確認したZabbixServerPrivateIp>/' /etc/zabbix/zabbix_agentd.conf
sed -i 's/^Hostname=Zabbix server/Hostname=monitored-instance-by-zabbix-agent/' /etc/zabbix/zabbix_agentd.conf

<確認したZabbixServerPrivateIp>の置換を忘れないようにしてください

7. zabbix-agentを起動

systemctl enable zabbix-agent --now

Zabbix Webインターフェースでの操作

1. 展開したCloudFormationスタックの「出力」タブに記載された「MonitoredInstancePrivateIp」の値を確認

2. 左ペインより「データ収集 > ホスト」を開き「ホストの作成」を押下

3. 新しいホストの作成のホストタブにて、以下を入力し「追加」を押下

項目 入力内容
ホスト名 monitored-instance-by-zabbix-agent
テンプレート Linux by Zabbix agent
ホストグループ Linux servers
インターフェース タイプ:エージェント
IPアドレス:確認したMonitoredInstancePrivateIp

4. ホスト追加に成功すれば完了

監視状況の確認

追加したホストが正常に監視できているかは各種メトリックが取得できているかで確認します。

1. 左ペインより「監視データ > ホスト」を開き「monitored-instance-by-zabbix-agent」行の「グラフ」を押下

2. 遷移先の画面にて、各メトリックのグラフが表示されていることが確認できればOK

監視できる内容

Zabbix Agentで監視できる主な内容は以下です。

  • Zabbix agent ping
  • CPU使用率
  • メモリ使用率、空き容量
  • ディスク使用率、I/O
  • ネットワークトラフィック
  • 稼働中のプロセス数、ロードアベレージ
  • ログファイルやプロセス
  • etc…

Zabbixを活用したクラウド環境の監視方法について、NTT東日本のエンジニアがご相談にお応えしますので、お気軽にご連絡ください!

さいごに

本コラムではZabbixを使用し、「AWS テンプレート(CloudWatch API経由)」と「Zabbix Agent」の2つの方法でEC2インスタンスを監視する方法をご紹介しました。

それぞれの監視方式には以下のような違いがあります。

観点 AWSテンプレート Zabbix Agent
導入の手軽さ エージェント不要で簡単 インストール・設定が必要
取得頻度 CloudWatchメトリクスを利用
(Zabbixでは5分間隔)
秒単位~分単位で柔軟に設定可能
コスト CloudWatch API呼び出し課金あり 追加コストなし
ユースケース 多数のインスタンスを俯瞰的に監視 重要なサーバーを深く監視

Zabbixは監視テンプレートを組み合わせたり、カスタマイズすることが可能です。

AWS環境を手軽に監視したい場合は「AWS EC2 by HTTP」、OS内部の詳細な状態やアプリケーション監視まで行いたい場合は「Zabbix Agent」が適しています。実際の運用では、両者を組み合わせることでクラウド基盤からOSレイヤまで幅広い監視を実現できます。

また、Zabbixはバージョンを重ねるごとに機能が強化されており、今後もより柔軟な監視が実現できるようになっていくと思います。

本コラムが皆さまの監視基盤構築の一助となれば幸いです。

Zabbixを活用したクラウド環境の監視方法について、NTT東日本のエンジニアがご相談にお応えしますので、お気軽にご連絡ください!

Amazon Web Services(AWS)および記載するすべてのAmazonのサービス名は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。

ページ上部へ戻る

相談無料!プロが中立的にアドバイスいたします

クラウド・AWS・Azureでお困りの方はお気軽にご相談ください。