CentOS7で動いているZabbix4.0をZabbix5.0にアップグレードしてついでにNginxで動かす

Posted by onodai.


Zabbix5.0がリリースされたのでやっていきましょう
なお今回のバージョンアップでは、新しいバージョンのZabbix Serverはアップグレード前の古いバージョンのZabbix Proxyからのデータを無視するため注意すること

  1. Zabbixの停止 データベースに新たな値が書き込まれないようZabbix Serverを停止する

    systemctl stop zabbix-server

    Zabbix Proxyも同様に停止する

    systemctl stop zabbix-proxy
  2. バックアップ用ディレクトリ作成

    mkdir /opt/zabbix-backup/
  3. データベースのバックアップ

    mysqldump -u {$USERNAME} -p -h {$HOSTNAME} {$DBNAME} > /opt/zabbix-backup/{$FILENAME}
  4. Zabbix関連ファイルのバックアップ 設定ファイル

    cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
    cp /etc/httpd/conf.d/zabbix.conf  /opt/zabbix-backup/

    PHPファイルとバイナリ

    cp -R /usr/share/zabbix/ /opt/zabbix-backup/
    cp -R /usr/share/doc/zabbix-* /opt/zabbix-backup/
  5. リポジトリの更新

    rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
  6. SCLリポジトリのインストール
    SCLとは:The Software Collections ( SCL ) Repository

    yum install centos-release-scl
    yum clean all
  7. /etc/yum.repos.d/zabbix.repoファイルを編集する
    [zabbix-frontend]セクションのenabled=0enabled=1に書き換える

    <snip>
    [zabbix-frontend]
    <snip>
    enabled=1
    <snip>
  8. 古いフロントエンドパッケージの削除

    yum remove zabbix-web-*
  9. 新しいフロントエンドパッケージをインストールする

    yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl zabbix-web-japanese
  10. /etc/opt/rh/rh-php72/php-fpm.d/zabbix.confファイルを編集する
    [zabbix]セクションのlisten.acl_users = apachelisten.acl_users = apache,nginxに書き換える

    [zabbix]
    <snip>
    listen.acl_users = apache,nginx
    <snip>

    [zabbix]セクションの; php_value[date.timezone] = Europe/Rigaをアンコメントしphp_value[date.timezone] = Asia/Tokyoに書き換える

    [zabbix]
    <snip>
    php_value[date.timezone] = Asia/Tokyo
    <snip>
  11. /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.confファイルを編集する
    serverディレクティブの# listen 80;# server_name example.com;をアンコメントしserver_nameを適切なものに書き換える

    server {
        listen          80;
        server_name     example.com;
    <snip>
  12. Zabbixコンポーネントのアップグレード

    yum update zabbix-*

    Zabbix Proxyをアップグレードする場合

    yum update zabbix-proxy-mysql
  13. Zabbixコンポーネントの起動

    systemctl start zabbix-server
    systemctl start zabbix-proxy
    systemctl restart zabbix-agent
  14. ログの確認
    起動時に以下のようなログが出力されデータベースがアップグレードされる

    18118:20200516:160931.619 Starting Zabbix Server. Zabbix 5.0.0 (revision 9665d62db0).
    18118:20200516:160931.619 ****** Enabled features ******
    18118:20200516:160931.619 SNMP monitoring:           YES
    18118:20200516:160931.619 IPMI monitoring:           YES
    18118:20200516:160931.619 Web monitoring:            YES
    18118:20200516:160931.619 VMware monitoring:         YES
    18118:20200516:160931.619 SMTP authentication:       YES
    18118:20200516:160931.619 ODBC:                      YES
    18118:20200516:160931.619 SSH support:               YES
    18118:20200516:160931.619 IPv6 support:              YES
    18118:20200516:160931.619 TLS support:               YES
    18118:20200516:160931.619 ******************************
    18118:20200516:160931.619 using configuration file: /etc/zabbix/zabbix_server.conf
    18118:20200516:160931.625 current database version (mandatory/optional): 04050130/04050130
    18118:20200516:160931.625 required mandatory version: 05000000
    18118:20200516:160931.625 starting automatic database upgrade
    18118:20200516:160931.630 completed 14% of database upgrade
    18118:20200516:160931.633 completed 28% of database upgrade
    18118:20200516:160931.635 completed 42% of database upgrade
    18118:20200516:160931.649 completed 57% of database upgrade
    18118:20200516:160931.652 completed 71% of database upgrade
    18118:20200516:160931.654 completed 85% of database upgrade
    18118:20200516:160931.655 completed 100% of database upgrade
    18118:20200516:160931.655 database upgrade fully completed

    ただし環境によっては以下のようなエラーが出力されるため次に挙げる対処が必要
    詳しくはエラーメッセージでググってください

    16565:20200516:155028.966 [Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs [alter table `media_type` add `event_menu_name` varchar(255) default '' not null]
    16565:20200516:155028.967 database upgrade failed
    18020:20200516:160848.023 [Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs [alter table `hosts` add `discover` integer default '0' not null]
    18020:20200516:160848.023 database upgrade failed

    MariaDBに接続しエラーが出ているテーブル(今回であればmedia_typehosts)のROW_FORMATDYNAMICに変更しZabbix Serverを起動

    mysql -uroot -p
    Enter password:
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 21
    Server version: 10.3.23-MariaDB MariaDB Server
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    MariaDB [(none)]> use zabbix;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    Database changed
    MariaDB [zabbix]> alter table media_type row_format=dynamic
    -> ;
    Query OK, 0 rows affected (0.009 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    MariaDB [zabbix]> alter table hosts row_format=dynamic
    -> ;
    Query OK, 0 rows affected (0.031 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    MariaDB [zabbix]> quit
    Bye
  15. httpdの停止

    systemctl stop httpd
  16. Nginxとphp-fpmの起動

    systemctl start rh-nginx116-nginx rh-php72-php-fpm
    systemctl enable rh-nginx116-nginx rh-php72-php-fpm
  17. おまけ:Zabbix Agent2をインストール
    yum install zabbix-agent2
comments powered by Disqus