Zabbix3.4 PostgreSQLとElasticsearch 6.3のデータ連携


こちらを参考に、Zabbix内のPostgreSQLデータをLogstash経由でElasticsearchに格納し、Kibanaでの可視化まで実施した手順を纏めます。

なおこの記事は、Zabbix/PostgreSQL、Elasticsearchをインストール済みの環境での実施手順です。
前提となる環境の構築情報は、記事の最後に必要順にまとめて載せています。

実行環境は次の通りです。

・CentOS 7.5
・Zabbix 3.4
・PostgreSQL 9.2.23
・Elasticsearch 6.3.2
・Kibana 6.3.2
・Logstash 6.3.2

Logstashのインストール

様々なデータソースからのデータ収集エンジンであるLogstashをインストール
こちらを参考に、PGP keyのインポートとElasticsearch の yum リポジトリを登録する

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
# vi /etc/yum.repos.d/logstash.repo
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Logstashのインストールとサービスの起動

# yum -y install logstash
# systemctl start logstash.service
# systemctl enable logstash.service

Logstash Plugin等、JDBC接続環境の準備

LogstashのJDBC接続用 Plugin logstash-input-jdbc Input Pluginをインストール

# /usr/share/logstash/bin/logstash-plugin install logstash-input-jdbc

PostgreSQL用のJDBCドライバを、Elasticsearchサーバ(アクセス側)にインストール

# yum -y install postgresql-jdbc
# find / -name postgre*.jar

PostgreSQLから収集するデータ内容

Zabbix内のPostgreSQL DBには2種類の時系列データ、trends(1年分データ)とhistory(1週間分データ)がある。今回はtrendsテーブルとitemテーブル(データ情報)を参照する。例ではlogstash.confという名前で作成する。

# vi /usr/share/logstash/bin/logstash.conf
input {
  jdbc {
    jdbc_driver_library => "/usr/share/java/postgresql-jdbc.jar" (jarファイル格納先)
    jdbc_driver_class => "org.postgresql.Driver"
    jdbc_connection_string => "jdbc:postgresql://Zabbix Server IP:5432/zabbix"
    jdbc_user => "zabbix"  (zabbixユーザ)
    jdbc_password => "zabbix"
    statement => "select itemid, items.name, items.hostid, to_timestamp(trends.clock), trends.num, trends.value_min, trends.value_avg, trends.value_max from trends JOIN items using (itemid)"
  }
}

output {
  elasticsearch {
    hosts => "localhost:9200"
    index => "trends"
  }
}

Elasticsearchへのデータ取り込み

# /usr/share/logstash/bin/logstash -f /usr/share/logstash/bin/logstash.conf --path.settings /etc/logstash

KibanaでのIndexの確認

[Management] > [Create Index Pattern]をクリックしindex patternに[trends]を入力し、trendsインデックスを確認

[Discover]にてレコードの参照

関連記事
Zabbix3.4 PostgreSQL版をCentOS7にインストールする
Zabbix3.4 監視対象の設定
CentOS7へのElasticsearch6.3 のインストール
PostgreSQL9.x 外部ホストからの接続設定