zoukankan      html  css  js  c++  java
  • How to Install Zabbix 4 on CentOS 8 / RHEL 8

    Zabbix server is installable on any Linux distribution, but in this tutorial, I will show you how to install latest version of Zabbix Server (4.4 or 4.0) on CentOS 8 / RHEL 8.

    Zabbix is 100% free open-source ultimate enterprise-level software designed for monitoring availability and performance of IT infrastructure components. You can read a case-study about Zabbix popularity and find out more about open-source movement in this article.

    Enough of talk lets do some work! First, we will install and configure Zabbix server, then a database and lastly the frontend – check the picture above for a better understanding of Zabbix architecture.

    Contents

    • Step 1: Set SELinux to permissive mode
    • Step 2: Install Zabbix server, frontend, and agent
    • Step 3: Install and configure database
    • Step 4: Start Zabbix server and agent processes
    • Step 5: Configure firewall
    • Step 6: Configure Zabbix frontend
    • Step 7: Login to frontend using Zabbix default login credentials
    • Step 8: Create MySQL partitions on History and Events tables
    • Step 9: Optimizing Zabbix Server (optional)
    • Step 10: Optimizing MySQL database (optional)
    • Step 11: How to manage Zabbix / MySQL / Apache service

    Step 1: Set SELinux to permissive mode


    It is recommended to have SELinux in permissive mode unless you know how to fix its issues:

    setenforce 0 && sed -i ‘s/^SELINUX=.*/SELINUX=permissive/g’ /etc/selinux/config

    Step 2: Install Zabbix server, frontend, and agent


    To avoid error “nothing provides libssh2.so.1()(64bit) needed by zabbix-server-mysql” make sure that “libssh2” library is installed with command (ZBX-17081):

    dnf -y install http://mirror.centos.org/centos/8.0.1905/AppStream/x86_64/os/Packages/libssh2-1.8.0-8.module_el8.0.0+189+f9babebb.1.x86_64.rpm

    Install Zabbix 4.0 LTS or Zabbix 4.4 standard .rpm package:

    Zabbix 4.0 LTS version (supported until October 31, 2023)


    rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/8/x86_64/zabbix-release-4.0-2.el8.noarch.rpm
    dnf clean all
    dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent

    OR

    Zabbix 4.4 version (supported until 2020, but has the latest features)


    rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/8/x86_64/zabbix-release-4.4-1.el8.noarch.rpm
    dnf clean all
    dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent

    You can find more information about Zabbix’s life cycle and release policies on the official website.

    Step 3: Install and configure database


    In this installation, I will use password rootDBpass as root password and zabbixDBpass as Zabbix password for DB. Consider changing your password for security reasons.

    a. Install MariaDB

    dnf -y install mariadb-server && systemctl start mariadb && systemctl enable mariadb

    b. Reset root password for database
    Secure MySQL MySQL by changing the default password for MySQL root:

    mysql_secure_installation


    Enter current password for root (enter for none): Press the Enter
    Set root password? [Y/n]: Y
    New password: 
    Re-enter new password: 
    Remove anonymous users? [Y/n]: Y
    Disallow root login remotely? [Y/n]: Y
    Remove test database and access to it? [Y/n]: Y
    Reload privilege tables now? [Y/n]: Y


    c. Create database


    mysql -uroot -p’rootDBpass’ -e “create database zabbix character set utf8 collate utf8_bin;”
    mysql -uroot -p’rootDBpass’ -e “grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbixDBpass’;”

    d. Import initial schema and data
    Temporary disable strict mode (ZBX-16465) to avoid MySQL error “ERROR 1118 (42000) at line 1284: Row size too large (> 8126)” :

    mysql -uroot -p’rootDBpass’ zabbix -e “set global innodb_strict_mode=‘OFF’;”


    Import database shema for Zabbix server (could last up to 5 minutes):

    zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p’zabbixDBpass’ zabbix

    Enable strict mode:

    mysql -uroot -p’rootDBpass’ zabbix -e “set global innodb_strict_mode=‘ON’;”

    e. Enter database password in Zabbix configuration file
    Open zabbix_server.conf file with command: “sudo nano /etc/zabbix/zabbix_server.conf” and add database password in this format anywhere in file:

    DBPassword=zabbixDBpass


    Save and exit file (ctrl+x, followed by y and enter).

    Step 4: Start Zabbix server and agent processes


    systemctl restart zabbix-server zabbix-agent
    systemctl enable zabbix-server zabbix-agent


    Step 5: Configure firewall


    firewall-cmd --add-service={http,https} --permanent
    firewall-cmd --add-port={10051/tcp,10050/tcp} --permanent
    firewall-cmd --reload

    Step 6: Configure Zabbix frontend


    a. Configure PHP for Zabbix frontend
    Edit file “/etc/php-fpm.d/zabbix.conf” with command:

    sudo nano /etc/php-fpm.d/zabbix.conf
    Uncomment line in zabbix.conf that starts with “; php_value date.timezone Europe/Riga” by removing symbol “;” and set the right timezone for your country, for example:

    php_value date.timezone Europe/Amsterdam


    Save and exit file (ctrl+x, followed by y and enter)

    b. Restart Apache web server and make it start at system boot


    systemctl restart httpd php-fpm
    systemctl enable httpd php-fpm


    c. Configure web frontend
    Connect to your newly installed Zabbix frontend using URL: http://server_ip_or_name/zabbix and configure all needed settings. Basically, you only need to enter a password for Zabbix DB user and for everything else just click “Next step”. In this tutorial Zabbix database password is zabbixDBpass.

    在这里插入图片描述

    1. INSTALLATION STEP: WELCOME SCREEN

    在这里插入图片描述

    1. INSTALLATION STEP: ZABBIX PRE-REQUISITES CHECK
      在这里插入图片描述

    2. INSTALLATION STEP: CONFIGURE DB CONNECTION
      在这里插入图片描述

    3. INSTALLATION STEP: CONFIGURE ZABBIX SERVER
      在这里插入图片描述

    4. INSTALLATION STEP: PRE-INSTALLATION SUMMARY
      .在这里插入图片描述

    5. INSTALLATION STEP: FINISH

    That’s it, you have installed Zabbix monitoring system!

    Step 7: Login to frontend using Zabbix default login credentials


    Use Zabbix default admin username and password to login to Zabbix frontend at http://server_ip_or_name/zabbix :

    Username: Admin
    Password: zabbix

    在这里插入图片描述

    Step 8: Create MySQL partitions on History and Events tables

    Zabbix’s housekeeping process is responsible for deleting old trend and history data. Removing old data from the database using SQL delete query can negatively impact database performance. Many of us have received that annoying alarm “Zabbix housekeeper processes more than 75% busy” because of that.

    That problem can be easily solved with the database partitioning. Partitioning creates tables for each hour or day and drops them when they are not needed anymore. SQL DROP is way more efficient than the DELETE statement.

    You can partition MySQL tables in 5 minutes using this simple guide.

    Step 9: Optimizing Zabbix Server (optional)

    Don’t bother with this optimization if you are monitoring a small number of devices, but if you are planning to monitor a large number of devices then continue with this step.

    Open “zabbix_server.conf” file with command: “sudo nano /etc/zabbix/zabbix_server.conf” and add this configuration anywhere in file:

    StartPollers=100
    StartPollersUnreachable=50
    StartPingers=50
    StartTrappers=10
    StartDiscoverers=15
    StartPreprocessors=15
    StartHTTPPollers=5
    StartAlerters=5
    StartTimers=2
    StartEscalators=2
    CacheSize=128M
    HistoryCacheSize=64M
    HistoryIndexCacheSize=32M
    TrendCacheSize=32M
    ValueCacheSize=256M

    Save and exit file (ctrl+x, followed by y and enter).

    This is not a perfect configuration, keep in mind that you can optimize it even more. Let’s say if you don’t use ICMP checks then set the “StartPingers” parameter to 1 or if you don’t use active agents then set “StartTrappers” to 1 and so on. You can find out more about the parameters supported in a Zabbix server configuration file in the official documentation.

    If you try to start the Zabbix server you will receive an error “[Z3001] connection to database 'Zabbix' failed: [1040] Too many connections” in the log “/var/log/zabbix/zabbix_server.log” because we are using more Zabbix server processes than MySQL can handle. We need to increase the maximum permitted number of simultaneous client connections and optimize MySQL – so move to the next step.

    Step 10: Optimizing MySQL database (optional)

    a. Create custom MySQL configuration file

    Create file “10_my_tweaks.cnf" with “sudo nano /etc/my.cnf.d/10_my_tweaks.cnf” and paste this configuration:

    [mysqld]
    max_connections                = 404
    innodb_buffer_pool_size        = 800M
    
    innodb-log-file-size           = 128M
    innodb-log-buffer-size         = 128M
    innodb-file-per-table          = 1
    innodb_buffer_pool_instances   = 8
    innodb_old_blocks_time         = 1000
    innodb_stats_on_metadata       = off
    innodb-flush-method            = O_DIRECT
    innodb-log-files-in-group      = 2
    innodb-flush-log-at-trx-commit = 2
    
    tmp-table-size                 = 96M
    max-heap-table-size            = 96M
    open_files_limit               = 65535
    max_connect_errors             = 1000000
    connect_timeout                = 60
    wait_timeout                   = 28800

    Save and exit the file (ctrl+x, followed by y and enter) and set the correct file permission:

    sudo chown mysql:mysql /etc/my.cnf.d/10_my_tweaks.cnf
    sudo chmod 644 /etc/my.cnf.d/10_my_tweaks.cnf

    Two things to remember!

    Configuration parameter max_connections must be larger than the total number of all Zabbix proxy processes plus 150. You can use the command below to automatically check the number of Zabbix processes and add 150 to that number:

    egrep "^Start.+=[0-9]"  /etc/zabbix/zabbix_server.conf  |  awk -F "=" '{s+=$2} END {print s+150}'
     295

    The second most important parameter is innodb_buffer_pool_size, which determines how much memory can MySQL get for caching InnoDB tables and index data. You should set that parameter to 70% of system memory if only database is installed on server.

    However, in this case, we are sharing a server with Zabbix and Apache processes so you should set innodb_buffer_pool_size to 40% of total system memory. That would be 800 MB because my CentOS server has 2 GB RAM.

    I didn’t have any problems with memory, but if your Zabbix proxy crashes because of lack of memory, reduce “innodb_buffer_pool_size” and restart MySQL server.

    Note that if you follow this configuration, you will receive “Too many processes on the Zabbix server” alarm in Zabbix frontend due to the new Zabbix configuration. It is safe to increase the trigger threshold or turn off that alarm (select “Problems” tab → left click on the alarm → select “Configuration” → remove the check from “Enabled” → hit the “Update” button)

    b. Restart Zabbix Server and MySQL service

    Stop and start the services in the same order as below:

    sudo systemctl stop zabbix-server
    sudo systemctl stop mysql
    sudo systemctl start mysql
    sudo systemctl start zabbix-server

    Step 11: How to manage Zabbix / MySQL / Apache service

    Sometimes you will need to check or restart Zabbix, MySQL or Apache service – use commands below to do that.

    Zabbix Server
    sudo systemctl <status/restart/start/stop> zabbix-server
    
    MySQL Server
    sudo systemctl <status/restart/start/stop> mysql
    
    Apache Server
    sudo systemctl <status/restart/start/stop> httpd 
    
    PHP FastCGI Process Manager
    sudo systemctl <status/restart/start/stop> php-fpm
    
    Zabbix Agent
    sudo systemctl <status/restart/start/stop> zabbix-agent </span>
  • 相关阅读:
    好文章记录
    求职经历
    C正确初始化方式
    linux 常用命令
    MYSQL查找从小到大排列第90%个位置的数据
    最好的单例模式
    <%= %>和${}使用差异
    后台和jsp乱码处理
    浏览器下载文件
    文件下载
  • 原文地址:https://www.cnblogs.com/cyrusxx/p/12615736.html
Copyright © 2011-2022 走看看