3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Zabbixログ監視/SNMPトラップ監視データのKafkaへの転送

Last updated at Posted at 2024-08-28

概要

以下の記事を参考に、Zabbixで取得したログ監視/SNMPトラップのデータをKafkaに転送する検証を実施した際の手順をまとめました。

環境

基本的な環境構成は参考記事の内容と同様ですが、
Zabbixでログ監視、SNMPトラップ監視を実施するため、以下の追加設定が必要となります。

  • ログ監視
    Zabbixでログ監視を実施するために、監視対象ノードへZabbixエージェントをインストールする必要があります。
    またZabbixエージェント⇒Zabbixサーバへ通信を行うための通信許可設定が必要です。

  • SNMPトラップ監視
    SNMPトラップの場合、SNMPポーリングとは逆にSNMPエージェントからZabbixサーバのUDP 162 Portへデータが送信されるため、サーバ側でデータを受信する仕組みが必要です。
    今回の構成では、ZabbixサーバをDockerコンテナで構築しているため、別途SNMPトラップを受信するためのコンテナを起動します。

infra_config.jpg

手順

参考記事 範囲内の構築作業は実施済みの想定で、
ログ監視/SNMPトラップ監視データ連携を行うための追加設定手順を記載していきます。

ログ監視

1. Zabbixエージェント通信許可設定

Zabbixでログ監視を実施する場合、ZabbixエージェントからZabbixサーバへアクティブチェックと呼ばれる通信を行うため、
Zabbixサーバ側にZabbixエージェントからの通信許可設定をします。

まずdocker psコマンドでZabbixサーバ側の待受けポートを確認します。

CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS                    PORTS                                                                            NAMES
8b5ee7314b4b   zabbix/zabbix-server-mysql:ubuntu-7.0-latest      "/usr/bin/docker-ent…"   53 minutes ago   Up 53 minutes             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp                                    zabbix-docker-zabbix-server-1
83e930d56a53   zabbix/zabbix-web-nginx-mysql:ubuntu-7.0-latest   "docker-entrypoint.sh"   53 minutes ago   Up 53 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   zabbix-docker-zabbix-web-nginx-mysql-1
aaaaa896dcbe   mysql:8.0-oracle                                  "docker-entrypoint.s…"   53 minutes ago   Up 53 minutes                                                                                              zabbix-docker-mysql-server-1

確認したポートへの通信許可設定をZabbixノードのインバウンドルールに追加します。
add_inbound_rule_tcp_10051.jpg

2. Zabbixエージェントインストール

以下のサイトにアクセスし、今回Zabbixエージェントをインストールする環境に合わせた要件を選択します。

choose_zabbix_agent_platform.jpg

表示された手順に基づいて、Zabbixエージェントをインストールします。

$ sudo wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
$ sudo dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb
$ sudo apt update
$ sudo apt install zabbix-agent

インストールが完了したら、/etc/zabbix/zabbix_agentd.confにログ監視を行うための設定をします。

zabbix_agentd.conf 設定項目
# A list of comma-delimited IP addresses, optionally in CIDR notation, or DNS names of Zabbix servers and Zabbix proxies.
Server=<ZabbixノードのIPアドレス>

# The Zabbix server/proxy address or cluster configuration to get active checks from.
ServerActive=<ZabbixノードのIPアドレス>:<zabbix-serverコンテナの待受けポート番号>

# An optional parameter that defines the hostname.
Hostname=任意(Zabbixサーバ側で定義するhostの[Host name]と一致するよう設定する)

変更した設定を反映するため、zabbix-agentサービスを再起動します。

$ sudo systemctl restart zabbix-agent

3. Zabbix ログ監視設定

監視対象ノードへのZabbixエージェントのインストールが完了したら、ZabbixのWebUIへログインし、ログ監視設定を追加します。

はじめにログ監視用hostを追加します。
WebUI画面ログイン後、左ペインのData Collection > Hostsを選択し、host一覧画面右上のCreate hostボタンをクリックします。

host作成画面が表示されたら、以下のように設定しAddボタンをクリックします。
create_logmon_host.jpg

  • Host name:任意(Zabbixエージェント側の[Hostname]設定と一致する値を設定する)
  • Host groups:任意
  • Interfaces:Type:Agent
  • Interfaces:IP address:監視対象ノードのIPアドレス
  • Interfaces:Port:10050

hostの作成が完了したら、ログ監視用itemを作成します。
作成hostのitemsをクリックしてitem一覧画面を開き、Create itemボタンをクリックします。

item作成画面が表示されたら、以下のように設定しAddボタンをクリックします。
create_logmon_item01.jpg
create_logmon_item02.jpg

  • Itemタブ
    • Name:任意
    • Type:Zabbix agent (active)
    • Key:log[監視対象ログファイルパス]
    • Type of information:Log
  • Tagsタブ
    • Name/Value:任意(他itemと重複しないよう設定)

ログ監視用itemに設定したTagは、Kafkaへ連携するデータのフィルタリングに使用します。
Zabbix WebUI画面の左ペインからAdministration > General > Connectorsを選択し、表示されたConnector一覧からKafka連携用のConnectorをクリックします。
Connector設定画面が表示されたら、以下のように設定を追加しUpdateボタンをクリックします。
update_kafka_connector01.jpg

  • Tag filter
    • Tag:ログ監視用itemに設定したTagのName
    • operator:Equals
    • value:ログ監視用itemに設定したTagのValue

4.ログ監視データ転送確認

KafkaノードでKafka Brokerコンテナにログインし、ログ監視データが転送されていることを確認します。

$ docker exec -it kafka_broker-kafka-1 /bin/bash

$ /opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic items

監視対象ノードでテスト用のログを出力します。

$ echo "`date '+%Y/%m/%d %H:%M:%S'` test log" > <監視対象ログファイルパス>

ログ監視設定、データ連携設定に問題がなければ、Kafka Brokerコンテナ側で以下のような監視データが転送されていることを確認できます。

{"clock":1724746102,"eventid":0,"groups":["test"],"host":{"host":"test_logmon_node","name":"test_logmon_node"},"item_tags":[{"tag":"test","value":"z2ktest_logMonitoring"}],"itemid":47302,"name":"logMonitoring","ns":359525138,"severity":0,"source":"","timestamp":0,"type":2,"value":"2024/08/27 08:07:25 test log"}

SNMPトラップ監視

1. zabbix-snmptrapsコンテナ起動

zabbix-snmptrapsコンテナを起動するため、参考記事内でZabbixコンテナ構築に利用したマニフェストdocker-compose_v3_ubuntu_mysql_latest.yamlを使用します。
ファイル内容を確認すると、zabbix-snmptrapsのサービス定義が記載されています。

docker-compose_v3_ubuntu_mysql_latest.yaml 抜粋
~~~抜粋~~~
 zabbix-snmptraps:
  extends:
   file: compose_zabbix_components.yaml
   service: snmptraps
  image: "${ZABBIX_SNMPTRAPS_IMAGE}:${ZABBIX_UBUNTU_IMAGE_TAG}${ZABBIX_IMAGE_TAG_POSTFIX}"
  labels:
   com.zabbix.os: "${UBUNTU_OS_TAG}"
~~~抜粋~~~

docker composeコマンドの引数にサービス名を指定し、zabbix-snmptrapsコンテナを起動します。

$ docker compose -f ./docker-compose_v3_ubuntu_mysql_latest.yaml up -d zabbix-snmptraps

docker compose psコマンドでzabbix-snmptrapsコンテナが起動していることを確認します。

NAME                                     IMAGE                                             COMMAND                  SERVICE                  CREATED          STATUS                 PORTS
zabbix-docker-mysql-server-1             mysql:8.0-oracle                                  "docker-entrypoint.s…"   mysql-server             2 hours ago      Up 2 hours
zabbix-docker-zabbix-server-1            zabbix/zabbix-server-mysql:ubuntu-7.0-latest      "/usr/bin/docker-ent…"   zabbix-server            2 hours ago      Up 2 hours             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp
zabbix-docker-zabbix-snmptraps-1         zabbix/zabbix-snmptraps:ubuntu-7.0-latest         "/usr/sbin/snmptrapd…"   zabbix-snmptraps         15 seconds ago   Up 13 seconds          0.0.0.0:162->1162/udp, :::162->1162/udp
zabbix-docker-zabbix-web-nginx-mysql-1   zabbix/zabbix-web-nginx-mysql:ubuntu-7.0-latest   "docker-entrypoint.sh"   zabbix-web-nginx-mysql   2 hours ago      Up 2 hours (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp

2. SNMPトラップ通信許可設定

Zabbixサーバ側でUDP 162 Portへの通信を受け付けられるように、Zabbixノードのインバウンドルールに通信許可設定を追加します。
add_inbound_rule_udp_162.jpg

3. SNMPトラップ監視設定

ZabbixのWebUIへログインし、SNMPトラップ監視設定を追加します。

WebUI画面ログイン後、左ペインのData Collection > Hostsを選択し、表示されたhost一覧画面から参考記事 内で作成したSNMP監視用hostのitemsをクリックします。

item一覧画面でCreate itemボタンをクリックし、
item作成画面が表示されたら、以下のように設定しAddボタンをクリックします。
create_snmptrap_item01.jpg
create_snmptrap_item02.jpg

  • Itemタブ
    • Name:任意
    • Type:SNMP trap
    • Key:snmptrap.fallback
    • Type of information:Log
  • Tagsタブ
    • Name/Value:任意(他itemと重複しないよう設定)

SNMPトラップ監視用itemの作成に成功したら、itemに設定したTagをKafka連携用ConnectorのTag filterに設定します。
Zabbix WebUI画面の左ペインからAdministration > General > Connectorsを選択し、表示されたConnector一覧からKafka連携用のConnectorをクリックします。
Connector設定画面が表示されたら、以下のように設定を追加しUpdateボタンをクリックします。
update_kafka_connector02.jpg

  • Tag filter
    • Tag:SNMPトラップ監視用itemに設定したTagのName
    • operator:Equals
    • value:ログ監視用itemに設定したTagのValue

4. SNMPトラップ監視データ連携確認

KafkaノードでKafka Brokerコンテナにログインし、SNMPトラップ監視データが連携されていることを確認します。

$ docker exec -it kafka_broker-kafka-1 /bin/bash

$ /opt/bitnami/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic items

監視対象ノードからテスト用のSNMPトラップを送信します。

$ sudo snmptrap -v2c -c <コミュニティ名> <ZabbixノードのIPアドレス> '' .1.3.6.1.4.1.311.1.1.3.1.2 .1.3.6.1.4.1.311.1.1.3.1.2 s "test trap"

SNMPトラップ監視設定、データ連携設定に問題がなければ、Kafka Brokerコンテナ側で以下のような監視データが転送されていることを確認できます。

{"clock":1724747610,"eventid":0,"groups":["test"],"host":{"host":"test_snmp_node","name":"test_snmp_node"},"item_tags":[{"tag":"test","value":"z2ktest_snmpTrap"}],"itemid":47303,"name":"snmpTrap","ns":872007152,"severity":0,"source":"","timestamp":0,"type":2,"value":"2024-08-27T08:33:29+0000 UDP: [34.214.124.230]:46416-\u003e[172.16.238.4]:1162\nDISMAN-EVENT-MIB::sysUpTimeInstance = 933161\nSNMPv2-MIB::snmpTrapOID.0 = SNMPv2-SMI::enterprises.311.1.1.3.1.2\nSNMPv2-SMI::enterprises.311.1.1.3.1.2 = \"test trap\""}

参考

https://qiita.com/ktaka1104/items/bd178a4eebfa7b07e40a
https://www.zabbix.com/download
https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/log_items
https://www.zabbix.com/documentation/current/en/manual/config/items/itemtypes/snmptrap
https://hub.docker.com/r/zabbix/zabbix-snmptraps/
https://github.com/zabbix/zabbix-docker

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?