编程

zabbix 安装与部署

1129 2023-04-05 02:05:00

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