文章引导
前言
Zabbix与Prometheus对比
结构体系
工作模式
环境准备
部署
添加主机
前言
Zabbix 是一款监控网络的众多参数以及服务器、虚拟机、应用程序、服务、数据库、网站、云等的健康和完整性的软件。Zabbix 使用灵活的通知机制,允许用户为几乎任何事件配置基于电子邮件的告警,以实现对服务器问题做出快速反应。Zabbix 基于存储的数据提供出色的报告和数据可视化功能
Zabbix与Prometheus对比
- 对于传统监控系统中,尤其是服务器相关指标监控方面,比Prometheus占据绝对优势
- 云环境容器场景,这需要zabbix的定制对于使用者较高的技术,推荐容器方面监控是Prometheus
- 如果对于新上线监控系统请使用Prometheus,不要选择zabbix
- zabbix最多支持10000个节点,而Prometheus以万为单位
结构体系
Server
Zabbix server 是 agents 向其报告可用性和完整性信息和统计信息的中心组件。server 是存储所有配置、统计和操作数据的中央存储库。
数据存储
Zabbix 收集的所有配置信息以及数据都存储在数据库中。
Web 界面
为了从任何地方和任何平台轻松访问,Zabbix 提供了基于 Web 的界面。该接口是 Zabbix server 的一部分,通常(但不一定)与 server 运行在同一台设备上。
Proxy
Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据。proxy 是 Zabbix 部署的可选部分;但是对于分散单个 Zabbix server 的负载非常有用。
Agent
Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix server。从 Zabbix 4.4 开始,有两种类型的 agent 可用:Zabbix agent (轻量级,在许多平台上支持,用 C 编写)和 Zabbix agent 2 (非常灵活,易于使用插件扩展,用 Go 编写)。
工作模式
主动模式(比较节约Zabbix-Server的资源,不需要Server主动去发现)
Agent(每隔一段时间)主动向Zabbix-Server(查询需要发送给Agent的数据)请求对应的配置的监控项,然后把对应的监控数据发送给Server,如果部署了proxy,那么就发送给proxy
推荐主机在500台以上
被动模式
Zabbix-Server向Agent(需要Agent打开一个端口,默认为10050)发送想获取监控数据请求,Agent收到请求后,把对应的数据发送并响应给Server
主机在500台以下使用
环境准备
CPU架构 | 系统版本 | Zabbix版本 |
---|---|---|
x86_64 | CentOS 7.8 | 6.4 |
部署
- 安装mysql8.0因为Zabbix的6.4版本需要mysql8.0以上的版本
点击下面No thanks进行下载
移动到zabbix服务器当中,进行解压
[root@k8s-master ~]# tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
##不检测依赖进行全部安装
[root@k8s-master ~]# rpm -ivh *.rpm --nodeps --force
##初始化配置
[root@k8s-master ~]# mysqld --initialize
##更改文件权限,不然会导致权限不够
[root@k8s-master ~]# chown mysql:mysql /var/lib/mysql -R
##启动mysql,开机自启
[root@k8s-master ~]# systemctl start mysqld && systemctl enable mysqld
##查看随机root用户密码
[root@k8s-master ~]# cat /var/log/mysqld.log | grep password
2023-08-14T07:46:14.842037Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: -tMDk1n(AjsF
##登录mysql,修改密码为root
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.00 sec)
##新建数据库 zabbix
mysql> CREATE DATABASE zabbix
- 安装zabbix-server,因为server不知道在centos7上直接使用yum快速安装了,这里需要使用源码进行编译安装
##下载源码包
[root@k8s-master ~]# wget https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.5.tar.gz
--2023-08-14 15:14:15-- https://cdn.zabbix.com/zabbix/sources/stable/6.4/zabbix-6.4.5.tar.gz
正在解析主机 cdn.zabbix.com (cdn.zabbix.com)... 104.26.6.148, 104.26.7.148, 172.67.69.4, ...
正在连接 cdn.zabbix.com (cdn.zabbix.com)|104.26.6.148|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:43464868 (41M) [application/octet-stream]
正在保存至: “zabbix-6.4.5.tar.gz”
100%[====================================================>] 43,464,868 5.11MB/s 用时 13s
2023-08-14 15:14:30 (3.14 MB/s) - 已保存 “zabbix-6.4.5.tar.gz” [43464868/43464868])
##编译安装
[root@k8s-master ~]# tar -zxvf zabbix-6.4.5.tar.gz
##创建用户和用户组
[root@k8s-master ~]# groupadd --system zabbix
[root@k8s-master ~]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix
##进入zabbix目录进行编译,编译前先安装gcc* make make,如遇到依赖问题请使用yum安装
[root@k8s-master zabbix-6.4.5]# ./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
.......省略
Configuration file: /usr/local/etc/zabbix_server.conf
External scripts: /usr/local/share/zabbix/externalscripts
Alert scripts: /usr/local/share/zabbix/alertscripts
Modules: /usr/local/lib/modules
Enable proxy: no
Enable agent: yes
Agent details:
TLS: no
Modbus: no
Linker flags: -rdynamic
Libraries: -lz -lpthread -lcurl -lpthread -lm -ldl -lresolv -lpcre
Configuration file: /usr/local/etc/zabbix_agentd.conf
Modules: /usr/local/lib/modules
Enable agent 2: no
Enable web service: no
Enable Java gateway: no
LDAP support: no
IPv6 support: yes
cmocka support: no
yaml support: no
***********************************************************
* Now run 'make install' *
* *
* Thank you for using Zabbix! *
* <http://www.zabbix.com> *
***********************************************************
##按照提示执行,只要没有报错就执行成功了
[root@k8s-master zabbix-6.4.5]# make install
- 安装zabbix-agent
##在线安装下载源
[root@k8s-master ~]# rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/6.4/rhel/7/x86_64/zabbix-release-6.4-1.el7.noarch.rpm?spm=a2c6h.25603864.0.0.24b711b1CUUJwT
获取https://mirrors.aliyun.com/zabbix/zabbix/6.4/rhel/7/x86_64/zabbix-release-6.4-1.el7.noarch.rpm?spm=a2c6h.25603864.0.0.24b711b1CUUJwT
警告:/var/tmp/rpm-tmp.Y2lgA7: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-6.4-1.el7 ################################# [100%]
##安装成功后会在yum源仓库多出来一个zabbix.repo文件
[root@k8s-master ~]# cd /etc/yum.repos.d/
[root@k8s-master yum.repos.d]# ls
CentOS-Base.repo CentOS-fasttrack.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-Media.repo CentOS-x86_64-kernel.repo
CentOS-Debuginfo.repo CentOS-Sources.repo zabbix.repo
##使用sed命令把yum源改为阿里云源这样下载快一些
[root@k8s-master yum.repos.d]# sed -i 's#https://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
##清空缓存,下载zabbix-agent
[root@k8s-master yum.repos.d]# yum clean all && yum makecache
[root@k8s-master yum.repos.d]# yum -y install zabbix-agent2
- 安装PHP
[root@k8s-master ~]# yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpm
[root@k8s-master ~]# yum -y install yum-utils epel-release
[root@k8s-master ~]# yum-config-manager --disable 'remi-php*'
[root@k8s-master ~]# yum-config-manager --enable remi-php74
[root@k8s-master ~]# yum -y install php php-bcmath php-gd php-xml php-mbstring php-mysqlnd php-ldap
[root@k8s-master ~]# yum -y install libxml2 libxml2-devel
##查看版本
[root@localhost ~]# php -v
PHP 7.4.33 (cli) (built: Jun 6 2023 16:33:05) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
##对PHP进行简单的优化配置,修改成以下参数就行
[root@k8s-master ~]# vim /etc/php.ini
max_execution_time = 300
post_max_size = 16M
max_input_time = 300
- 安装web界面,zabbix的源码包里面包含了前端web页面。
[root@k8s-master ~]# yum -y install httpd
[root@k8s-master ~]# cp -r zabbix-6.4.5/ui/* /var/www/html/
##把文件权限改为apache不然会权限错误
- 导入数据结构和数据
##找到mysql的数据库文件
[root@k8s-master mysql]# pwd
/root/zabbix-6.4.5/database/mysql
##导入文件,输入root密码
[root@k8s-master mysql]# mysql -uroot -p zabbix < schema.sql
Enter password:
[root@k8s-master mysql]# mysql -uroot -p zabbix < images.sql
Enter password:
[root@k8s-master mysql]# mysql -uroot -p zabbix < data.sql
Enter password:
##修改server的数据库密码
[root@k8s-master mysql]# cd /usr/local/etc/
[root@k8s-master etc]# vim zabbix_server.conf
DBHost=127.0.0.1
DBName=zabbix
DBUser=root
DBPassword=root
- 启动server
[root@k8s-master etc]# systemctl start httpd
[root@k8s-master etc]# zabbix_server
[root@k8s-master zabbix]# systemctl restart zabbix-agent2.service
- 进入界面安装
默认的账号密码为:Admin/zabbix
添加主机
主动式
- 安装agent并启动
##安装agent2的rpm包,下载地址为 https://mirrors.aliyun.com/zabbix/zabbix/6.4/rhel/7/x86_64/
[root@k8s-node1 ~]# rpm -ivh zabbix-agent2-6.4.0-release1.el7.x86_64.rpm
警告:zabbix-agent2-6.4.0-release1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-agent2-6.4.0-release1.el7 ################################# [100%]
##修改配置
[root@k8s-node1 ~]# vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.27.101 # 服务器IP
ServerActive=192.168.27.101 #修改服务器IP
Hostname=k8s-node1 # 修改客户端主机名
##启动并自动启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
##是否启动成功
[root@k8s-node1 ~]# netstat -antp | grep 10050
tcp6 0 0 :::10050 :::* LISTEN 54344/zabbix_agent2
- web界面添加agent主机
被动式
- 安装agent并启动
##安装agent2的rpm包,下载地址为 https://mirrors.aliyun.com/zabbix/zabbix/6.4/rhel/7/x86_64/
[root@k8s-node1 ~]# rpm -ivh zabbix-agent2-6.4.0-release1.el7.x86_64.rpm
警告:zabbix-agent2-6.4.0-release1.el7.x86_64.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-agent2-6.4.0-release1.el7 ################################# [100%]
##修改配置
[root@k8s-node1 ~]# vim /etc/zabbix/zabbix_agent2.conf
#Server=192.168.27.101 # 把这个注释掉 就为主动模式
ServerActive=192.168.27.101
Hostname=k8s-node1 # 修改客户端主机名
##启动并自动启动
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent2.service to /usr/lib/systemd/system/zabbix-agent2.service.
##没有端口代表主动模式成功
[root@k8s-node1 ~]# netstat -antp | grep 10050
-
添加主动模板,全克隆Linux by Zabbix agent active模板
-
改一个记得住的名字,并点击添加
把模板搜索出来,点击监控项
依次选择点击,把类型改为主动式,点击应用,然后看得到下方都变为主动式了
-
添加一个主机,填入主机名和刚才创建的模板,然后点击确定
-
等待一会验证