DUICUO

Zabbix 6シリーズ学習:コンパイルによるインストール

パート1この記事では、ソースコードコンパイルによるZabbixアプライアンスのインストール方法について説明します。Zabbixのソースコード全体ではなく、部分的なインストール方法のみを取り上げます。

この記事の環境

  • CentOS 7 2009

ファイアウォールとSELinuxを無効にする

 systemctl stop firwalld && systemctl disable firewalld
強制0を設定する

SELinux を永続的に無効にするには、サーバーを再起動する必要があります。

 sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
リブート

必要なソフトウェアをインストールし、システムを最新バージョンに更新します。

 yum -y インストール tar vim wget
yum アップデート -y

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

 cd /tmp
https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.12.tar.gz を実行します。

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

 tar -zxvf zabbix-6.0.12.tar.gz

データベースセクション

バージョン 6.0 では MySQL 8.0 以上が必要ですが、デフォルトのバージョンは MySQL 5.6 であるため、MySQL 8.0 の yum リポジトリ ファイルをインストールする必要があります。

 yum -y で https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm をインストールします

データベースをインストールします。

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

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

 systemctl で mysqld を起動し、 systemctl で mysqld を有効にします。

データベースのパスワードを取得します。

 /etc/var/mysqld.log を cat します。

パスワードは0fs!KjAe1dMmです

データベースを初期化します。

 mysql_secure_installation

この手順ではパスワードの変更のみが必要です。残りの手順では Enter キーを押すだけです。

残りは Enter キーを押します。

新しいパスワードでログインしてテストします (独自のパスワードを設定してください。以下のパスワードはこの記事でのみ使用されます)。

 mysql -uroot -pHuawei@123!

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

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

Zabbix ディレクトリを作成します。

 mkdir -p /app/zabbix

コンパイラソフトウェア。

 cd /tmp/zabbix-6.0.12
  • プレフィックスはインストールディレクトリを指定します。
  • enable-server は Zabbix Server を有効にします。
  • enable-agent2 は Zabbix エージェント 2 を有効にします。
  • With-mysql はバックエンド データベースを MySQL として指定します。
  • net-snmp は SNMP プロトコルをサポートします。

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

 ./configure --prefix=/app/zabbix --enable-server --enable-agent2 --with-mysql --with-net-snmp

エラー 1: C 言語環境の問題。

解決。

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

エラー 2: MySQL ライブラリ ファイルが見つかりません。

解決。

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

エラー 03、net-snmp の問題。

解決。

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

エラー 03、libevent エラー。

解決。

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

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

解決。

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

コンパイルが完了しました。

インストール。

インストールする

コンパイルとインストールが完了しました


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

 /アプリ/ザビックス
├── ビン
│ └── zabbix_js
├──など
│ ├── zabbix_agent2.conf
│ ├── zabbix_agent2.d
│ │ └── plugins.d
│ │ ├── ceph.conf
│ │ ├── docker.conf
│ │ ├── memcached.conf
│ │ ├── modbus.conf
│ │ ├── mqtt.conf
│ │ ├── mysql.conf
│ │ ├── oracle.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 リポジトリのインストールが必要です。公式バージョンは現在、PHP 8.x をサポートしていません。

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

NGINXセクション

1. Nginx をインストールします。

 yum -y epel-release をインストール
yum -y nginx をインストール

2. フロントエンド ファイルを Zabbix ディレクトリに移動します。

 mv /tmp/zabbix-6.0.12/ui/ /app/zabbix
vim /etc/nginx/conf.d/zabbix.conf

3. Zabbix nginx 構成ファイルを変更します。

サーバー{
聞く80 ;
#サーバー名example.com ;

ルート/アプリ/ zabbix / ui ;

インデックスindex.php ;

場所= /favicon.ico {
log_not_foundオフ;
}

位置/ {
try_files $uri $uri / = 404 ;
}

場所/資産{
access_logオフ;
有効期限は10日間です。
}

場所~ / \ . ht {
すべて拒否;
}

場所~ / ( api \ /| conf [ ^ \ .] | include |ロケール|ベンダー) {
すべて拒否;
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 128 k ;
fastcgi_buffers 4 256 k ;
fastcgi_busy_buffers_size 256 k ;
fastcgi_temp_file_write_size 256 k ;
}
}

4. Nginx 構成ファイルを変更します。

 `vim` を使用してファイル `/etc/nginx/nginx.conf` を編集します。

すべてのポートをコメントアウトするだけです。

5. Nginx を起動します。

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

6. php-fpm を開きます。

 systemctl開始php - fpm && systemctl有効化php - fpm

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

IP アドレスに直接アクセスすると 502 エラーが発生しました。

Nginx ログを表示します。

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

ログを見ると、sockファイルが存在しないようです。実は簡単です。fastcgi_passunix:/run/php-fpm/zabbix.sockをfastcgi_pass 127.0.0.1:9000に変更してください。

 vim /etc/nginx/conf.d/zabbix.conf

Nginx サービスを再起動します。

 systemctl nginxを再起動します

これでアクセスできるようになりました。「次へ」をクリックするだけです。

環境チェックインターフェースとパッケージインストールインターフェースが完全に異なります。多くの依存関係と設定が変更されていないため、これは正常な動作です。警告メッセージに従って問題を解決してください。

依存関係のインストール。

 yum - yインストールphp - bcmath php - mbstring php - gd php - xml php - mysqlnd

PHP 設定ファイルを調整します。

 vim /etc/php.ini 

post_max_size を 16M に変更します (デフォルトは 8M)。

`max_excution_time` の時間が 300 に変更されました (以前は 30 でした)。

max_input_time の値が 300 に変更されました。以前は 60 でした。

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

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

次のステップ

データベース構成インターフェイスに入ったら、データベースを構成する必要があります。

データベース インスタンスとユーザーを作成します。

データベースzabbix文字セットutf8mb4照合utf8mb4_binを作成します
'Huawei@123!'識別されるユーザーzabbix @localhostを作成します
zabbixすべての権限をzabbix @localhost付与します
グローバルlog_bin_trust_function_creators = 1を設定します
やめる;

Zabbix に必要なデータ ファイルをインポートします。

 cat /tmp/zabbix-6.0.12/database/mysql/schema.sql|mysql--default-character-set=utf8mb4-uzabbix-p zabbix
cat /tmp/zabbix-6.0.12/database/mysql/images.sql|mysql--default-character-set=utf8mb4-uzabbix-p zabbix
cat /tmp/zabbix-6.0.12/database/mysql/data.sql|mysql--default-character-set=utf8mb4-uzabbix-p zabbix

ある時点で、Zabbix ユーザーのパスワードを入力する必要があります。

データベース インターフェイスにデータベース パスワード (Zabbix ユーザーの場合) を入力し、次の手順に進みます。

インターフェースでタイムゾーンとサービス名を変更したら、次の手順に進みます。

次のステップ。

この問題はディレクトリの権限によって発生します。

ディレクトリの所有者を apache に変更し、「戻る」をクリックしてから「次へ」をクリックします。

 chmod 755 /app/zabbix/ui -R

なぜ nginx ではないのか知っている人はいますか?

ZabbixはPHPアプリケーションです。Nginxはサービスとして実行されるphp-fpmを介してPHPスクリプトを実行します。そのため、php-fpmが書き込み操作時に使用するユーザーはNginxではないことが疑われます。

サービスを確認するには、「ps -ef | grep php-fpm」を使用します。

これでフロントエンドの設定は基本的に完了です。次のステップへ進みます。

ログイン画面。

管理者/zabbix

ホームページに入ります。

この時点ではフロントエンドには何も表示されませんが、フロントエンドへのアクセスは可能です。そのため、各コンポーネントを個別にデプロイできます。

Zabbixセクション

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

Zabbix サーバーデーモンファイルを作成します。

 vim /usr/lib/systemd/system/zabbix-server.service 
 [ユニット]
説明= Zabbixサーバー
= syslog.target
= network.target
= postgresql.service
= pgbouncer.service
After = postgresql - 13.サービス

[サービス]
環境= "CONFFILE=/app/zabbix/etc/zabbix_server.conf"
環境ファイル=-/ etc / sysconfig / zabbix -サーバー
タイプ=フォーク
再起動=オン-失敗
PIDファイル= / tmp / zabbix_server.pid
KillMode =コントロール-グループ
ExecStart =/ app / zabbix / sbin / zabbix_server - c $CONFFILE
ExecStop = / bin / kill -SIGTERM $MAINPID
再起動秒数= 10
タイムアウト秒= 0

[インストール]
WantedBy =マルチユーザー.ターゲット

Zabbix agent2 デーモン ファイルを作成します。

 vim /usr/lib/systemd/system/zabbix-agent2.service 
 [ユニット]
説明= Zabbixエージェント2
= syslog.target
= network.target

[サービス]
環境= "CONFFILE=/app/zabbix/etc/zabbix_agent2.conf"
環境ファイル=-/ etc / sysconfig / zabbix_agent2
タイプ=シンプル
再起動=オン-失敗
PIDファイル= /run/zabbix/zabbix_agent2.pid
KillMode =コントロール-グループ
ExecStart =/アプリ/ zabbix / sbin / zabbix_agent2 - c $CONFFILE
ExecStop = / bin / kill -SIGTERM $MAINPID
再起動秒数= 10
ユーザー= zabbix
グループ= zabbix

[インストール]
WantedBy =マルチユーザー.ターゲット

Zabbix 構成ファイルを変更します。

パッケージのインストールと同様に、データベース設定を変更する必要があります。

 vim / app / zabbix / etc / zabbix_server.conf

関連するコンポーネントを起動します。

 systemctl zabbixを再起動します-サーバーzabbix -エージェント2

ホームページが正常に戻りました。

ホストページ

最新データ

グラフィックは普通

付録

コンパイルおよびインストール中にパラメータが変更されていない場合、pidファイル、sockファイル、およびログはすべて/tmpディレクトリに保存されます。調整が必要な場合は、Zabbix設定ファイルを変更してください。

やっと

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