Zabbix server 5.4では、ZabbixAgent2が利用出来ます。
・TCP接続数の減少
・チェックの同時実行が容易
・プラグイン開発の敷居が低い。
などのメリットがあります。
zabbix agent2では、「Go言語」が使われていますので、「Go言語」のインストールが必要となります。
この記事は、zabbix 5.4 のソースインストールをベースにした覚え書きです。
zabbix agent では、「–enable-agent2」オプションで、ZabbixAgent2 をインストールすることが出来ます。
Go言語インストール
とりあえずインストールしたい方は、「Go言語、最新版インストール」に進んでください。
# tar xzvf zabbix-5.4.2.tar.gz # cd zabbix-5.4.2 # ./configure --enable-agent --enable-agent2 --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
↑「–enable-agent2」を指定します。
「-enable-agent」で「Agent」のみを構築します。
checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes (略) checking for the linux kernel version... unknown family (3.10.0-1127.13.1.el7.x86_64) checking size of void *... 8 checking for go... no configure: error: Unable to find "go" executable in path
↑「Go言語」が無いよ。というエラーが出てきます。
# yum info golang 読み込んだプラグイン:fastestmirror, langpacks Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast Determining fastest mirrors * base: ftp.tsukuba.wide.ad.jp * epel: ftp.iij.ad.jp * extras: ftp.tsukuba.wide.ad.jp * updates: packet04.centos.org 利用可能なパッケージ 名前 : golang アーキテクチャー : x86_64 バージョン : 1.15.5 リリース : 1.el7 容量 : 3.1 M リポジトリー : epel/x86_64 要約 : The Go Programming Language URL : http://golang.org/ ライセンス : BSD and Public Domain 説明 : The Go Programming Language.
↑yum で、1.15.5をインストールすることが出来ます。
# yum install golang 読み込んだプラグイン:fastestmirror, langpacks Loading mirror speeds from cached hostfile epel/x86_64/metalink | 8.4 kB 00:00:00 (略) インストール: golang.x86_64 0:1.15.5-1.el7 依存性関連をインストールしました: golang-bin.x86_64 0:1.15.5-1.el7 golang-src.noarch 0:1.15.5-1.el7 mercurial.x86_64 0:2.6.2-11.el7 完了しました!
# go version go version go1.15.5 linux/amd64
↑「Go言語」がインストール出来ました。
# ./configure --enable-agent --enable-agent2 --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes (略) Enable agent 2: yes Enable web service: no Enable Java gateway: no LDAP support: no IPv6 support: yes *********************************************************** * Now run 'make install' * * * * Thank you for using Zabbix! * * <http://www.zabbix.com> * ***********************************************************
↑configureが通りました。
# make (略) usr/local/etc/zabbix_agent2.conf -X main.applicationName=zabbix_agent2" -o bin zabbix.com/cmd/zabbix_agent2 go: github.com/jackc/pgx/v4@v4.8.2-0.20200910143026-040df1ccef85 requires github.com/jackc/pgconn@v1.6.5-0.20200905181414-0d4f029683fc requires github.com/jackc/pgmock@v0.0.0-20190831213851-13a1b77aafa2 requires github.com/jackc/pgtype@v0.0.0-20190828014616-a8802b16cc59 requires github.com/jackc/pgx/v4@v4.0.0-pre1.0.20190824185557-6972a5742186 requires github.com/coreos/go-systemd@v0.0.0-20190719114852-fd7a80b32e1f: invalid version: git fetch --unshallow -f origin in /root/go/pkg/mod/cache/vcs/1f60ff15ab3093bffd86f4a985673d120db13dabca39c597aaa5016031c601a6: exit status 128: fatal: git fetch-pack: expected shallow list make[2]: *** [zabbix.com/cmd/zabbix_agent2] エラー 1 make[2]: ディレクトリ `/root/zabbix-5.4.2/src/go' から出ます make[1]: *** [all-recursive] エラー 1 make[1]: ディレクトリ `/root/zabbix-5.4.2/src' から出ます make: *** [all-recursive] エラー 1
↑「fatal: git fetch-pack: expected shallow list」
と、エラーになります。
yum ではなく、本家のところからダウンロードしてインストールをします。
# yum remove golang 読み込んだプラグイン:fastestmirror, langpacks 依存性の解決をしています --> トランザクションの確認を実行しています。 ---> パッケージ golang.x86_64 0:1.15.5-1.el7 を 削除 --> 依存性の処理をしています: go = 1.15.5-1.el7 のパッケージ: golang-bin-1.15.5-1.el7.x86_64 --> トランザクションの確認を実行しています。 ---> パッケージ golang-bin.x86_64 0:1.15.5-1.el7 を 削除 --> 依存性解決を終了しました。 (略) 削除しました: golang.x86_64 0:1.15.5-1.el7 依存性の削除をしました: golang-bin.x86_64 0:1.15.5-1.el7 完了しました!
↑削除をしました。
Go言語、最新版インストール
# wget https://golang.org/dl/go1.16.6.linux-amd64.tar.gz --2021-XX-XX XX:XX:XX-- https://golang.org/dl/go1.16.6.linux-amd64.tar.gz (略) 2021-XX-XX XX:XX:XX (10.8 MB/s) - `go1.16.6.linux-amd64.tar.gz' へ保存完了 [129049323/129049323]
↑最新版をダウンロード
# tar -C /usr/local/ -xzf go1.16.6.linux-amd64.tar.gz
↑展開します。
# vi .bashrc export PATH=$PATH:/usr/local/go/bin
↑.bashrcにパスを設定します。
# source .bashrc
↑設定を読み込ませます。
# go version go version go1.16.6 linux/amd64
↑最新版が入りました。
ZabbixAgent2 インストール
# ./configure --enable-agent --enable-agent2 --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /usr/bin/mkdir -p checking for gawk... gawk checking whether make sets $(MAKE)... yes (略) Modules: /usr/local/lib/modules Enable agent 2: yes Enable web service: no Enable Java gateway: no LDAP support: no IPv6 support: yes *********************************************************** * Now run 'make install' * * * * Thank you for using Zabbix! * * <http://www.zabbix.com> * ***********************************************************
↑configureが通りました。
# make Making all in src make[1]: ディレクトリ `/root/zabbix-5.4.2/src' に入ります Making all in libs make[2]: ディレクトリ `/root/zabbix-5.4.2/src/libs' に入ります Making all in zbxcrypto (略) make[1]: ディレクトリ `/root/zabbix-5.4.2/database' から出ます Making all in man make[1]: ディレクトリ `/root/zabbix-5.4.2/man' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/root/zabbix-5.4.2/man' から出ます Making all in misc make[1]: ディレクトリ `/root/zabbix-5.4.2/misc' に入ります make[1]: `all' に対して行うべき事はありません. make[1]: ディレクトリ `/root/zabbix-5.4.2/misc' から出ます make[1]: ディレクトリ `/root/zabbix-5.4.2' に入ります make[1]: `all-am' に対して行うべき事はありません. make[1]: ディレクトリ `/root/zabbix-5.4.2' から出ます
↑ make が成功しました
# make install
↑インストールをします。
ZabbixAgent2起動スクリプト
# vi /usr/lib/systemd/system/zabbix-agent2.service [Unit] Description=Zabbix Agent 2 After=syslog.target After=network.target [Service] Environment="CONFFILE=/usr/local/etc/zabbix_agent2.conf" EnvironmentFile=-/etc/sysconfig/zabbix-agent2 Type=simple Restart=on-failure PIDFile=/tmp/zabbix_agent2.pid KillMode=control-group ExecStart=/usr/local/sbin/zabbix_agent2 -c $CONFFILE ExecStop=/bin/kill -SIGTERM $MAINPID RestartSec=10s User=zabbix Group=zabbix [Install] WantedBy=multi-user.target
↑スタートスクリプトを作成します。
ZabbixAgent2 設定
/usr/local/etc/zabbix_agent2.conf
を調整します。
(zabbix_agentd.conf と同じようにします)
ただし、
zabbix_agentd.conf.d
の、MySQL関係の設定ファイル、
userparameter_mysql.conf
は、読み込ませないようにします。(設定されていれば)
# LogFile=/tmp/zabbix_agent2.log ↓ LogFile=/tmp/zabbix_agent2.log Server=127.0.0.1 ↓ Server=XXX.XXX.XXX.XXX ServerActive=127.0.0.1 ↓ ServerActive=XXX.XXX.XXX.XXX Hostname=Zabbix server ↓ #Hostname=Zabbix server # HostnameItem=system.hostname ↓ HostnameItem=system.hostname
↑ 設定例です。
ZabbixAgent2 起動(切り替え)
# systemctl stop zabbix-agent # systemctl disable zabbix-agent
↑古いバージョンを止めます。
# systemctl start zabbix-agent2 # systemctl status zabbix-agent2 ● zabbix-agent2.service - Zabbix Agent 2 Loaded: loaded (/usr/lib/systemd/system/zabbix-agent2.service; disabled; vendor preset: disabled) Active: active (running) since 土 2021-XX-XX XX:XX:XX JST; XX ago Main PID: 25739 (zabbix_agent2) CGroup: /system.slice/zabbix-agent2.service └─25739 /usr/local/sbin/zabbix_agent2 -c /usr/local/etc/zabbix_agent2.conf systemd[1]: Started Zabbix Agent 2. zabbix_agent2[25739]: Starting Zabbix Agent 2 (5.4.2) zabbix_agent2[25739]: Zabbix Agent2 hostname: zabbix_agent2[25739]: Press Ctrl+C to exit.
↑新しい、ZabbixAgent2が起動しました。