DUICUO

Zabbix ノート: ソースコードから 6.0 LTS をインストールする

オープンソースは実験の場であり、ソースコードのメリットとデメリットについては様々な意見があります。CentOS 8はサポート終了(EOL)を迎えましたが、CentOS 7はまだ少なくとも2年はサポートが残っているため、この記事を執筆しました。しかしながら、インストールがより簡単になるため、皆様がStream版やその他の代替ディストリビューションにできるだけ早く切り替えられることを願っています。本日の記事は比較的長く、初心者にはあまり適していません。また、コンパイル中に多くの問題が発生するため、ある程度の忍耐力が必要になるでしょう。

文章

この記事の環境

  • CentOS 7.9.2009
  • PHP 7.4
  • PostgreSQL 13
  • エングス1.20

初心者向けのヒント

初心者の方はファイアウォールとSELinuxを無効にすることをお勧めします。そうしないと予期しない問題が発生する可能性があります。経験豊富なユーザーはこれを無視できます。

 sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/ config
強制0を設定する
systemctl stop firewalld & & systemctl disable firewalld

推奨条件

`yum update -y` を使用してソフトウェアを更新することをお勧めします。

プリファンクションソフトウェアをインストールする

 yum -y インストール wget vim

データベースセクション

Zabbix 6.0 LTS では正式に PostgreSQL 13 が必要なため、PostgreSQL 13 のソースをインポートする必要があります。

 yum -y インストールhttps://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest .noarch.rpm
sed -i "s@https://download.postgresql.org/pub@https://mirrors.huaweicloud.com/postgresql@g" /etc/yum.repos.d/ pgdg-redhat-all .repo

PostgreSQLをインストールする

 yum -y postgresql13-server をインストールします

データベースを起動して初期化する

 /usr/ pgsql-13 /bin/ postgresql-13-setup initdb
systemctl でpostgresql-13 を有効にする
systemctl でpostgresql-13 を起動します。

ソースコードパッケージをダウンロード

 cd / tmp
https://cdn.zabbix.com/zabbix/sources/stable/6.0/ zabbix-6 .0.0.tar.gzをダウンロードしてください

ソフトウェアパッケージを解凍する

 tar -zxvf zabbix-6 .0.0.tar.gz

Zabbix ユーザーと Zabbix ユーザー グループを作成します。

 グループ追加 --システムZabbix
useradd --system -g zabbix -d /usr/lib/ zabbix -s /sbin/ nologin -c "Zabbix監視システム" zabbix

Zabbixインストールディレクトリを作成する

 mkdir -p /app/ zabbix

ソースコードパッケージを解凍する

 tar -zxvf zabbix-6 .0.0.tar.gz
mv zabbix-6 .0. 0 / アプリ

コンパイルを開始する

  • プレフィックスはインストールディレクトリを指定します
  • enable-server は Zabbix サーバーを有効にします
  • enable-agent2 は Zabbix エージェント2 を有効にします
  • PostgreSQL の場合は、データベースを PostgreSQL として指定し、パスを指定します。
  • net-snmp は SNMP プロトコルをサポートします。

実際には多くのパラメータがあります。`./configure --help` を参照して自分で調べることができます。

 ./ configure --prefix =/app/ zabbix --enable-server --enable-agent2 --with-postgresql =/usr/ pgsql-13 /bin/ pg_config --with-net-snmp

GCCの環境問題

 yum -y gcc-c++ をインストールします

PostgreSQLライブラリの問題

 yum -y postgresql13-devel をインストール

このパッケージをCentOS 7にインストールするとエラーが発生します。それぞれcentos-release-scl-rhとepel-releaseのインストールが必要です。エラーは以下の2つの画像に示されています。

centos-release-scl-rhリポジトリが必要です

epel-release ソースが必要です

 yum -y インストール centos-release-scl-rh epel-release

net-snmp ソースが見つからない問題

 yum -y インストール net-snmp-devel

libevent ソースがありません。

 yum -y libevent-devel をインストールします

Go 環境がありません (この問題は第 1 世代のエージェントでは発生しません)。

 yum -y golang をインストールします

上記の手順を実行すると、下の画像に示すようにコンパイルが完了します。

インストール

この記事は、agent2 がコンパイルされた環境を使用していることに注意してください。Agent2 は Go 環境を使用しており、一部のライブラリのダウンロードには Go が必要です。中国では Go 経由でのライブラリのダウンロードが不可能なため、プロキシを設定する必要があります。プロキシを設定しないと、下の画像に示す箇所で停止してしまいます。

Goプロキシを設定してインストールする

 go env -w GOPROXY=https://goproxy.cn、 直接
インストールする

インストールが完了しました。

全体的なインストールディレクトリ

 [ ルート@centos7-01 zabbix] # ツリー /app/zabbix/
/アプリ/ザビックス/
├─── ビン
zabbix_js
├─── など
zabbix_agent2.conf
zabbix_agent2.d
プラグイン.d
ceph.conf
docker.conf
memcached.conf
modbus.conf
mongodb.conf
mqtt.conf
mysql.conf
oracle.conf
postgres.conf
│ │ redis.conf
smart.conf
zabbix_agentd.conf
zabbix_agentd.conf. d
zabbix_server.conf
zabbix_server.conf.d
lib
モジュール
スビン
zabbix_agent2
zabbix_agentd
zabbix_server
└─ シェア

男8
zabbix_agent2. 8
zabbix_server.8
└─ ザビックス
アラートスクリプト
外部スクリプト

PHP環境

Zabbix 6.0 LTS には PHP バージョン 7.2.5 以上が必要であり、PHP 7.x をサポートするには Remi リポジトリがインストールされている必要があります。

 yum -y インストールhttps://rpms.remirepo.net/enterprise/ remi-release-7 . rpm
yum でyum-utilsをインストールします
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable remi-php74
yum -y php php-fpm をインストールします

nginxをインストールする

 yum -y nginx をインストール

Nginx の操作

Zabbix設定ファイルを作成する

まず、Zabbix フロントエンド ファイルを /app/zabbix に移動します。

 mv /app/ ui /app/ zabbix
vim /etc/nginx/conf.d/zabbix.conf

設定ファイルは次のとおりです

 サーバー{
80 を聞く;
# サーバー名 example.com;
ルート/app/zabbix/ui;
インデックスインデックス.php;
場所= /favicon.ico {
log_not_foundオフ;
}
位置/ {
try_files $uri $uri/ =404;
}
場所/ 資産{
access_logオフ;
10日で期限切れになります
}
場所~ / \ . ht {
すべてを否定する;
}
場所~ / (api\ / |conf [ ^\ .] |include |locale |vendor ) {
すべてを否定する;
404 を返します
}
場所~ [ ^ /] \ . php( / | $) {
fastcgi_pass unix:/run/ php-fpm /zabbix.sock;
fastcgi_split_path_info ^ ( .+ \ . php) ( /.+ ) $;
fastcgi_index インデックス.php ;
fastcgi_param DOCUMENT_ROOT /app/zabbix/ui;
fastcgi_param SCRIPT_FILENAME /app/zabbix/ui$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /app/zabbix/ui$fastcgi_script_name;
fastcgi_params をインクルードします
fastcgi_param QUERY_STRING $クエリ文字列;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errorsをオン;
fastcgi_ignore_client_abortをオフ;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k ;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}

設定ファイルの変更

 `vim` を使用して` /etc/nginx/ nginx.conf` ファイルを編集します
## 80 default_server をリッスンします。
## listen [::]:80 default_server;

nginx.confにコメントを追加する

zabbix.confのコメントを解除する

nginxを起動する

 systemctl nginxを有効にする
systemctl nginxを起動する

フロントエンドにアクセスする

フロントエンドに 502 エラーが表示されていますが、php-fpm が有効になっていないことが原因と思われます。

php-fpmを起動する

 systemctl でphp-fpmを有効にする
systemctl でphp-fpmを起動する

フロントエンドに再度アクセスする

エラーコードは依然として502です。

nginxログを表示する

ログにはソケット ファイルが見つからないことが示されているため、php-fpm 構成を作成する必要があります。

 テール -f /var/log/nginx/error.log 

Zabbix PHP設定ファイルを作成する

 vim /etc/ php-fpm .d/ zabbix.conf 
 [ザビックス]
ユーザー= Apache
グループ= Apache
listen = /run/ php-fpm /zabbix.sock
listen . acl_users = apache、 nginx
listen . allowed_clients = 127.0.0. 1
pm = ダイナミック
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200
php_value[session.save_handler] = ファイル
php_value[session.save_path] = /var/lib/php/ セッション
php_value[最大実行時間] = 300
php_value[メモリ制限] = 128M
php_value[投稿の最大サイズ] = 16M
php_value[アップロード最大ファイルサイズ] = 2M
php_value[最大入力時間] = 300
php_value[最大入力変数] = 10000

php-fpmサービスを再起動します

 systemctl php-fpmを再起動します。 

アクセスは正常です

フロントエンド部分

PHPの部分インストール

フロントエンド診断とエラー メッセージに基づいて、対応する PHP 拡張プラグインをインストールします。

 yum -y php-mbstring、 php-bcmath、 php-pgsql、 php-gd、 php-xmlをインストールします。 

LDAP が必要ない場合は、このセクションは無視できます。

関連サービスを再起動する

 systemctl php-fpm nginxを再起動します。

これで、データベース構成セクションに進むことができます。

データベース構成とインポート関連ファイル

ユーザーとデータベースを作成する

 sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix

データベース関連ファイルをインポートする

 cat /app/database/postgresql/schema.sql | sudo -u zabbix psql zabbix
cat /app/database/postgresql/images.sql | sudo -u zabbix psql zabbix
cat /app/database/postgresql/data.sql | sudo -u zabbix psql zabbix

インポート完了

PostgreSQL 権限ファイルを変更して、ローカル権限を MD5 認証に変更します。

データベースを再起動します

 systemctl でpostgresql-13 を再起動します。

フロントエンドデータベース構成

下の画像に示すように、アーキテクチャ セクションでは単に「public」と入力するだけでよいことに注意してください。

残りのフロントエンド構成

対応するタイムゾーンとインスタンス名を入力します。

下の画像のような問題が発生した場合、ディレクトリの権限に問題がある可能性が高いです。この問題を解決するには、ディレクトリの権限を変更するか、設定ファイルをダウンロードして指定されたディレクトリにコピーしてください。

デフォルトのユーザー名とパスワードはAdmin/zabbixです。

Zabbix サーバーが実行されていないため、フロントエンドには Zabbix サーバーが起動されていないことを示す警告メッセージが表示されます。

Zabbixの設定

  • プログラムファイルのパスは/app/zabbix/sbin/です。
  • 設定ファイルは/app/zabbix/etc/にあります。

Zabbix Serverデーモンの作成

 [ユニット]
説明= Zabbixサーバー
後= syslog.target
後= ネットワーク.ターゲット
後= postgresql.service
後= pgbouncer.service
後= postgresql-13 .service
[サービス]
環境 = "CONFFILE=/app/zabbix/etc/zabbix_server.conf"
環境ファイル= - /etc/sysconfig/ zabbix-server
タイプ= フォーク
再起動 = 失敗時
PIDファイル=/tmp/ zabbix_server.pid
KillMode= コントロールグループ
ExecStart=/app/zabbix/sbin/ zabbix_server -c $CONFFILE
ExecStop=/bin/ kill -SIGTERM $MAINPID
再起動秒数 = 10秒
タイムアウト秒 = 0
[インストール]
WantedBy= マルチユーザーターゲット

設定ファイルを編集する

 vim /app/zabbix/etc/zabbix_server.conf 

Zabbix Agent 2 デーモンファイルの作成

 [ユニット]
説明 = Zabbix エージェント2
後= syslog.target
後= ネットワーク.ターゲット
[サービス]
環境 = "CONFFILE=/app/zabbix/etc/zabbix_agent2.conf"
環境ファイル= - /etc/sysconfig/ zabbix_agent2
タイプ= シンプル
再起動 = 失敗時
PIDファイル=/run/zabbix/ zabbix_agent2.pid
KillMode= コントロールグループ
ExecStart=/app/zabbix/sbin/ zabbix_agent2 -c $CONFFILE
ExecStop=/bin/ kill -SIGTERM $MAINPID
再起動秒数 = 10秒
ユーザー= zabbix
グループ= zabbix
[インストール]
WantedBy= マルチユーザーターゲット

スタートアップコンポーネント

 systemctl でzabbix-server とzabbix-agent2を再起動します。 

最終効果

ホームページのサービスは正常です

グラフィックは普通

ダッシュボード

結論は

ここまで読んでいただきありがとうございました。かなり長い記事なので、完全にコンパイルするのはさらに大変です。もちろん、インターネットに全くアクセスできない方にとってはさらに大変でしょう。時間があれば、完全にオフラインでコンパイルしたバージョンを公開します。