一.zabbix简介
zabbix([`zæbiks])是一个基于WEB界面,提供分布式系统监控的企业级的开源解决方案。
二.服务管理
163邮件、钉钉、企业微信、手机电话、zCate等方式通知
三.监控指标
- 系统监控
linux、windows、vmware、exsi - 硬件监控
snmp、http监控 - 网络监控
snmp监控h3c交换机、cisco交换机、ping延迟丢包率 - 应用监控
redis、mysql8、nginx、mongo、k8s、docker、java应用 - 业务监控
web监控
四.zabbix功能组件
- zabbix server
1.zabbix服务端守护进程,是zabbix软件的核心组件,zabbix agent向其报告可用性、系统完整性信息和统计信息。
2.zabbix server也是存储所有配置信息、统计信息和操作信息的核心存储库。
3.zabbix server也是zabbix监控系统的告警中心。在监控的系统中出现任何异常,将发出通知给管理员。
- zabbix agent
客户端守护进程,部署在被监控目标上,用于主动监控本地资源和应用程序,并将收集的数据发送给zabbix server。从zabbix5.0开始支技zabbix agent2 。
- zabbix proxy
1.zabbix分布式代理守护进程,可以代替zabbix server采集性能和可用性数据。zabbix proxy在zabbix的部署是可选部分。
2.zabbix proxy的部署可以很好的分担单个zabbix server的负载。
3.通常监控大于500台主机时使用,需要进行分布式监控架构部署。
五.zabbix安装要求
- 硬件
- 支持的操作系统
- 数据库
- 前端
六.zabbix 6.0新特性
- 开箱即用的Zabbix Server高可用集群
- k8s监控,可以监控其各个组件
- 可视化数据的新方法
- 新增模板和集成
七.环境搭建
- Windows安装虚拟机(VMWare或者VirutalBox)
- VirutalBox安装CentOS 8
阿里云镜像地址 - 安装Xshell
- 安装MYSQL 8.0
1.检查系统是否已安装MySQL相关,如果有则全部清除干净
#列出MySQL相关的安装包
rpm -qa | grep mysql
#依次删除安装包
yum remove xxx
2.安装centos8下MySQL8的yum源
mkdir /usr/local/mysql8/
cd /usr/local/mysql8/
#下载源
wget https://dev.mysql.com/get/mysql80-community-release-el
8-4.noarch.rpm
#安装源
sudo yum install mysql80-community-release-el8-4.noarch.rpm
#安装时报错找不到镜像列表url
Error: Failed to download metadata for repo 'appstream':
Cannot prepare internal mirrorlist: No URLs in mirrorlist
无法下载repo 'appstream' 的元数据:无法准备内部镜像列表:镜像列表中没有URL
解决办法:执行dnf --disablerepo '*' --enablerepo=extras swap
centos-linux-repos centos-stream-repos命令从CentOS 8迁移
到CentOS Stream 8,然后继续安装源
#检查
yum repolist enabled | grep "mysql.*-community.*"
3.关闭默认的MYSQL
yum module disable mysql -y
4.安装MYSQL(与MariaDB二选一)
#安装
yum install mysql-community-server -y
#修改配置(可选)
vim /etc/my.cnf
wait_timeout=32000
slow_query_log = ON
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
init_connect='SET NAMES utf8mb4'
max_connections=1000
5.启动MySQL服务,查看运行状态
#设置开机启动
systemctl enable mysqld
systemctl daemon-reload
#启动mysql服务
systemctl start mysqld
#查看mysql运行状态
systemctl status mysqld
6.查找初始密码并登录修改密码
#查找初始密码
grep 'temporary password' /var/log/mysqld.log
#通过初始密码登录
mysql -uroot -p
#修改成自己的密码,这里设置密码为Zabbix6_root
ALTER USER 'root'@'localhost' IDENTIFIED BY '自己的密码';
#刷新权限
flush privileges;
#退出MySQL命令行
exit;
#bash下重启MySQL服务
systemctl restart mysqld;
7.配置root远程登录
如果远程登录连接失败,请先检查系统云服务商(例如阿里云,腾讯云,华为云)控制台上
的防火墙配置,一般不需要配置系统本身的防火墙
#登录mysql
mysql -uroot -p
#切换到mysql数据库
use mysql;
#让root可以通过任意IP登录
update user set host='%' where user='root';
#刷新权限
flush privileges;
#退出MySQL命令行
exit;
#bash下重启MySQL服务
systemctl restart mysqld;
- 安装zabbix
1.下载镜像
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/
zabbix- release-6.0-4.el8.noarch.rpm
dnf clean all
2.安装zabbix server、web前端、agent
dnf install zabbix-server-mysql zabbix-web-mysql
zabbix-apache-conf zabbix-sql-scripts zabbix-selinux-policy
zabbix-agent
参数解释
zabbix-server-mysql:必须安装,zabbix server mysql版,核心程序
zabbix-web-mysql:必须安装,zabbix前端环境
zabbix-apache-conf:必须安装,apache和nginx二选一
zabbix-sql-scripts:必须安装,数据库sql脚本,初始化数据库
zabbix-selinux-policy:非必须安装,zabbix selinux部分,允许zabbix创建和使
用套接字并启用与PostgreSQL的httpd 连接(由前端使用)使zabbix组件开箱即用
zabbix-agent:必须安装,zabbix客户端
3.创建初始数据库,这里设置zabbix用户密码为Zabbix_123456
mysql> mysql -uroot -p;
mysql> create database zabbix character set utf8mb4
collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by '密码';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;
4.导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz |
mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
5.为zabbix server配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=password
6.启动zabbix server进程和agent
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable zabbix-server zabbix-agent httpd php-fpm
systemctl status zabbix-server zabbix-agent httpd php-fpm
#启动zabbix-server报错:cannot use database "zabbix": its "users"
#table is empty (is this the Zabbix proxy database?)
解决办法:zabbix库users表缺少数据,删除zabbix库,重新创建数据库、用户、执行
建库、建表脚本
删除用户:drop user 'zabbix'@'localhost';
删除数据库:drop database zabbix;
- 防火墙开发端口
# 关闭selinux
查看 getenforce
enforcing(执行模式)、permissive(宽容模式)、disabled(禁用模式)
临时 setenforce 0
永久 /etc/selinux/config
SELINUX=disabled
# 允许访问zabbix-agent10050、10051端口、apache 80端口
firewall-cmd --zone=public --add-port=10050/tcp --permanent
firewall-cmd --zone=public --add-port=10050/udp --permanent
firewall-cmd --zone=public --add-port=10051/tcp --permanent
firewall-cmd --zone=public --add-port=10051/udp --permanent
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重启防火墙
systemctl restart firewalld
八.配置zabbix server前端
- 浏览器打开zabbix前端(这里ip是192.168.56.108)
apache:http://192.168.56.108/zabbix
nginx:http://192.168.56.108/
-
设置语言
-
配置DB连接
-
settings设置主机名称、时区
-
安装前信息汇总确认
-
确定完成配置
-
登录服务器
http://192.168.56.108/zabbix/index.php
用户名:Admin,密码:zabbix
八.zabbix-agent配置
-
修改配置文件
-
在zabbix server web界面添加主机
-
检查数据
点击查看最新数据、图形、仪表盘
九.常见问题汇总
- zabbix server日志查看
#到zabbix-server日志目录
cd /var/log/zabbix
#查看最新日志
tail -f -n 200 zabbix_server.log
- zabbix界面配置连接不上数据库
Access denied for user 'zabbix'@'192.168.56.108' (using password: YES)
# 解决办法:开启远程连接
mysql> use mysql;
mysql> update user set host='%' where user='zabbix';
mysql> flush privileges;
mysql> quit;
[root@localhost zabbix]# systemctl restart mysqld;
- The server requested authentication method unknown to the client
# 解决办法:修改mysql账号密码解锁机制,php7不支持caching_sha2_password
# mysql8以上密码加锁方式为:caching_sha2_password
mysql> show variables like '%default_authentication_plugin%';
# 修改zabbix账号密码加锁方式为mysql_native_password
mysql> use mysql;
mysql> ALTER USER 'zabbix'@'%' IDENTIFIED WITH mysql_native_password
BY 'Zabbix_123456';
mysql> flush privileges;
mysql> quit;
[root@localhost zabbix]# systemctl restart mysqld;
- zabbix点击主机查看图形中文乱码问题解决
- zabbix点击主机查看图形时区问题解决
#修改时区为上海时区
[root@localhost zabbix]# sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/1ocaltime
#查看时区
[root@localhost zabbix]# date -R
Wed, 20 Sep 2023 04:56:29 -0400