1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon Linux2023上のZabbixServer7.0LTSでちょっとハマった話

Posted at

はじめに

AWS上のEC2(Amazon Linux2023)上に、ZabbixServer7.0LTSを構築して運用しようとしたら、メディアタイプのEmailがエラーになって、ちょっとハマってしまいました。
試行錯誤の末、なんとか解決できたのでその対応内容をメモとして残します。

本題に入る前に

まずはAmazon Linux2023にZabbixServer7.0LTSをインストールする手順

MySQLのインストール

# dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm
# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
# dnf install -y mysql-community-server mysql-community-client mysql-community-devel

MySQLサーバの起動

# systemctl start mysqld
# systemctl enable mysqld

MySQLの初期パスワードの確認

# grep 'temporary password' /var/log/mysqld.log

MySQLは初回起動時に root ユーザーの一時パスワードを自動生成し、それは /var/log/mysqld.log に出力されるので、そのログの中から「temporary password(仮パスワード)」を含む行を検索して表示します

MySQLのrootパスワード変更

# mysql -u root -p
(ここで先ほど確認した一時パスワードを入力)
> ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';

Zabbixリポジトリのインストール

# rpm -Uvh https://repo.zabbix.com/zabbix/7.0/amazonlinux/2023/x86_64/zabbix-release-latest-7.0.amzn2023.noarch.rpm
# dnf clean all

Zabbixサーバとフロントエンドのインストール

# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
# dnf install zabbix-web-japanese

初期データベースの構築

# mysql -u root -p
新しいパスワード
mysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

”新しいパスワード”は、上記で設定したパスワードを入力

Zabbixサーバの初期スキーマのインポート

# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -u zabbix -p zabbix

log_bin_trust_function_creatorsオプションの無効化

# mysql -u root -p
新しいパスワード
mysql> set global log_bin_trust_function_creators = 0;
mysql> quit;

Zabbixサーバのデータベースを構成

/etc/zabbix/zabbix_server.conf の以下の部分を編集

DBPassword=password

Zabbixサーバ、エージェントの起動

# systemctl restart zabbix-server zabbix-agent httpd php-fpm
# systemctl enable zabbix-server zabbix-agent httpd php-fpm

ここまでで、Amazon Linux2023上にZabbixServer7.0LTSを構築することができました

本題:発生したトラブル

通常のZabbixServerと同じように色々な監視登録や、ダッシュボード作成は問題なくできていたのですが、異常を検知し、その内容をEmailで送付(トリガーで検知し、トリガーアクションのメディアタイプ(Email))しようとしたら

cURL library returned error when enabling SMTP/SMTPS: Unsupported protocol (using version 8.11.1)

というエラーが表示され、うまくEmailを送付できませんでした
SMTPなのにcURLのライブラリ??? と意味が理解できませんでした

結論(原因)

・ZabbixはEmail送信に libcurl を利用している
・Amazon Linux2023では、初期では libcurl-minimal という軽量版がインストールされており、これはSMTPなど一部プロトコルが省かれている

対策

軽量版の libcurl-minimal からフル機能版の libcurl に切り替える

事前確認

Zabbixがどの共有ライブラリに依存しているか、それがどのRPMパッケージに属しているかを確認

# ldd $(which zabbix_server) | grep curl
    libcurl.so.4 => /lib64/libcurl.so.4 (0x00007f808372c000)
# rpm -qf /lib64/libcurl.so.4
libcurl-minimal-8.11.1-4.amzn2023.0.1.x86_64

サポートしているプロトコルを確認

# curl --version
curl 8.11.1 (x86_64-amazon-linux-gnu) libcurl/8.11.1 OpenSSL/3.2.2 zlib/1.2.11 libidn2/2.3.2 libpsl/0.21.5 nghttp2/1.59.0
Release-Date: 2024-12-11
Protocols: file ftp ftps http https ipfs ipns
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz PSL SPNEGO SSL threadsafe UnixSockets

やはりSMTPはサポートしていない

libcurl-minimal → libcurlへの切り替え

# dnf install -y --allowerasing libcurl

※ dnf install -y libcurl だけだと、競合関係でエラーがでたので、 --allowerasing で上書きしました

確認

# rpm -qf /lib64/libcurl.so.4
libcurl-8.11.1-4.amzn2023.0.1.x86_64
# curl --version
curl 8.11.1 (x86_64-amazon-linux-gnu) libcurl/8.11.1 OpenSSL/3.2.2 zlib/1.2.11 brotli/1.0.9 libidn2/2.3.2 libpsl/0.21.5 libssh/0.10.6/openssl/zlib nghttp2/1.59.0 OpenLDAP/2.4.57
Release-Date: 2024-12-11
Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets

無事SMTPをサポートしたライブラリに変更でき、ZabbixからもEmailを送付できるようになりました

最後に

最初はメール送信なのにcURLのエラーが発生してしまい、かなり戸惑いました
エラーの意味するところは(今となっては)わかりやすかったのですが、
「SMTPをサポートしたcURLを /bin に置けば良いんでしょ」
と思い、
/usr/local/bin/curl に新たにインストールして、
/bin/curl を/bin/curl.bak にして/usr/local/bin/curl のリンクを /bin/curl に貼る
→ うまくいかない
みたいな試行錯誤を繰り返していました

ちゃんとエラーには”ライブラリが”って出てるのにね
エラーの内容をしっかりと理解してから対処方法を検討するようにしましょう(自戒)

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?