编程

zabbix 安装与部署

1658 2023-04-05 02:05:00

Zabbix 的安装部署非常简单,官方提供了 4 种安装途径,分别是二进制 RPM 包安装方式、源码安装方式、容器安装方式和虚拟机镜像安装方式。根据学习方式和运维经验,这里推荐大家用源码方式安装 Zabbix server,而通过 RPM 包方式安装Zabbix agent。Zabbix Web 端是基于 Apache 或 Nginx 服务器和 PHP 脚本语言进行构建的,要求 Apache1.3.12 或以上版本,PHP 5.4.0 或以上版本,同时对 PHP 扩展包也有要求,例如,GD 要求 2.0 或以上版本,LibXML 要求 2.6.15 或以上版本。Zabbix 的数据存储支持多种数据库,可以是 MySQL、Oracle、PostgreSQL、SQLite等,这里选择 MySQL 数据库作为后端存储。Zabbix 要求 MySQL 5.0.3 或以上版本,同时需要 InnoDB 引擎。

编译安装 Zabbix server

安装 Zabbix server 之前,需要安装一些系统必需的依赖库和插件,这些依赖可通过 yum 在线安装,执行如下命令:

yum -y install net-snmp net-snmp-devel curl curl-devel libxml2 lib-event lib-event-devel

接着,创建一个普通用户,用于启动 Zabbix 的守护进程

groupadd zabbix
useradd -g zabbix zabbix

下面正式进入编译安装 Zabbix server 的过程,这里使用的 Zabbix 版本是 Zabbix-4.2.7,读者可以从 https://www.zabbix.com/download 下载需要的版本。使用源码编译安装,操作过程如下:

 tar zxvf zabbix-4.2.7.tar.gz
 cd zabbix-4.2.7
 ./config --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
 make && make install

下面解释一下 configure 的一些配置参数含义。

➢ --with-mysql:表示启用 MySQL 作为后端存储,如果 MySQL 客户端类库不在默认的位置(RPM 包方式安装的 MySQL,MySQL 客户端类库在默认位置,因此只需指定 --with-mysql 即可,无须指定具体路径),需要在 MySQL 的配置文件中指定路径。指定方法是指定 mysql_config 的路径,例如,如果是源码安装的 MySQL,安装路径为 /usr/local/mysql,就可以指定 --with-mysql=/usr/local/mysql/bin/mysql_config

➢ --with-net-snmp:用于支持 SNMP 监控所需要的组件。

➢ --with-libcurl:用于支持 Web 监控,VMware 监控及 SMTP 认证所需要的组件,对于 SMTP 认证,需要 7.20.0 或以上版本。

➢ --with-libxml2:用于支持 VMware 监控所需要的组件。

另外,编译参数中,--enable-server--enable-agent--enable-proxy 分别表示启用 Zabbix 的 server、agent 和 proxy 组件。

由于 Zabbix 启动脚本路径默认指向的是 /usr/local/sbin 路径,而 Zabbix 的安装路径是 /usr/local/zabbix,因此,需要提前创建如下软链接:

ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/

创建数据库和初始化表

对于 Zabbix server 和 proxy 守护进程以及 Zabbix 前端,都需要连接到一个数据库。Zabbix agent 不需要数据库的支持。因此,需要先创建一个用户和数据库,并导入数据库对应的表。先登录数据库,创建一个 Zabbix 数据库和 Zabbix 用户,操作如下:

>mysql: create database mysql character set utf8 collate utf8_bin;
>mysql: grant all priviledges on zabbix.* to zabbix@localhost identified by 'zabbix';
>mysql: flush priviledges;

接下来开始导入 Zabbix 的表信息,需要执行 3 个 SQL 文件,SQL 文件在 Zabbix 源码包中 database/mysql/ 目录下。先进入这个 MySQL 目录,然后进入 SQL 命令行,按照如下 SQL 语句执行顺序导入 SQL,执行如下操作:

>mysql: use zabbix;
>mysql: source schema.sql
>mysql: source image.sql
>mysql: source data.sql

配置 Zabbix server 端

Zabbix 的安装路径为 /usr/local/zabbix,那么 Zabbix 的配置文件位于 /usr/local/zabbix/etc 目录下,zabbix_server.conf 就是 Zabbix server 的配置文件,

打开此文件,修改如下几个配置项:

ListenPort=10015
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=localhost
DBUser=zabbix
DBPassword=zabbix
ListenIP=0.0.0.0
StartPollers=5
StartTrappers=10
StartDiscoverers=10
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

其中,每个选项含义介绍如下。

➢ ListenPort:Zabbix server 默认的监听端口。

➢ LogFile:用来指定 Zabbix server 日志的输出路径。

➢ DBHost:为数据库的地址,如果数据库在本机,可不做修改。

➢ DBName:为数据库名称。

➢ DBUser:为连接数据库的用户名。

➢ DBPassword:为连接数据库对应的用户密码。

➢ ListenIP:为 Zabbix server 监听的 IP 地址,也就是 Zabbix server 启动的监听端口对哪些 IP 开放。agentd 为主动模式时,这个值建议设置为 0.0.0.0。

➢ StartPollers:用于设置 Zabbix serve 服务启动时启动 Pollers(主动收集数据进程)的数量。数量越多,则服务端吞吐能力越强,同时对系统资源消耗越大。

➢ StartTrappers:用于设置 Zabbix server 服务启动时启动 Trappers(负责处理 agentd 推送过来的数据的进程)的数量。agentd 为主动模式时,Zabbix Server 需要将这个值设置得大一些。

➢ StartDiscoverers:用于设置 Zabbix server 服务启动时启动 Discoverers 进程的数量。如果 Zabbix 监控报 Discoverers 进程忙时,需要提高该值。

➢ AlertScriptsPath:用来配置 Zabbix server 运行脚本存放目录,一些供 Zabbix server 使用的脚本,都可以放在这里。

接着,还需要添加管理维护 Zabbix 的脚本并启动服务。可从 Zabbix 源码包 misc/init.d/fedora/core/ 目录中找到zabbix_server 和 zabbix_agentd 管理脚本,然后复制到 /etc/init.d 目录下,操作如下:

cp /app/zabbix-2.4./misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
cp /app/zabbix-2.4./misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
chmod +x /etc/init.d/zabbix_server
chmod +x /etc/init.d/zabbix_agentd
chkconfig zabbix_server on
chkconfig zabbix_agentd on

上面操作中 /app 目录是存放 Zabbix-4.2.7 源码的目录。上面操作执行完毕后,就可以直接启动 Zabbix server 服务了,命令如下:

/etc/init.d/zabbix_server start

Zabbix server 可能会启动失败,抛出如下错误:

Starting Zabbix Server: /usr/local/zabbix/sbin/zabbix_server: error while loading shared libraries: libmysqlclint.so.16: cannot open shared object file: No subject or directory

其中,/usr/local/mysql 是 MySQL 的安装路径。执行如下操作,即可正常启动 Zabbix server:

ldconfig
/etc/init.d/zabbix_server start