1-1-Zabbix简介和安装

熊 12 阅读 监控平台

1. zabbix概述

Zabbix是一款可监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康状况和完整性。Zabbix使用灵活的通知机制 , 允许用户为几乎任何事件配置基于电子邮件的警报。这允许对服务器问题做出快速反应。Zabbix基于存储的数据提供报告和数据可视化功能。这使得Zabbix成为容量规划的理想选择。

Zabbix是一款能够监控各种网络参数以及服务器健康性和完整性的软件。Zabbix使用灵活的通知机制 , 允许用户为几乎任何事件配置基于邮件的告警。这样可以快速反馈服务器的问题。基于已存储的数据 , Zabbix提供了出色的报告和数据可视化功能。

zabbix官网地址为 https://www.zabbix.com/ , 页面如下所示 :

image-20240311194419729

zabbix由2部分构成 , zabbix server与可选组件zabbix agent。

zabbix server可以通过SNMP , zabbix agent , ping , 端口监视等方法提供对远程服务器/网络状态的监视 , 数据收集等功能 , 它可以运行在Linux , Ubuntu , Solaris , HP-UX , AIX , Free BSD , Open BSD , OS X等平台上。

zabbix agent需要安装在被监视的目标服务器上 , 它主要完成对硬件信息或与操作系统有关的内存 , CPU等信息的收集。

zabbix server可以单独监视远程服务器的服务状态 ; 同时也可以与zabbix agent配合 , 可以轮询zabbix agent主动接收监视数据 ( agent方式 ) , 同时还可被动接收zabbix agent发送的数据 ( trapping方式 ) 。 另外zabbix server还支持SNMP (v1,v2) , 可以与SNMP软件(例如 : net-snmp)等配合使用。

2. zabbix基本概念

2.1 zabbix构成

Zabbix监控组件主要包括 : Zabbix Server、Zabbix Proxy、Zabbix Agent ;

其中Zabbix Server包括 : WEB GUI、Database、Zabbix Server。

zabbix 主要由以下 5 个组件构成:

  1. Server

    zabbix server是zabbix的核心组件 , server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。

  2. web页面

    web页面也是zabbix的一部分 , 通常和zabbix server位于一台物理设备上 , 但是在特殊情况下也可以分开配置。web页面主要提供了直观的监控信息 , 以方便运维人员监控管理。

  3. 数据库

    zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。

  4. proxy

    zabbix proxy可以根据具体生产环境进行采用或者放弃。如果使用了zabbix proxy , 则其会替代 zabbix server采集数据信息 , 可以很好的分担zabbix server的负载。zabbix proxy通常运用与架构过大、zabbix server负载过重 , 或者是企业设备跨机房、跨网段、zabbix server无法与zabbix agent直接通信的场景。

  5. Agent

    zabbix agent通常部署在被监控目标上 , 用于主动监控本地资源和应用程序 , 并将监控的数据发送给zabbix server。

2.2 zabbix 的监控对象

zabbix支持监控各种系统平台 , 包括Linux和Windows等主流操作系统 , 也可以借助SNMP或者是SSH协议监控路由交换设备。

zabbix如果部署在服务器上 , 可以监控其CPU、内存、网络性能等硬件参数 , 也可以监控具体的服务或者应用程序、服务运行情况及性能。

硬件监控 : Zabbix IPMI Interface , 通过IPMI接口进行监控 , 我们可以通过标准的IPMI硬件接口 , 监控被监控对象的物理特征 , 比如电压、温度、风扇状态、电源状态等。

系统监控 : Zabbix Agent Interface , 通过专用的代理程序进行监控 , 与常见的master/agent模型类似 , 如果被监控对象支持对应的 agent , 推荐首选这种方式。

Java监控 : Zabbix JMX Interface , 通过JMX 进行监控 ,JMX (java management extensions , 即java管理扩展 ) , 监控JVM虚拟机时 , 使用这种方法是非常不错的选择。

网络设备监控 : Zabbix SNMP Interface , 通过SNMP协议与被监控对象进行通信 ,SNMP协议的全称为simple network management protocol , 被译为简单网络管理协议 , 通常来说 , 我们无法在路由器、交换机这种硬件上安装agent , 但是这些硬件都支持SNMP协议。

应用服务监控 : Zabbix Agent UserParameter

MySQL数据库监控 : percona-monitoring-plulgins

URL监控 : Zabbix Web 监控

2.3 zabbix的常用术语

zabbix 的学习需要掌握一些zabbix的常用术语 , zabbix常用术语列举如下 :

  1. 主机 (host) : 要监控的设备 , 可以由IP或者是主机名 ( 必须可解析 ) 指定。

  2. 主机组 ( host group ) : 主机的逻辑容器 , 包含主机和模板 , 主机组通常在给用户或者是用户组指派监控权限时使用。

  3. 监控项 ( item ) : 一个特定监控指标的相关数据 , 比如内存的大小、CPU的使用率 , 甚至是服务的运行状态等等。监控项数据来源于被监控对象 , 并且每个监控项都由一个 key 来标识。

  4. 触发器 ( trigger ) : 一个表达式 , 用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时 , 就被认为是故障 , 如果超出后再次符合 , 就被认为是正常。

  5. 事件 ( event ) : 触发器触发的一个特定事件 , 或者是zabbix定义的一个自动上线注册主机的事件。

  6. 动作 ( action ) : 指根据配置 ,zabbix对于触发器触发的特定事件进行处理的具体措施 , 如执行某个脚本 , 或者是向管理员邮箱发送邮件等等。

  7. 报警升级 (escalation) : 发送警报或者是执行远程命令的自定义方案。

  8. 媒介 (media ) : 发送通知 ( 告警 ) 的手段 , 如微信、邮件、钉钉等等。

  9. 通知 ( notification ) : 通过指定的媒介 , 向用户发送的有关事件的信息。

  10. 远程命令 (remote command ) : 指运维人员提前写好的命令 , 可以让被监控主机在触发事件后执行。

  11. 模板 ( template ) : 用于快速定义被监控主机的预设条目集合 , 通常包括了监控项、触发器、应用等 , 模板可以直接链接至某个主机。

  12. 应用 ( application ) : 一组监控项的集合。

  13. web场景 ( web scennario ) : 用于检测web站点可用性的一个或多个HTTP请求。

  14. 前端 ( frontend ) : zabbix的web接口。

这些术语 , 我们都会在后文中直接使用而不过多赘述 , 在企业技术交流中也会经常使用。

2.4 zabbix 的工作流程

Zabbix在进行监控时 , zabbix客户端要安装在被监控设备上 , 负责定期收集数据 , 并将其发送给zabbix服务端 ; zabbix服务端要安装在监控设备上 , 其将zabbix客户端发送的数据存储的数据库中 , zabbix web根据数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式 :

  1. 主动模式 : zabbix客户端主动向zabbix server请求监控项列表 , 并主动将监控项内需要的数据提交给zabbix server。

  2. 被动模式 : zabbix server向agent请求获取监控项的数据 , zabbix agent返回数据。

由此可以看出zabbix的主动和被动模式是以zabbix客户端为基准的。

zabbix-introduce-1

2.5 zabbix 进程详解

在默认的情况下 , zabbix有6个工作进程 ; 分别是zabbix_agentd , zabbix_get , zabbix_proxy , zabbix_sender , zabbix_server 和 zabbix_java_gateway。 其中 ,zabbix_java_gateway是可选进程。这 6 个进程的作用如下 :

  1. zabbix_agentd : zabbix-agentd为zabbix客户端守护进程 , 主要负责收集客户端监控项数据。

  2. zabbix_server : zabbix_server为zabbix服务端守护进程 , 主要负责收集zabbix客户端数据。 ( 端口为10051 )

  3. zabbix_proxy : zabbix_proxy是zabbix的代理程序 , 其功能类似于server , 作用上类似于一个中转站 , 最终会把收集的数据再次提交给zabbix_server。

  4. zabbix_get : zabbix_get作为zabbix 工具 , 通常运行在zabbix_server 或者zabbix_proxy上 , 用于远程获取客户端信息 , 通常用于排错。

  5. zabbix_sender : zabbix_sender也是zabbix的一个工具 , 通常运行在zabbix的客户端 , 用于耗时比较长的检查 , 其作用是主动发送数据。

  6. zabbix_java_gateway : zabbix_java_gateway是zabbix2.0以后引入的新功能 , 可以用于JAVA 方面的设备 ; 但是只能主动获取数据 , 而不能被动获取数据。

2.6 zabbix 的监控框架

在实际的工作环境中 , 根据网络环境和监控的规模不同 , zabbix 一共有三种框架 , 分别是server_client架构、master_node_client 架构和server_proxy_client架构。

  1. server_client架构

    zabbix 最简单的架构 , 监控设备和被监控设备之间直接相连 , zabbix_server 和 zabbix_client 之间直接进行数据交互。

  2. zabbix_proxy_client架构

    proxy是连接server和client之间的桥梁 , 其本身不存放数据 , 只是将zabbix_agent端发来的数据暂存 , 然后再提交给 server。这种架构一般用于跨机房、跨网络的中型网络架构。

在 server_proxy_client 架构中 , server 设备的宕机会导致整个系统瘫痪而无法正常工作。

  1. master_node_client架构

    master_node_client架构是zabbix最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与 server_proxy_client架构相比 , master_node_client架构的主要区别在于node与proxy 上.

在 master_node_client架构中 , 每个node可以理解为一个小的server端 , 在自己的配置文件和数据库 , node下游可以直接连接 client , 也可以再次经过 proxy 代理后连接client。

在master_node_client架构中 , master设备宕机不会影响node节点的正常工作。

2.6.1 三种架构模式的[架构图]如下 :

zabbix-introduce-2

2.6.2 每个模块的工作职责 :

  1. Zabbix_Server : zabbix_server作为核心组件 , 用来获取agent存活情况和监控数据。所有的配置、统计、操作数据均通过 server进行存取到database ;

  2. Zabbix_Database : 用户存储所有的zabbix的配置信息、监控数据的数据库 ;

  3. Zabbix_Web : zabbix 的web界面 , 管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息 , 通常与zabbix_server 运行在同一台主机上 , 也可以单独部署在独立的服务器上 ;

  4. Zabbix_Proxy : 通常用于分布式监控 , 代理zabbix_server收集部分被监控的数据并统一发送给server端 ; ( 通常大于 500 台主机需要使用 )

  5. Zabbix_Agent : 部署在被监控主机上 , 负责收集被监控主机的数据 , 并发送给servre端或者proxy端 ;

Zabbix Server、Proxy、Agent都有自己的配置文件以及log文件 , 重要的参数需要在这里配置 , 后面会详细说明。

3. zabbix安装

官方安装目录 : 下载Zabbix

每个版本的安装包都不太一样 , 基本上所有的步骤直接参考官方的安装手册即可。

官方产品手册: 产品手册 (zabbix.com), 所有的安装过程和版本相关信息均在里面。

3.1 yum/apt安装

这里只是展示zabbix6.0在ubuntu2204和centos8上面的安装方式, 其他的版本的安装方式均可以参考产品手册链接: 产品手册 (zabbix.com)

3.1.1 apt安装

ubuntu2204, zabbix6.0

  • 安装zabbix server

    # wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
    # dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
    # apt update
    # apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
  • 准备数据库

    root@mysql:~# apt install mysql-server mysql-client
    root@ubuntu2204:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf 
    bind-address            = 0.0.0.0
    root@mysql:~# systemctl restart mysql
    
    #进入数据库,创建zabbix数据库, 创建账户并授权
    root@mysql:~# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 8
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> create database zabbix_server character set utf8mb4 collate utf8mb4_bin;
    Query OK, 1 row affected (0.02 sec)
    
    mysql> create user zabbix@"192.168.194.%" identified by 'xiong.zabbix';
    Query OK, 0 rows affected (0.01 sec)
    
    
    mysql> grant all privileges on zabbix_server.* to zabbix@"192.168.194.%";
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> set global log_bin_trust_function_creators = 1;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> exit
    Bye
  • 导入数据库

    在zabbix server节点初始化数据库

    root@zabbix-server:~# mysql -uzabbix -pxiong.zabbix -h192.168.194.133              #测试账户权限
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 9
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> exit
    Bye
    
    #初始化数据库
    root@zabbix-server:~# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pxiong.zabbix -h192.168.194.133 zabbix_server
    mysql: [Warning] Using a password on the command line interface can be insecure.
  • 数据库验证数据

    root@mysql:~# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> use zabbix_server
    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
    mysql> show tables;
    +----------------------------+
    | Tables_in_zabbix_server    |
    +----------------------------+
    | acknowledges               |
    | actions                    |
    | alerts                     |
    | auditlog                   |
    | autoreg_host               |
    | conditions                 |
    | config                     |
    | config_autoreg_tls         |
    .......
  • 编辑zabbix配置文件

    root@zabbix-server:~# grep -i "^DB" /etc/zabbix/zabbix_server.conf
    DBHost=192.168.194.133
    DBName=zabbix_server
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
  • 重启zabbix服务

    root@zabbix-server:~# systemctl restart zabbix-server zabbix-agent apache2
  • 访问并配置界面

    • 页面访问IP/zabbix, 底层中网页配置根目录/usr/share ,进入页面之后选择下一步

      image-20240312135508421
    • 页面进入预检查项, 只有预检查项均ok , 才能进入下一步

      image-20240312135629653
    • 数据库配置

      image-20240312135849651
    • zabbix时区以及zabbix server名称设置

      image-20240312140049300
    • 检查所有配置是否正常

      image-20240312140156559
    • 最后一步会提示配置完全正常, 点击Finish便跳转进入zabbix页面

      image-20240312140612207
    • 之后直接跳转到如下图页面, 页面用户名密码 : Admin/zabbix, 至此zabbix便安装完成

      image-20240312143159750
    • 进入页面之后, 如果看到下图位置有信息 , 则安装成功

      image-20240312151410703

3.1.2 yum安装

3.1.2.1 CentOS8,zabbix6.0

centos8.5默认数据库数据库版本10.03.28 , zabbix6.0的数据库版本最低需要10.05 , 最高不能高于11.02.xx, 否则zabbix无法启动

  • 安装zabbix server

    [root@zabbix-server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
    Retrieving https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
    warning: /var/tmp/rpm-tmp.pH9nry: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Verifying...                          ################################# [100%]
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zabbix-release-6.0-4.el8         ################################# [100%]
    [root@zabbix-server ~]# dnf clean all
    Repository extras is listed more than once in the configuration
    50 files removed
    [root@zabbix-server ~]# dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
  • 准备数据库 , 由于zabbix6.0安装对数据库版本有限制, 已经通过二进制的方式安装好数据库包。

  • 配置数据库

    [root@mysql ~]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 3
    Server version: 10.11.7-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)]> create database zabbix_server character set utf8mb4 collate utf8mb4_bin;
    Query OK, 1 row affected (0.000 sec)
    
    MariaDB [(none)]> create user zabbix@"192.168.194.%" identified by 'xiong.zabbix';
    Query OK, 0 rows affected (0.001 sec)
    
    MariaDB [(none)]> grant all privileges on zabbix_server.* to zabbix@"192.168.194.%";
    Query OK, 0 rows affected (0.001 sec)
    
    MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
    Query OK, 0 rows affected (0.000 sec)
  • 导入数据库

    [root@zabbix-server ~]# dnf install mariadb
    [root@zabbix-server ~]#  zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pxiong.zabbix -h192.168.194.141 zabbix_server
  • 配置zabbix配置文件

    [root@zabbix-server ~]# grep  -i "^DB" /etc/zabbix/zabbix_server.conf 
    DBHost=192.168.194.141
    DBName=zabbix_server
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
  • 启动服务

    [root@zabbix-server ~]#  systemctl restart zabbix-server zabbix-agent httpd php-fpm

剩余配置方式与apt安装方式均一样

3.1.2.2 centos7,zabbix4

  • 准备运行环境

    [root@zabbix-server ~]# rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
  • 安装zabbix软件

    Server : zabbix-server-mysql

    Zabbix proxy并使用MySQL数据库 : zabbix-proxy-mysql

    Zabbix前端 : zabbix-web-mysql

    [root@zabbix-server ~]# yum install  zabbix-server-mysql zabbix-agent zabbix-web-mysql
  • 准备数据库

    [root@mysql ~]# yum install mariadb mariadb-server -y
    [root@mysql ~]# mysql 
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 2
    Server version: 5.5.68-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)]> create database zabbix_server character set utf8 collate utf8_bin; 
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> grant all privileges on zabbix_server.* to zabbix@"192.168.194.%" identified by 'xiong.zabbix';
    Query OK, 0 rows affected (0.00 sec)
  • 导入数据库信息

    [root@zabbix-server ~]#  zcat /usr/share/doc/zabbix-server-mysql-4.0.50/create.sql.gz  | mysql -uzabbix -pxiong.zabbix -h192.168.194.145 zabbix_server
  • 编辑zabbix server 配置文件

    [root@zabbix-server ~]# grep "^[a-Z]" /etc/zabbix/zabbix_server.conf 
    LogFile=/var/log/zabbix/zabbix_server.log
    LogFileSize=0
    PidFile=/var/run/zabbix/zabbix_server.pid
    SocketDir=/var/run/zabbix
    DBHost=192.168.194.145
    DBName=zabbix_server
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
    SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
    Timeout=4
    AlertScriptsPath=/usr/lib/zabbix/alertscripts
    ExternalScripts=/usr/lib/zabbix/externalscripts
    LogSlowQueries=3000
  • 启动zabbix server服务

    [root@zabbix-server ~]# systemctl start zabbix-server httpd
  • 访问页面, 会提示timezone 有问题需要编辑文件/etc/httpd/conf.d/zabbix.conf ,修改时区参数

    image-20240313202703172
    [root@zabbix-server ~]# vi /etc/httpd/conf.d/zabbix.conf 
    
    #
    # Zabbix monitoring system php web frontend
    #
    
    Alias /zabbix /usr/share/zabbix
    
    <Directory "/usr/share/zabbix">
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    
        <IfModule mod_php5.c>
            php_value max_execution_time 300
            php_value memory_limit 128M
            php_value post_max_size 16M
            php_value upload_max_filesize 2M
            php_value max_input_time 300
            php_value max_input_vars 10000
            php_value always_populate_raw_post_data -1
            php_value date.timezone Asia/ShangHai
        </IfModule>
    </Directory>
    ...
    [root@zabbix-server ~]# systemctl restart httpd zabbix-server zabbix-agent
  • 配置数据库连接

    image-20240313203037706
  • 配置zabbix server 参数细节

    image-20240313203114788

  • 查看配置预览信息

    image-20240313203132225
  • 页面配置完成, 并将配置完成后的参数文件放置于/etc/zabbix/web/zabbix.conf.php文件中

    image-20240313203200437

3.2 编译安装

3.2.1 Cento8 编译安装zabbix6.0

zabbix源下载地址: Download Zabbix sources

3.2.1.1 安装编译软件

  • 准备环境

    [root@zabbix-server ~]# groupadd -g 1001 zabbix
    [root@zabbix-server ~]# useradd -u 1001 -g 1001 zabbix
    
    #准备软件存放目录
    [root@zabbix-server zabbix-6.0.27]# mkdir -vp /apps/zabbix_server
    mkdir: created directory '/apps'
    mkdir: created directory '/apps/zabbix_server'
    
    #准备日志存放目录
    [root@zabbix-server ~]#mkdir /var/log/zabbix
    [root@zabbix-server ~]#chown  zabbix.zabbix /var/log/zabbix 
    
    #准备软件pid文件存放目录
    [root@zabbix-server ~]# mkdir /apps/zabbix_server/run/
    [root@zabbix-server ~]# chown zabbix.zabbix /apps/zabbix_server/run
  • 解决依赖关系,CentOS8需要启用PowerTools安装源

    [root@zabbix-server ~]# yum install gcc make libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel  OpenIPMI libevent-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel pcre-devel php-json php-gd php-ldap php-mysqlnd php-xml OpenIPMI-devel
  • 安装包上传至服务器中并解压

    [root@zabbix-server ~]# tar -xf zabbix-6.0.27.tar.gz -C /usr/local/src/
    [root@zabbix-server ~]# cd /usr/local/src/zabbix-6.0.27/
    [root@zabbix-server zabbix-6.0.27]# ls
    aclocal.m4  build      conf          configure     database  INSTALL     Makefile.am  misc     README  ui
    AUTHORS     ChangeLog  config.guess  configure.ac  depcomp   install-sh  Makefile.in  missing  sass
    bin         compile    config.sub    COPYING       include   m4          man          NEWS     src
  • 编译

    [root@zabbix-server zabbix-6.0.27]# ./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql  --with-net-snmp --with-libcurl --with-libxml2 --enable-java --with-openipmi
    [root@zabbix-server zabbix-6.0.27]#make install 

    --enable-static标志来静态链接库。

    -with-libcurl和--with-libxml2配置选项对虚拟机监控是必须的;

    要为Zabbix server和agent配置源代码 , 你可以执行类似如下命令 :

    ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi

    要为Zabbix server ( 和 , 比如PostgreSQL ) 配置源代码 , 你可以执行 :

    ./configure --enable-server --with-postgresql --with-net-snmp

    要为Zabbix server( 和 , 比如SQLite ) 配置源代码 , 你可以执行 :

    ./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

    要为Zabbix agent配置源代码 , 你可以执行 :

    ./configure --enable-agent

    或者Zabbix agent 2 :

    ./configure --enable-agent2

    安装java gataway

    ./configure --enable-java --prefix=$PREFIX
  • 准备数据库

    [root@mysql ~]# mysql
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 3
    Server version: 10.11.7-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)]> create user zabbix@"192.168.194.%" identified by 'xiong.zabbix';
    Query OK, 0 rows affected (0.001 sec)
    
    MariaDB [(none)]> create database zabbix_server_make character set utf8mb4 collate utf8mb4_bin;
    Query OK, 1 row affected (0.044 sec)
    
    MariaDB [(none)]> grant all privileges on zabbix_server_make.* to zabbix@"192.168.194.%";
    Query OK, 0 rows affected (0.002 sec)
    
    MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
    Query OK, 0 rows affected (0.000 sec)
    
    
  • 导入数据库

    [root@zabbix-server run]# cd /usr/local/src/zabbix-6.0.27/database/mysql/
    [root@zabbix-server mysql]# ls
    data.sql  double.sql  history_pk_prepare.sql  images.sql  Makefile  Makefile.am  Makefile.in  schema.sql
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.141 zabbix_server_make < schema.sql 
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.141 zabbix_server_make < images.sql
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.141 zabbix_server_make < data.sql
  • 验证数据库

    MariaDB [(none)]> use zabbix_server_make
    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_server_make]> show tables;
    +------------------------------+
    | Tables_in_zabbix_server_make |
    +------------------------------+
    | acknowledges                 |
    | actions                      |
    | alerts                       |
    | auditlog                     |
    | autoreg_host                 |
    | conditions                   |
    | config                       |
    | config_autoreg_tls           |
    .....
    MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
    Query OK, 0 rows affected (0.000 sec)
  • 编辑zabbix server文件

    [root@zabbix-server mysql]# grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_server.conf
    LogFile=/var/log/zabbix/zabbix_server.log
    PidFile=/apps/zabbix_server/run/zabbix_server.pid
    SocketDir=/apps/zabbix_server/run
    DBHost=192.168.194.141
    DBName=zabbix_server_make
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
    Timeout=4
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
  • 启动zabbix server

    [root@zabbix-server zabbix-6.0.27]# /apps/zabbix_server/sbin/zabbix_server -c /apps/zabbix_server/etc/zabbix_server.conf

3.2.1.2 配置页面

  • 配置web界面

    [root@zabbix-server ~]# mkdir /var/www/html/zabbix 
    [root@zabbix-server ~]# cd /usr/local/src/zabbix-6.0.27/ui/
    [root@zabbix-server ui]# cp -ra * /var/www/html/zabbix
    [root@zabbix-server ui]# chown apache:apache -R /var/www/html/zabbix/
  • 访问界面,进去预检测项, 发现会有报错信息。这个地方的报错主要包含两个方面:1.缺少对应的php包 ;2. 需要调整php的具体参数值。

    调整参数的文件为/etc/php.ini

    image-20240313133159673
    • 调整php.ini文件

      post_max_size 16M
      max_execution_time 300
      max_input_time 300
    • 重启httpd服务

      [root@zabbix-server ~]# systemctl restart httpd
      [root@zabbix-server ~]#systemctl restart php-fpm
  • 配置后续页面,配置数据库链接

    image-20240313133758713
  • 配置zabbix主机名和时区

    image-20240313133820341
  • 检测所有配置信息是否正常

    image-20240313133842071

    之后整体便配置完成了。这里通过页面自动生成的php文件放在后台的/var/www/html/zabbix/conf目录下面

3.2.1.3 配置systemd文件

  • zabbix-server服务文件

    [root@zabbix-server zabbix]# systemctl cat zabbix-server
    # /usr/lib/systemd/system/zabbix-server.service
    [Unit]
    Description= Zabbix Server
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_server.conf"
    EnvironmentFile=-/etc/sysconfig/zabbix-server
    Type=forking
    Restart=on-failure
    PIDFile=/apps/zabbix_server/run/zabbix_server.pid
    KillMode=control-group
    ExecStart=/apps/zabbix_server/sbin/zabbix_server -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    TimeoutSec=0
    
    [Install]
    WantedBy=multi-user.target
  • zabbix-agent服务文件

    [root@zabbix-server zabbix]# systemctl cat zabbix-agent
    # /usr/lib/systemd/system/zabbix-agent.service
    [Unit]
    Description=Zabbix Agent
    After=syslog.target
    After=network.target
    
    [Service]
    Environment="CONFFILE=/apps/zabbix_server/etc/zabbix_agentd.conf"
    EnvironmentFile=-/etc/sysconfig/zabbix-agent
    Type=forking
    Restart=on-failure
    PIDFile=/apps/zabbix_server/run/zabbix_agentd.pid
    KillMode=control-group
    ExecStart=/apps/zabbix_server/sbin/zabbix_agentd -c $CONFFILE
    ExecStop=/bin/kill -SIGTERM $MAINPID
    RestartSec=10s
    User=zabbix
    Group=zabbix
    
    [Install]
    WantedBy=multi-user.target
    
    #这里同时需要编辑zabbix-agent的配置文件
    root@zabbix-server:~# grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_agentd.conf
    PidFile=/apps/zabbix_server/run/zabbix_agentd.pid
    LogFile=/var/log/zabbix/zabbix_agentd.log
    Server=127.0.0.1
    ServerActive=127.0.0.1
    Hostname=Zabbix server

3.2.2 ubuntu2204编译安装zabbix6.0

3.2.2.1 安装编译软件

  • 准备运行环境

    root@zabbix-server:~# groupadd --system zabbix
    root@zabbix-server:~# useradd --system -g zabbix -s /usr/sbin/nologin  zabbix
    root@zabbix-server:~# mkdir -vp /apps/zabbix_server
    mkdir: created directory '/apps'
    mkdir: created directory '/apps/zabbix_server'
    root@zabbix-server:~# mkdir /var/log/zabbix
    root@zabbix-server:~# chown  zabbix.zabbix /var/log/zabbix
    root@zabbix-server:~#  mkdir /apps/zabbix_server/run/
    root@zabbix-server:~# chown zabbix.zabbix /apps/zabbix_server/run
  • 安装环境软件, 解决依赖关系

    root@zabbix-server:~# apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors-config libsnmp-base  libsodium23 libssh2-1 libtiff5 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml  snmpd ssl-cert libmysqlclient-dev libxml++2.6-dev libxml2-dev libxml2 libsnmp-dev libevent-dev libcurl4-openssl-dev openjdk-8-jdk  gcc make
  • 上传压缩包, 并解压

    root@zabbix-server:~# tar -xf zabbix-6.0.27.tar.gz -C /usr/local/src/
    root@zabbix-server:~# cd /usr/local/src/
    root@zabbix-server:/usr/local/src# cd zabbix-6.0.27/
  • 编译

    root@zabbix-server:/usr/local/src/zabbix-6.0.27# ./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql  --with-net-snmp --with-libcurl --with-libxml2 --enable-java --enable-openipmi
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    .....
    root@zabbix-server:/usr/local/src/zabbix-6.0.27# make install 
    Making install in src
  • 在数据库节点准备数据库

    root@mysql:~# apt install mysql-server mysql-client
    root@mysql:~# vi /etc/mysql/mysql.conf.d/mysqld.cnf 
    bind-address 0.0.0.0
    root@mysql:~# systemctl restart mysql
    root@mysql:~# mysql
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 8
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> create database zabbix_server character set utf8mb4 collate utf8mb4_bin;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> create user zabbix@"192.168.194.%" identified by 'xiong.zabbix';
    Query OK, 0 rows affected (0.01 sec)
    
    mysql>  grant all privileges on zabbix_server.* to zabbix@"192.168.194.%";
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> set global log_bin_trust_function_creators = 1;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
    mysql> exit
    Bye
  • 导入数据库

    root@zabbix-server:/usr/local/src/zabbix-6.0.27# mysql -uzabbix -pxiong.zabbix  -h192.168.194.132
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 10
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> quit
    Bye
    root@zabbix-server:/usr/local/src/zabbix-6.0.27# cd /usr/local/src/zabbix-6.0.27/database/mysql/
    root@zabbix-server:/usr/local/src/zabbix-6.0.27/database/mysql# mysql -uzabbix -pxiong.zabbix -h192.168.194.132  zabbix_server < schema.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
    root@zabbix-server:/usr/local/src/zabbix-6.0.27/database/mysql# mysql -uzabbix -pxiong.zabbix -h192.168.194.132  zabbix_server < images.sql
    mysql: [Warning] Using a password on the command line interface can be insecure.
    root@zabbix-server:/usr/local/src/zabbix-6.0.27/database/mysql# mysql -uzabbix -pxiong.zabbix -h192.168.194.132  zabbix_server < data.sql 
    mysql: [Warning] Using a password on the command line interface can be insecure.
  • 验证数据库

    root@mysql:~# mysql 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 16
    Server version: 8.0.36-0ubuntu0.22.04.1 (Ubuntu)
    
    Copyright (c) 2000, 2024, Oracle and/or its affiliates.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    mysql> use zabbix_server
    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
    mysql> show tables;
    +----------------------------+
    | Tables_in_zabbix_server    |
    +----------------------------+
    | acknowledges               |
    | actions                    |
    | alerts                     |
    | auditlog                   |
    | autoreg_host               |
    | conditions                 |
    ....
    mysql> set global log_bin_trust_function_creators = 0;
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    
  • 编辑zabbix-server 服务

    root@zabbix-server:~# grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_server.conf
    LogFile=/var/log/zabbix/zabbix_server.log
    PidFile=/apps/zabbix_server/run/zabbix_server.pid
    SocketDir=/apps/zabbix_server/run
    DBHost=192.168.194.132
    DBName=zabbix_server
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
    Timeout=4
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
  • 启动zabbix server服务

    root@zabbix-server:/apps/zabbix_server# /apps/zabbix_server/sbin/zabbix_server -c /apps/zabbix_server/etc/zabbix_server.conf

3.2.2.2 配置页面

  • 配置web界面

    root@zabbix-server:/apps/zabbix_server#  mkdir /var/www/html/zabbix 
    root@zabbix-server:/apps/zabbix_server# cd /usr/local/src/zabbix-6.0.27/ui/
    root@zabbix-server:/usr/local/src/zabbix-6.0.27/ui# cp -ra * /var/www/html/zabbix
    root@zabbix-server:/usr/local/src/zabbix-6.0.27/ui# chown www-data:www-data -R /var/www/html/zabbix/
  • 访问界面,进去预检测项, 发现会有报错信息。显示如下图。调整参数的文件为:/etc/php/8.1/apache2/php.ini

    image-20240313184538779
    • 需要修改参数

      post_max_size 16M
      max_execution_time 300
      max_input_time 300
    • 重启服务

      root@zabbix-server:/usr/local/src/zabbix-6.0.27/ui# systemctl restart apache2

      注 : 这里发现提示的php缺失的功能php gd的那些功能软件包已经安装,但是还是提示失败。但是修改参数, 重启apache2服务之后, 全部又显示正常。

这里需要注意, 如果没有手动修改/var/www/html/zabbix目录权限, 即运行命令chown www-data:www-data -R /var/www/html/zabbix/ , 会提示如下图所示内容, 这里提示手动下载配置文件, 并将配置文件放置于指定目录中

image-20240313185449957

下面参数是ubuntu1805编译zabbix4时需要的安装包,。

root@zabbix-server:~# apt-get install apache2 apache2-bin apache2-data apache2-utils fontconfig-config fonts-dejavu-core fping libapache2-mod-php libapache2-mod-php7.2 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap libfontconfig1 libgd3 libiksemel3 libjbig0 libjpeg-turbo8 libjpeg8 liblua5.2-0 libodbc1 libopenipmi0 libsensors4 libsnmp-base libsnmp30 libsodium23 libssh2-1 libtiff5 libwebp6 libxpm4 php-bcmath php-common php-gd php-ldap php-mbstring php-mysql php-xml php7.2-bcmath php7.2-cli php7.2-common php7.2-gd php7.2-json php7.2-ldap   php7.2-mbstring php7.2-mysql php7.2-opcache  php7.2-readline php7.2-xml snmpd ssl-cert ttf-dejavu-core libmysqlclient-dev libxml2-dev libxml2 snmp libsnmp-dev libevent-dev openjdk-8-jdk  curl libcurl4-openssl-dev gcc make

3.2.3 centos7, zabbix4

3.2.3.1 安装编译软件

  • 准备环境

    [root@zabbix-server ~]# groupadd -g 1001 zabbix
    [root@zabbix-server ~]# useradd -u 1001 -g 1001 zabbix
    
    #准备软件存放目录
    [root@zabbix-server zabbix-6.0.27]# mkdir -vp /apps/zabbix_server
    mkdir: created directory '/apps'
    mkdir: created directory '/apps/zabbix_server'
    
    #准备日志存放目录
    [root@zabbix-server ~]#mkdir /var/log/zabbix
    [root@zabbix-server ~]#chown  zabbix.zabbix /var/log/zabbix 
    
    #准备软件pid文件存放目录
    [root@zabbix-server ~]# mkdir /apps/zabbix_server/run/
    [root@zabbix-server ~]# chown zabbix.zabbix /apps/zabbix_server/run
  • 解决依赖关系

    [root@zabbix-server ~]# yum install gcc make libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel  OpenIPMI libevent-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel pcre-devel php-json php-gd php-ldap php-mysqlnd php-xml 
  • 安装包上传至服务器中并解压

    [root@zabbix-server ~]# tar -xf zabbix-4.4.10.tar.gz -C /usr/local/src/
    [root@zabbix-server ~]# cd /usr/local/src/zabbix-4.4.10/
  • 编译

    [root@zabbix-server zabbix-4.4.10]# ./configure --prefix=/apps/zabbix_server --enable-server --enable-agent --with-mysql  --with-net-snmp --with-libcurl --with-libxml2 --enable-java --enable-openipmi
    [root@zabbix-server zabbix-4.4.10]#make install 
  • 数据库准备

    [root@mysql ~]# yum install mariadb mariadb-server -y
    [root@mysql ~]# mysql 
    MariaDB [zabbix_server]> create database zabbix_server_make character set utf8 collate utf8_bin; 
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [zabbix_server]> grant all privileges on zabbix_server_make.* to zabbix@"192.168.194.%" identified by 'xiong.zabbix'
        -> ;
    Query OK, 0 rows affected (0.00 sec)
  • 导入数据库数据

    [root@zabbix-server mysql]# pwd
    /usr/local/src/zabbix-4.4.10/database/mysql
    [root@zabbix-server mysql]# ls
    data.sql  images.sql  Makefile  Makefile.am  Makefile.in  schema.sql
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.145 zabbix_server_make < schema.sql 
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.145 zabbix_server_make < images.sql 
    [root@zabbix-server mysql]# mysql -uzabbix -pxiong.zabbix -h192.168.194.145 zabbix_server_make < data.sql 
  • 验证数据库信息

    MariaDB [zabbix_server]> use zabbix_server_make;
    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_server_make]> show tables;
    +------------------------------+
    | Tables_in_zabbix_server_make |
    +------------------------------+
    | acknowledges                 |
    | actions                      |
    | alerts                       |
    | application_discovery        |
    | application_prototype        |
    | application_template         |
  • 编辑zabbix server配置文件

    [root@zabbix-server zabbix-4.4.10]#  grep "^[a-Z]" /apps/zabbix_server/etc/zabbix_server.conf
    LogFile=/var/log/zabbix/zabbix_server.log
    PidFile=/apps/zabbix_server/run/zabbix_server.pid
    SocketDir=/apps/zabbix_server/run
    DBHost=192.168.194.145
    DBName=zabbix_server_make
    DBUser=zabbix
    DBPassword=xiong.zabbix
    DBPort=3306
    Timeout=4
    LogSlowQueries=3000
    StatsAllowedIP=127.0.0.1
  • 启动zabbix server

    [root@zabbix-server php]# /apps/zabbix_server/sbin/zabbix_server -c /apps/zabbix_server/etc/zabbix_server.conf
    /apps/zabbix_server/sbin/zabbix_server -c /apps/zabbix_server/etc/zabbix_server.conf

3.2.3.2 配置页面

  • 配置web页面

    [root@zabbix-server mysql]# mkdir /var/www/html/zabbix
    [root@zabbix-server mysql]# cd /usr/local/src/zabbix-4.4.10/frontends/php/
    [root@zabbix-server php]# cp -ra * /var/www/html/zabbix/
    [root@zabbix-server php]# chown apache:apache -R /var/www/html/zabbix/
  • 直接访问页面,步骤基本和之前一样,这里需要注意, 底层修改php的文件为/etc/php.ini,页面中的时区也是在这个文件中更改。

    后续步骤基本和之前CentOS8编译一致

3.3 页面中文设置

3.3.1 ubuntu软件包安装环境说明

3.3.1.1 页面中文显示

由于ubuntu系统目前未安装中文语言环境所以无法选择中文显示

image-20240313110327554
  • ubuntu系统安装中文语言环境

    #安装简体中文语言环境
    root@zabbix-server:/etc/zabbix# apt-get install language-pack-zh*
    
    #增加中文语言环境变量 
    root@zabbix-server:~# cat /etc/environment 
    PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
    LANG="zh_CN.UTF-8"
    
    #重新设置本地配置
    root@zabbix-server:/etc/zabbix# dpkg-reconfigure locales
    Generating locales (this might take a while)...
      en_US.UTF-8... done
      zh_CN.UTF-8... done
      zh_HK.UTF-8... done
      zh_SG.UTF-8... done
      zh_TW.UTF-8... done
    Generation complete.

    重新设置本地配置会显示如下:

    image-20240312143947237
    image-20240312144023948

    之后直接点击ok即可

  • 验证web页面

    root@zabbix-server:~# systemctl restart apache2
    image-20240312144237406

    选择之后点击update即可

3.3.1.2 监控项与乱码

虽然页面已经设置为中文, 但是监控项里面的部分显示内容还是为乱码

image-20240312144504491

因为需要另外上传字体文件。步骤如下:

  • 在windows的字体中寻找适当的中文显示字体。具体位置控制面板-->外观和个性化-->字体。(另外可以在win+R中直接输入fonts可以进入同样的界面)

    image-20240312144744998

    这里随机选择一个中文字体复制到桌面 , 然后传到zabbix server服务器上面

  • 将字体上传至zabbix web目录中 , 具体路径为/ZABBIX/WEB/PATH/assets/fonts ,如下

    root@zabbix-server:~# ll /usr/share/zabbix/assets/fonts/
    total 9536
    drwxr-xr-x 2 root root    4096 Mar 12 06:53 ./
    drwxr-xr-x 5 root root    4096 Mar 12 05:18 ../
    lrwxrwxrwx 1 root root      38 Mar 12 05:19 graphfont.ttf -> /etc/alternatives/zabbix-frontend-font
    -rw-r--r-- 1 root root 9755440 Mar 12 06:53 simhei.ttf
    
    root@ubuntu2204:~#ll /etc/alternatives/zabbix-frontend-font 
    lrwxrwxrwx   1 root root   47 Mar 12 05:19 /etc/alternatives/zabbix-frontend-font -> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf

    在页面中原本识别的便是graphfont.ttf字体

    这个字体文件为链接文件:usr/share/zabbix/assets/fonts/graphfont.ttf -->/etc/alternatives/zabbix-frontend-font --> /usr/share/fonts/truetype/dejavu/DejaVuSans.ttf

  • 直接将最后的软连接调整为上传的字体即可

    root@zabbix-server:~# ln -sf /usr/share/zabbix/assets/fonts/simhei.ttf /etc/alternatives/zabbix-frontend-font 
  • 调整之后不需要重启服务, 直接访问页面即可

    image-20240312151123072

3.3.2 centos编译环境说明

Centos8安装zabbix6.0时 ,设置语言时发现无法设置简体中文,原因为缺少简体中文语言包。

3.3.2.1 页面中文显示

  • 安装语言包

    [root@zabbix-server ~]# yum install glibc-langpack-zh.x86_64
  • 检测安装的中文语言包

    [root@zabbix-server ~]# localectl list-locales | grep zh
    zh_CN
    zh_CN.gb18030
    zh_CN.gbk
    zh_CN.utf8
    zh_HK
    zh_HK.utf8
    zh_SG
    zh_SG.gbk
    zh_SG.utf8
    zh_TW
    zh_TW.euctw
    zh_TW.utf8
  • 登录zabbix控制台设置语言为简体中文

    image-20240313134442026

如果需要设置系统默认语言为简体中文,可以使用如下命令设置,然后重启操作系统。 localectl set-locale LANG=zh_CN.utf8

3.3.2.2 监控项与乱码

这里与软件包安装一样的原因, 但是由于是编译环境,整体的调整方式和之前不太一样

  • 将从windows中下载的字体上传至服务器中

    [root@zabbix-server ~]# cd /var/www/html/zabbix/assets/fonts/
    [root@zabbix-server fonts]# ls
    DejaVuSans.ttf  simhei.ttf
  • 修改对应文件信息 ,

    [root@zabbix-server fonts]# cd /var/www/html/zabbix/
    [root@zabbix-server zabbix]# grep -nri "DejaVuSans" ./*
    Binary file ./assets/fonts/DejaVuSans.ttf matches
    ./include/defines.inc.php:88:define('ZBX_GRAPH_FONT_NAME',		'DejaVuSans'); // font file name
    ./include/defines.inc.php:134:define('ZBX_FONT_NAME', 'DejaVuSans');
    
    [root@zabbix-server zabbix]# vi ./include/defines.inc.php 
    ...
    #define('ZBX_GRAPH_FONT_NAME',          'DejaVuSans'); // font file name
    define('ZBX_GRAPH_FONT_NAME',           'simhei'); // font file name
    ....
    #define('ZBX_FONT_NAME', 'DejaVuSans');
    define('ZBX_FONT_NAME', 'simhei');
    ...
  • 修改之后直接访问页面即可

3.3.3 centos7 zabbix4.0

这个版本的zabbix页面可以直接设置中文

image-20240313203708229
image-20240313203727010

页面中监控项的乱码调整如下 , 需要现将字体上传至/usr/share/zabbix/assets/fonts/目录下面

[root@centos7 fonts]# pwd
/usr/share/zabbix/assets/fonts
[root@centos7 fonts]# ll
total 0
lrwxrwxrwx 1 root root 33 Mar 14 04:00 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@centos7 fonts]# ll /etc/alternatives/zabbix-web-font 
lrwxrwxrwx 1 root root 38 Mar 14 04:00 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@centos7 fonts]# pwd
/usr/share/zabbix/assets/fonts
[root@centos7 fonts]# ln -sf /usr/share/zabbix/assets/fonts/simhei.ttf /etc/alternatives/zabbix-web-font 

3.4 配置文件

zabbix配置文件有两种 :

  • 服务器端配置文件(/etc/zabbix/zabbix_server.conf)

  • 客户端配置文件(/etc/zabbix/zabbix_agentd.conf)

  • zabbix代理配置文件(/etc/zabbix/zabbix_proxy.conf)

3.4.1 zabbix_server.conf

服务器端配置文件zabbix_server.conf常用配置参数 :

参数

作用

LogFile

设置服务端日志文件存放路径

ListenIP

设置服务端监听IP

ListenPort

设置服务端监听的端口号

PidFile

设置服务端进程号文件存放路径

DBHost

指定zabbix的数据库服务器IP

DBName

指定zabbix使用的数据库库名

DBUser

指定zabbix数据库登录用户

DBPassword

指定zabbix数据库登录密码

DBPort

指定zabbix数据库端口号

User

设置zabbix以什么用户的身份运行

AlertScriptsPath

设置告警脚本存放路径

ExternalScripts

外部脚本存放路径

3.4.2 zabbix_agent.conf

客户端配置文件zabbix_agentd.conf常用配置参数 :

参数

作用

Server

指定zabbix服务器的IP或域名

ServerActive

指定zabbix服务器的IP或域名

Hostname

指定本机的主机名,此项必须与web界面配置项一致

UnsafeUserParameters

是否启用自定义监控项,可选值为

UserParameter

指定自定义监控脚本参数

LogFile

设置客户端日志文件存放路径

4. zabbix 监控入门基础

4.1 监控linux系统

4.1.1 基本配置

  • zabbix agent安装

    root@zabbix-agent:~# wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu2
    root@zabbix-agent:~# dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb 
    root@zabbix-agent:~# apt update
    root@zabbix-agent:~# apt install zabbix-agent
  • zabbix agent配置文件

    root@zabbix-agent:~# cat /etc/zabbix/zabbix_agentd.conf
    #指定zabbix server主机IP
    Server=192.168.194.129
    
    #本地监听端口
    ListenPort=10050
    
    # 被动状态时默认启动的实例数(进程数), 为0 不监听任何端口
    StartAgents=5
    
    #区分大小写,且在zabbix server唯一的值
    Hostname=192.168.194.132
  • 重启zabbix agent

    root@zabbix-agent:~# systemctl restart zabbix-agent
    root@zabbix-agent:~# systemctl status  zabbix-agent
    ● zabbix-agent.service - Zabbix Agent
         Loaded: loaded (/lib/systemd/system/zabbix-agent.service; enabled; vendor preset: enabled)
         Active: active (running) since Tue 2024-03-12 07:26:38 UTC; 10s ago
           Docs: man:zabbix_agentd
       Main PID: 1729 (zabbix_agentd)
          Tasks: 8 (limit: 2196)
         Memory: 3.8M
            CPU: 13ms
         CGroup: /system.slice/zabbix-agent.service
                 ├─1729 /usr/sbin/zabbix_agentd --foreground
                 ├─1730 "/usr/sbin/zabbix_agentd: collector [idle 1 sec]"
                 ├─1731 "/usr/sbin/zabbix_agentd: listener #1 [waiting for connection]"
                 ├─1732 "/usr/sbin/zabbix_agentd: listener #2 [waiting for connection]"
                 ├─1733 "/usr/sbin/zabbix_agentd: listener #3 [waiting for connection]"
                 ├─1734 "/usr/sbin/zabbix_agentd: listener #4 [waiting for connection]"
                 ├─1735 "/usr/sbin/zabbix_agentd: listener #5 [waiting for connection]"
                 └─1736 "/usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]"
    
    Mar 12 07:26:38 ubuntu2204 systemd[1]: Started Zabbix Agent.
    Mar 12 07:26:38 ubuntu2204 zabbix_agentd[1729]: Starting Zabbix Agent [192.168.194.132]. Zabbix 5.0.17 (revision 0a4ac3d>
    Mar 12 07:26:38 ubuntu2204 zabbix_agentd[1729]: Press Ctrl+C to exit.
  • 验证zabbix agent

    验证zabbix agent 进程是否存在、端口是否监听以及日志是否异常

    root@zabbix-agent:~# ps -ef | grep zabbix
    zabbix      1729       1  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd --foreground
    zabbix      1730    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
    zabbix      1731    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
    zabbix      1732    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
    zabbix      1733    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
    zabbix      1734    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #4 [waiting for connection]
    zabbix      1735    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: listener #5 [waiting for connection]
    zabbix      1736    1729  0 07:26 ?        00:00:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
    root        1740    1137  0 07:27 pts/0    00:00:00 grep --color=auto zabbix
    root@zabbix-agent:~# pstree -p 1729
    zabbix_agentd(1729)─┬─zabbix_agentd(1730)
                        ├─zabbix_agentd(1731)
                        ├─zabbix_agentd(1732)
                        ├─zabbix_agentd(1733)
                        ├─zabbix_agentd(1734)
                        ├─zabbix_agentd(1735)
                        └─zabbix_agentd(1736)
    root@zabbix-agent:~# ss -tnl | grep 10050
    LISTEN 0      4096         0.0.0.0:10050      0.0.0.0:*          
    LISTEN 0      4096            [::]:10050         [::]:*          
    root@zabbix-agent:~# tail -n5 /var/log/zabbix-agent//zabbix_agentd.log 
      1733:20240312:072638.791 agent #4 started [listener #3]
      1735:20240312:072638.791 agent #6 started [listener #5]
      1736:20240312:072638.791 agent #7 started [active checks #1]
      1734:20240312:072638.792 agent #5 started [listener #4]
      1736:20240312:072638.792 active check configuration update from [127.0.0.1:10051] started to fail (cannot connect to [[127.0.0.1]:10051]: [111] Connection refused)

4.1.2 zabbix server页面配置

在zabbix server中添加被监控主机

  • 在下面界面中直接点击创建主机

    image-20240312153009408
  • 主机名称需要与zabbix agent中对应, 并添加新的interfaces,群组中如果输入的群组本身不存在, 则直接创建一个新的群组。

    image-20240312153227419

    在zabbix对主机实现监控 , 可以通过添加模板或者添加监控实现对指定的监控目标进行数据采集, 通常采用先创建模板,然后再将模板关联至主机的方式

  • 点击该主机, 重新配置模板 ,之后点击更新。选择符合当前主机的监控项目的模板, 如对Linux系统监控可以关联zabbix自带的Linux by Zabbix agent , 如下在搜索框输入Linux 关键字后会自带匹配名称的模板, 直接点击即可选择

    image-20240312171523628

需要等待几分钟(具体看模板中监控项的数据采集间隔时间)之后 , 主机的状态才会变成绿色或者红色, 绿色表示zabbix server对zabbix agent有权限进行数据采集并且当前通信正常, 红色则表示通信异常, 通信异常会有多种原因。具体可以看相关日志或者到时候点击红色方框会有相关报错显示。

image-20240312172610293

经过一段时间的数据采集后, 验证zabbix server 是否有刚添加的主机的监控数据和图形 , 图形显示如下:

image-20240312172802893

4.2 监控tomcat

4.2.1 介绍

Java虚拟机(JVM)具有内置的插装,使您能够使用JMX监视和管理它。您还可以使用JMX监视工具化的应用程序。

监控原理 : 当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。

1769223-20200221175242637-1015913388

从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于 : 配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等。

4.2.2 Tomcat服务器上安装JDK包

使用Oracle官网的JDK 8的rpm包

官方下载JDK地址 :https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  1. 安装下载下来的JDK 8的rpm包

    [root@tomcat ~]# yum install jdk-8u401-linux-x64.rpm 
  2. 配置java全局变量

    [root@tomcat ~]# cat /etc/profile.d/jdk.sh  #设置环境变量
    export JAVA_HOME=/usr/java/default
    export PATH=$JAVA_HOME/bin:$PATH
    
     
    [root@tomcat ~]# . /etc/profile.d/jdk.sh  # 使环境变量生效
  3. 查看JDK版本

    [root@tomcat ~]# java -version
    java version "1.8.0_401"
    Java(TM) SE Runtime Environment (build 1.8.0_401-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 25.401-b10, mixed mode)

4.2.3 下载安装二进制tomcat包

  1. 从官网下载tomcat二进制安装包 : http://tomcat.apache.org/。

    下载路径 :https://archive.apache.org/dist/tomcat/

    image-20240314123955852
  2. 解包,指定解压的目录,并创建软链接

    [root@tomcat ~]# tar -xf apache-tomcat-10.0.8.tar.gz -C /usr/local/
    [root@tomcat ~]# ln -sv /usr/local/apache-tomcat-10.0.8/ /usr/local/tomcat
    ‘/usr/local/tomcat’ -> ‘/usr/local/apache-tomcat-10.0.8/’
  3. 配置tomcat参数:vim /usr/local/tomcat/bin/catalina.sh

    CATALINA_OPTS="$CATALINA_OPTS
    -Dcom.sun.management.jmxremote  #启用远程监控JMX
    -Dcom.sun.management.jmxremote.port=12345 # 默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
    -Dcom.sun.management.jmxremote.authenticate=false # 不使用用户名密码
    -Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证
    -Djava.rmi.server.hostname=192.168.194.145" #tomcat主机自己的IP地址,不要写zabbix服务器的地址
    image-20240314145209554
  4. 以ROOT身份启动Tomcat服务(不推荐,账号破解后就会被黑客以root身份做其他服务的破坏)

    [root@tomcat ~]# /usr/local/tomcat/bin/catalina.sh start 
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/default
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Using CATALINA_OPTS:    -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.194.145
    Tomcat started.
    
    [root@tomcat ~]# ss -tnlp
    State      Recv-Q Send-Q                                                             Local Address:Port                                                                            Peer Address:Port              
    LISTEN     0      128                                                                            *:22                                                                                         *:*                   users:(("sshd",pid=932,fd=3))
    LISTEN     0      100                                                                    127.0.0.1:25                                                                                         *:*                   users:(("master",pid=1024,fd=13))
    LISTEN     0      50                                                                          [::]:43789                                                                                   [::]:*                   users:(("java",pid=1896,fd=22))
    LISTEN     0      100                                                                         [::]:8080                                                                                    [::]:*                   users:(("java",pid=1896,fd=59))
    LISTEN     0      128                                                                         [::]:22                                                                                      [::]:*                   users:(("sshd",pid=932,fd=4))
    LISTEN     0      50                                                                          [::]:12345                                                                                   [::]:*                   users:(("java",pid=1896,fd=21))
    LISTEN     0      100                                                                        [::1]:25                                                                                      [::]:*                   users:(("master",pid=1024,fd=14))
    LISTEN     0      1                                                             [::ffff:127.0.0.1]:8005                                                                                    [::]:*                   users:(("java",pid=1896,fd=66))
    LISTEN     0      50                                                                          [::]:44550                                                                                   [::]:*                   users:(("java",pid=1896,fd=20))
    
  5. 为了tomcat服务安全起见,最好不要用root用户登录,防止被破解之后存在安全隐患,建议自己新建一个普通用户进行登录 

    [root@tomcat ~]# useradd -r java                                 #创建一个系统账号,此时就没有家目录
    [root@tomcat ~]# chown -R java.java /usr/local/tomcat/           #将tomcat目录下的文件所有者和所属组都进行修改
    [root@tomcat ~]# su - java -c /usr/local/tomcat/bin/startup.sh   #以java用户形式进行启动tomcat服务
    Using CATALINA_BASE:   /usr/local/tomcat
    Using CATALINA_HOME:   /usr/local/tomcat
    Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    Using JRE_HOME:        /usr/java/default
    Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    Using CATALINA_OPTS:   
    Tomcat started.
    image-20240314125234285
  6. 网页验证此时的tomcat服务已经可以访问

    image-20240314125315248
  7. 在oracle jdk download官网下载windows版本的JDK,安装并验证此时tomcat安装结果。

    官网下载地址 :https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

    image-20240314125533170
  8. 在安装好的windows版本的JDK后,打开指定的执行程序jsconsole.exe进行验证 :

    image-20240314145335056

    打开对应jconsole.exe

    image-20240314145456696

    连接进去之后有tomcat服务的信息即可,说明安装正确。

    image-20240314145543376

4.2.4 安装zabbix-java-gateway包

这里单独找一台虚拟机安装zabbix-java-gateway包。

java gateway是一个独立于zabbix server和zabbix agent的组件, 也就是java gateway可以是单独的一台服务器, 但是也可以和zabbix server或者zabbix agent共用一台服务, 前提是单口不要配置冲突了。

本次单独用一台单独的服务器, IP 地址为192.168.194.130

4.2.4.1 软件包安装

  1. 安装对应的rpm包

    [root@java-gateway ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
    Retrieving https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
    warning: /var/tmp/rpm-tmp.xwE22Z: Header V4 RSA/SHA512 Signature, key ID a14fe591: NOKEY
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:zabbix-release-6.0-4.el7         ################################# [100%]
    [root@java-gateway ~]# yum install zabbix-java-gateway
  2. 编辑对应的配置文件 , 主要配置如下,所有配置均保持默认即可。

    [root@java-gateway ~]# grep "^[a-Z]" /etc/zabbix/zabbix_java_gateway.conf 
    LISTEN_IP="0.0.0.0"
    LISTEN_PORT=10052
    PID_FILE="/var/run/zabbix/zabbix_java_gateway.pid"
    START_POLLERS=5
  3. 启动zabbix-java-gateway服务

    [root@java-gateway ~]# systemctl start zabbix-java-gateway
  4. 配置zabbix-server服务。开启java gateway配置

    [root@zabbix-server ~]# vi /apps/zabbix_server/etc/zabbix_server.conf
    JavaGateway=192.168.194.130
    JavaGatewayPort=10052
    StartJavaPollers=20
  5. 在zabbix-server服务器上重启zabbix-server重启服务即可

    [root@zabbix-server ~]# systemctl restart zabbix-server

4.2.4.2 编译安装

  • ubuntu2204

    • 安装依赖包

      root@ubuntu2204:/usr/local/src/zabbix-6.0.27# apt install openjdk-8-jdk gcc make
    • 编译

       ./configure --prefix=/apps/zabbix_server/ --enable-java --with-net-snmp --with-mysql --with-ssh2

  • Centos8

    • 安装依赖包

      [root@centos8 zabbix_java]# yum install gcc make libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmach php-mbstring  mariadb-devel java-1.8.0-openjdk-devel -y

    • 编译

       ./configure --prefix=/apps/zabbix_server/ --enable-java --with-net-snmp --with-mysql --with-ssh2

编译完成之后启动文件在如下位置 , 其中setting.sh为java gateway的配置文件

[root@centos8 zabbix_java]# pwd
/apps/zabbix_server/sbin/zabbix_java
[root@centos8 zabbix_java]# ls
bin  lib  settings.sh  shutdown.sh  startup.sh

systemd启动文件如下

[root@java-gateway ~]# systemctl cat zabbix-java-gateway
# /usr/lib/systemd/system/zabbix-java-gateway.service
[Unit]
Description=Zabbix Java Gateway
After=syslog.target
After=network.target

[Service]
Type=forking
KillMode=process
PIDFile=/run/zabbix/zabbix_java_gateway.pid
ExecStart=/usr/sbin/zabbix_java_gateway_startup
ExecStop=/usr/sbin/zabbix_java_gateway_shutdown
SuccessExitStatus=143
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target

4.2.5 配置zabbix页面

  1. 登录页面之后,在配置中点击创建主机

    image-20240314161951835
  2. 在模板中添加JXM模板

    image-20240314162151864
  3. 添加对应jmx监听端口, 之后点击添加即可

    image-20240314162245341

    如果需要监听agent服务, 需要在tomcat中安装zabbix-agent软件, 配置zabbix-agent,并开启之后。在页面中添加对应的监听端口以及添加模板即可。

  4. 添加完成等对应JMX图标亮起即可

    image-20240314162639686
  5. 在监测中点击查看对应数据。可以看到这里可以正常获取对应数据

    image-20240314162831548
    image-20240314162802479


参考链接

保姆级Zabbix部署教程 , 十分详细 , 收藏! (qq.com)

Zabbix 介绍及部署(超详细讲解) (qq.com)

Zabbix之二----Zabbix监控Tomcat服务 - 一叶知秋~~ - 博客园 (cnblogs.com)