百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

Zabbix 6 系列学习 06:编译方式安装

yuyutoo 2024-11-10 13:48 4 浏览 0 评论

接着上篇的 Zabbix Appliance 安装,今天带来的是源码编译的安装方式,本文并不是全源码方式,仅仅是 Zabbix 部分源码安装。

本文环境

  • CentOS 7 2009

关闭 Firewall、Selinux

systemctl stop firwalld && systemctl disable firewalld 
setenforce 0

永久关闭 selinux,需要重启服务器

sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
reboot

安装所需软件,更新系统到最新

yum -y install tar vim wget
yum update -y

下载源码包

cd /tmp 
wget 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 install https://repo.mysql.com//mysql80-community-release-el7-7.noarch.rpm

安装数据库

yum -y install mysql-server

启动数据库

systemctl start mysqld && systemctl enable mysqld

查找数据库密码

cat /etc/var/mysqld.log

可以看到密码为 0fs!KjAe1dMm

初始化数据库

mysql_secure_installation

该步骤仅需要修改密码即可,其他直接回车就可以了

其他回车即可

用新密码登录测试(密码自行设置,下面的密码仅限本文使用)

mysql -uroot -pHuawei@123!

创建 Zabbix 用户及用户组

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix 

创建 Zabbix 目录

mkdir -p /app/zabbix

编译软件

cd /tmp/zabbix-6.0.12
  • prefix 指定安装目录
  • enable-server 启用 Zabbix Server
  • enable-agent2 启用 Zabbix agent2
  • 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 install gcc-c++

报错2,mysql 库文件没有

解决办法

yum -y install mysql-devel

报错03,net-snmp 部分问题

解决办法

yum -y install net-snmp-devel

报错03,libevent 报错

解决办法

yum -y install libevent-devel

报错04,缺少 go 环境(如果是一代 agent,无此问题)

解决办法

yum -y install golang

编译完成

安装

make install


整体安装目录

/app/zabbix
├── bin
│   └── zabbix_js
├── etc
│   ├── 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
│   └── modules
├── sbin
│   ├── zabbix_agent2
│   ├── zabbix_agentd
│   └── zabbix_server
└── share
    ├── man
    │   └── man8
    │       ├── zabbix_agent2.8
    │       └── zabbix_server.8
    └── zabbix
        ├── alertscripts
        └── externalscripts

PHP 部分

Zabbix 6.0 LTS 需要 php 7.2.5 版本以上,需要安装 remi 源支持 php 7.x,官方暂不支持 php 8.x 版本。

yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
yum -y install yum-utils
yum-config-manager --disable 'remi-php*'
yum-config-manager --enable   remi-php74
yum -y install php php-fpm

NGINX 部分

1.安装 Nginx

yum -y install epel-release
yum -y install nginx

2.移动前端文件到 Zabbix 目录

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

3.修改 Zabbix nginx 配置文件

server {
        listen          80;
#        server_name     example.com;

        root    /app/zabbix/ui;

        index   index.php;

        location = /favicon.ico {
                log_not_found   off;
        }

        location / {
                try_files       $uri $uri/ =404;
        }

        location /assets {
                access_log      off;
                expires         10d;
        }

        location ~ /\.ht {
                deny            all;
        }

        location ~ /(api\/|conf[^\.]|include|locale|vendor) {
                deny            all;
                return          404;
        }

        location ~ [^/]\.php(/|$) {
            fastcgi_pass    unix:/run/php-fpm/zabbix.sock;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_index   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;

                include fastcgi_params;
                fastcgi_param   QUERY_STRING    $query_string;
                fastcgi_param   REQUEST_METHOD  $request_method;
                fastcgi_param   CONTENT_TYPE    $content_type;
                fastcgi_param   CONTENT_LENGTH  $content_length;

                fastcgi_intercept_errors        on;
                fastcgi_ignore_client_abort     off;
                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;
        }
} 

4.修改 Nginx 配置文件

vim /etc/nginx/nginx.conf

将端口全部注释掉即可

5.启动 Nginx

systemctl start nginx && systemctl enable nginx

6.打开 php-fpm

systemctl start php-fpm && systemctl enable php-fpm

访问前端

直接访问 IP 地址,发现是 502 报错

查看 Nginx 日志

tail -f /var/log/nginx/error.log

通过日志可以看出,没有 sock 文件,其实很简单,将 fastcgi_pass unix:/run/php-fpm/zabbix.sock 改为 fastcgi_pass 127.0.0.1:9000

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

重启 Nginx 服务

systemctl restart nginx

就可以访问了,直接点击下一步

进入到环境检查界面和包安装基本是天壤之别,由于很多依赖和配置没修改,所以正常,按照警告消息解决就行

依赖安装

yum -y install php-bcmath php-mbstring php-gd php-xml php-mysqlnd

PHP 配置文件调整

vim /etc/php.ini

max_excution_time 时间改为300,原来为30

max_input_time 时间改为300,原来为60

重启 php-fpm 服务

systemctl restart php-fpm

进入到数据库配置界面,还需要配置数据库

创建数据库实例及用户

create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'Huawei@123!';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;

导入 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 用户),下一步

时区与服务名称界面,修改完,下一步

下一步

出现这个问题就是目录权限问题

将该目录拥有者改为 apache,然后点击 back,在点击下一步

chmod 755 /app/zabbix/ui -R

这里大家知道为什么不是 nginx 么?

Zabbix 是一个 PH P应用,Nginx 通过 php-fpm 来执行 PHP 脚本,而 php-fpm 又是以服务的形式在运行,因此猜想是因为执行写入时 php-fpm 使用的用户不是 Nginx

通过 ps -ef | grep php-fpm 查看服务

那么到这里基本就完成了前端的配置,下一步

登录界面

进入首页

此时会发现前端啥也没有,但是依然能进入到前端里,这也就是为什么能够把各组件分开部署。

Zabbix 部分

  • 程序文件路径为 /app/zabbix/sbin/ 下
  • 配置文件路径为 /app/zabbix/etc/ 下

制作 Zabbix server 守护文件

vim /usr/lib/systemd/system/zabbix-server.service
[Unit]
Description=Zabbix Server
After=syslog.target
After=network.target
After=postgresql.service
After=pgbouncer.service
After=postgresql-13.service

[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_server.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-server
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_server.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_server -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0

[Install]
WantedBy=multi-user.target 

制作 Zabbix agent2 守护文件

vim /usr/lib/systemd/system/zabbix-agent2.service
[Unit]
Description=Zabbix Agent 2
After=syslog.target
After=network.target

[Service]
Environment="CONFFILE=/app/zabbix/etc/zabbix_agent2.conf"
EnvironmentFile=-/etc/sysconfig/zabbix_agent2
Type=simple
Restart=on-failure
PIDFile=/run/zabbix/zabbix_agent2.pid
KillMode=control-group
ExecStart=/app/zabbix/sbin/zabbix_agent2 -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix

[Install]
WantedBy=multi-user.target 

修改 Zabbix 配置文件

和包安装一样,需要修改数据库部分配置

vim /app/zabbix/etc/zabbix_server.conf 

启动相关组件

systemctl restart zabbix-server zabbix-agent2

首页恢复正常

附录

编译安装没有修改任何参数的情况下,pid 文件,sock 文件以及日志都在 /tmp 目录下,如需要调整请修改 Zabbix 配置文件

最后

本文篇幅较长,如果是完全编译的话更费劲,当然针对一些完全没有外网的朋友相对来说更加的麻烦,有空我会出一个完全离线编译的版本,欢迎大家关注后续的文章哦,谢谢!

相关推荐

Mysql和Oracle实现序列自增(oracle创建序列的sql)

Mysql和Oracle实现序列自增/*ORACLE设置自增序列oracle本身不支持如mysql的AUTO_INCREMENT自增方式,我们可以用序列加触发器的形式实现,假如有一个表T_WORKM...

关于Oracle数据库12c 新特性总结(oracle数据库19c与12c)

概述今天主要简单介绍一下Oracle12c的一些新特性,仅供参考。参考:http://docs.oracle.com/database/121/NEWFT/chapter12102.htm#NEWFT...

MySQL CREATE TABLE 简单设计模板交流

推荐用MySQL8.0(2018/4/19发布,开发者说同比5.7快2倍)或同类型以上版本....

mysql学习9:创建数据库(mysql5.5创建数据库)

前言:我也是在学习过程中,不对的地方请谅解showdatabases;#查看数据库表createdatabasename...

MySQL面试题-CREATE TABLE AS 与CREATE TABLE LIKE的区别

执行"CREATETABLE新表ASSELECT*FROM原表;"后,新表与原表的字段一致,但主键、索引不会复制到新表,会把原表的表记录复制到新表。...

Nike Dunk High Volt 和 Bright Spruce 预计将于 12 月推出

在街上看到的PandaDunk的超载可能让一些球鞋迷们望而却步,但Dunk的浪潮仍然强劲,看不到尽头。我们看到的很多版本都是为女性和儿童制作的,这种新配色为后者引入了一种令人耳目一新的新选择,而...

美国多功能舰载雷达及美国海军舰载多功能雷达系统技术介绍

多功能雷达AN/SPY-1的特性和技术能力,该雷达已经在美国海军服役了30多年,其修改-AN/SPY-1A、AN/SPY-1B(V)、AN/SPY-1D、AN/SPY-1D(V),以及雷神...

汽车音响怎么玩,安装技术知识(汽车音响怎么玩,安装技术知识视频)

全面分析汽车音响使用或安装技术常识一:主机是大多数人最熟习的音响器材,有关主机的各种性能及规格,也是耳熟能详的事,以下是一些在使用或安装时,比较需要注意的事项:LOUDNESS:几年前的主机,此按...

【推荐】ProAc Response系列扬声器逐个看

有考牌(公认好声音)扬声器之称ProAcTablette小音箱,相信不少音响发烧友都曾经,或者现在依然持有,正当大家逐渐掌握Tablette的摆位设定与器材配搭之后,下一步就会考虑升级至表现更全...

#本站首晒# 漂洋过海来看你 — BLACK&DECKER 百得 BDH2000L无绳吸尘器 开箱

作者:初吻给了烟sco混迹张大妈时日不短了,手没少剁。家里有了汪星人,吸尘器使用频率相当高,偶尔零星打扫用卧式的实在麻烦(汪星人:你这分明是找借口,我掉毛是满屋子都有,铲屎君都是用卧式满屋子吸的,你...

专题|一个品牌一件产品(英国篇)之Quested(罗杰之声)

Quested(罗杰之声)代表产品:Q212FS品牌介绍Quested(罗杰之声)是录音监听领域的传奇品牌,由英国录音师RogerQuested于1985年创立。在成立Quested之前,Roger...

常用半导体中英对照表(建议收藏)(半导体英文术语)

作为一个源自国外的技术,半导体产业涉及许多英文术语。加之从业者很多都有海外经历或习惯于用英文表达相关技术和工艺节点,这就导致许多英文术语翻译成中文后,仍有不少人照应不上或不知如何翻译。为此,我们整理了...

Fyne Audio F502SP 2.5音路低音反射式落地音箱评测

FyneAudio的F500系列,有新成员了!不过,新成员不是新的款式,却是根据原有款式提出特别版。特别版产品在原有型号后标注了SP字样,意思是SpecialProduction。Fyne一共推出...

有哪些免费的内存数据库(In-Memory Database)

以下是一些常见的免费的内存数据库:1.Redis:Redis是一个开源的内存数据库,它支持多种数据结构,如字符串、哈希表、列表、集合和有序集合。Redis提供了快速的读写操作,并且支持持久化数据到磁...

RazorSQL Mac版(SQL数据库查询工具)

RazorSQLMac特别版是一款看似简单实则功能非常出色的SQL数据库查询、编辑、浏览和管理工具。RazorSQLformac特别版可以帮你管理多个数据库,支持主流的30多种数据库,包括Ca...

取消回复欢迎 发表评论: