一、zabbix 简介
Zabbix官网地址为:Zabbix:企业级开源监控解决方案
Web界面效果图
1、什么是zabbix?
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix支持监控各种系统平台,包括Linux和Windows等主流操作系统,也可以借助SNMP或者是SSH协议监控路由交换设备。
Zabbix由两个部分构成,zabbix server与可选组件zabbix agent。
Zabbix Server端
zabbix server是zabbix的核心组件,server内部存储了所有的配置信息、统计信息和操作信息。zabbix agent会向zabbix server报告可用性、完整性及其他统计信息。
Agent(Zabbix client端)
zabbix agent通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给zabbix server。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X等平台上。
2、zabbix的功能
①数据收集
具有可用性和性能检查功能
支持SNMP(捕获和轮询)
②数据存储
可以存储历史数据
可以存储配置数据
可以存储监控数据
③灵活的阈值定义
用户可以非常灵活地定义监控阈值,zabbix也称触发器
④可配置的报警
可以配置多种报警媒介,如:邮件,短信,微信等。
⑤实时的可视化图形展示
使用自带的图形工具,实时展示被监控的对象
具有多种web可视化功能选择
3、zabbix的工作原理
zabbix agent 安装在被监控的主机上,负责收集需要的各项数据,并将数据发送到zabbix server端,zabbix server将传递过来的数据存储到数据库中,zabbix web端根据数据来展示和绘图。
zabbix agent收集数据有主动和被动两种方式。
主动方式:Agent端请求server端获取主动的监控项列表,然后主动将监控项内需要检测的数据提交给Server端。
被动模式:Server端主动向Agent端请求获取监控项数据,Agent端返回所需的数据
详细介绍请查看官网:官网链接:Zabbix功能点概览
二、Zabbix的进程介绍
在默认的情况下,zabbix有6个工作进程;分别是 zabbix_agentd,zabbix_get,zabbix_proxy,zabbix_sender,zabbix_server 和 zabbix_gateway。
这6个进程的作用如下:
1、zabbix_agentd
zabbix-agentd为zabbix客户端守护进程 ,主要负责收集客户端监控项数据。
2、zabbix_server
zabbix_server为zabbix服务端守护进程,主要负责收集zabbix客户端数据。(端口为10051)
3、zabbix_proxy
zabbix_proxy是zabbix的代理程序,其功能类似于server,作用上类似于一个中转站,最终会把收集的数据再次提交给zabbix_server。
4、zabbix_get
zabbix_get作为zabbix工具,通常运行在zabbix_server或者zabbix_proxy上,用于远程获取客户端信息,通常用于排错。
5、zabbix_sender
zabbix_sender也是zabbix的一个工具,通常运行在zabbix的客户端,用于耗时比较长的检查,其作用是主动发送数据。
6、zabbix_java_gateway
zabbix_java_gateway是zabbix2.0以后引入的新功能,可以用于JAVA方面的设备;但是只能主动获取数据,而不能被动获取数据。
三、 zabbix服务端安装
1.1 RPM软件包安装zabbix5.0储存库
hostnamectl set-hostname xxxx #永久修改主机名(可以修改主机名分辨服务端以及客户端)
bash #立即生效
安装zabbix5.0储存库
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
查看一下库里是否有zabbix库
1.2 安装zabbix软件包
查看配置文件
vim /etc/yum.repos.d/zabbix.repo
运行脚本命令更改配置文件启用仓库
sed -i '11s/enabled=0/enabled=1/' zabbix.repo
1.3 安装zabbix前端软件包
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
有可能会遇到缺包报错的情况,可加入以下两个库
yum -y install epel-release
安装 EPEL 仓库:EPEL 是 Extra Packages for Enterprise Linux 的缩写,它是一个由社区维护的附加软件包仓库,提供了许多在 CentOS 或 RHEL 官方仓库中不包含的软件包。
作用:通过安装 EPEL 仓库,你可以轻松地访问并安装 EPEL 仓库中的软件包,从而扩展 CentOS 系统的软件源。
yum install centos-release-scl
安装 CentOS SCL 仓库:SCL 是 Software Collections 的缩写,它是一个提供并行安装软件集合的仓库,可以与系统默认软件包并存。
作用:通过安装 CentOS SCL 仓库,你可以使用 SCL 仓库中的软件集合,这些集合包含了其他版本的编程语言、工具和库。这样,你可以同时在系统上安装多个版本的软件,并根据需要使用特定版本。
下载完成后可以继续下载zabbix前端的两个包
1.4 安装数据库软件
yum install -y mariadb-server
systemctl start mariadb #启动数据库
systemctl enable mariadb #设置开机自启
以上截图是我已经安装过了,就不卸载示范了
在这里也可以提一下卸载的命令
systemctl stop XXX #停止有XX的服务以及相关的服务
rpm -qa | grep -i zabbix #使用命令请替换掉后面的内容,查找Zabbix的所有服务
rpm -qa mariadb #查找mariadb
yum -y remove XXX #卸载XXX服务
find / -name XXX #查找XXX所有的配置以及相关文件
find / -name "*XXX*" #需要更干净一点的话,可以利用模糊搜索查找
1.5 数据库配置
#进入数据库
mysql
创建存储数据的库,并支持中文(库名:zabbix)
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
#授权连接数据库的用户,并设置密码(用户名:zabbix)
MariaDB [(none)]> create user zabbix@localhost identified by '123456';
#数据库授权
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
#查看所有库
MariaDB [(none)]> show databases;
+----------------------+
| Database |
+----------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
| zabbix |
+----------------------+
5 rows in set (0.07 sec)
#进入zabbix库
MariaDB [(none)]> use zabbix;
Database changed
#查看当前库下表
MariaDB [zabbix]> show tables;
Empty set (0.00 sec) #没有内容
#在Zabbix服务器主机上,导入初始架构和数据。系统将提示您输
入新创建的密码zcat /usr/share/doc/zabbix-server-mysql-5.0.35/create.sql.gz | mysql -uzabbix -p -D zabbix
Enter password: password #输入zabbix用户密码解释:
zcat
:这是一个用于解压缩.gz
压缩文件的命令。在这里,它被用于解压缩/usr/share/doc/zabbix-server-mysql-5.0.35/create.sql.gz
文件。/usr/share/doc/zabbix-server-mysql-5.0.35/create.sql.gz
:这是 Zabbix 的数据库架构文件的路径。它是经过压缩的.sql
文件,使用 gzip 压缩算法。|
:管道符号用于将命令的输出作为另一个命令的输入。mysql
:这是用于与 MySQL 数据库进行交互的命令行工具。-uzabbix
:这是指定 MySQL 用户名为zabbix
。你可以根据你的实际情况修改为正确的用户名。-p'123456'
:这是指定 MySQL 用户的密码。在这个例子中,密码被设置为 123456。你需要将它替换为你的 MySQL 用户密码。-D zabbix
:这是指定要使用的数据库名称,这里是zabbix
。你可以根据你的需求修改为正确的数据库名称。
#Zabbix服务器配置数据库
vim /etc/zabbix/zabbix_server.conf
100 DBName=zabbix #存储监控数据的库名
116 DBUser=zabbix #连接数据库的用户
124 DBPassword=123456 #设置zabbix用户密码
#为Zabbix配置正确的时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai #亚洲/上海
中途报错
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)
ERROR 1050 (42S01) at line 1: Table '`zabbix`.`users`' already exists
解决方法:
①权限问题:
据错误信息,访问被拒绝的问题仍然存在。这可能是由于以下原因导致的:
密码错误:请确保你输入的密码是正确的,并且没有包含任何特殊字符或空格。
用户权限:再次验证 'zabbix' 用户在数据库中是否具有正确的权限。确保 'zabbix' 用户具有足够的权限执行导入操作。你可以使用
SHOW GRANTS FOR 'zabbix'@'localhost';
命令检查用户的权限。主机访问限制:检查数据库是否配置了仅允许特定主机或 IP 地址访问的安全规则。确保允许 'zabbix' 用户从所在的主机或 IP 地址进行访问。
数据库和表存在性:确保
zabbix
数据库已经在目标数据库服务器上创建。还要确保create.sql.gz
文件中包含正确的 SQL 语句,以创建所需的表和结构。②'
zabbix
.users
' 已经存在,因此无法创建重复的表。这可能是因为你之前已经运行过相同的脚本,导致表已经存在于数据库中。如果你确实想重新创建数据库并重新运行脚本,可以尝试以下方法:
删除现有的数据库:在运行脚本之前,使用以下命令删除现有的
zabbix
数据库:
mysql -uzabbix -p'123456' -e "DROP DATABASE zabbix;"
请注意,这将删除
zabbix
数据库及其所有数据,请确保你的操作,并且已备份了重要的数据。重新创建数据库:删除数据库后,使用以下命令重新创建
zabbix
数据库:
mysql -uzabbix -p'123456' -e "CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;"
重新运行脚本:在重新创建数据库后,再次运行脚本:
zcat /usr/share/doc/zabbix-server-mysql-5.0.35/create.sql.gz | mysql -uzabbix -p'123456' -D zabbix
检验 Zabbix 的数据库架构是否已经导入到 MySQL 数据库中
连接到 MySQL 数据库: 使用以下命令连接到 MySQL 数据库,使用与之前导入数据库时相同的用户名和密码:
mysql -u <用户名> -p
输入密码后,你将进入 MySQL 命令行提示符。
选择 Zabbix 数据库: 在 MySQL 命令行提示符下,选择 Zabbix 数据库:
进入到zabbix查看Zabbix 的数据库架构是否存储USE zabbix;
show tables;
Zabbix服务器配置数据库
为Zabbix配置正确的时区
1.6 启动并查看
#启动所有服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
#设置服务随机自启
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#查看zabbix服务占用端口信息
netstat -anptul | grep zabbix
tcp LISTEN 0 128 *:10051
#zabbix-server端口
tcp LISTEN 0 128 *:10050
#zabbix-agent端口
启动所有服务并设置开机自启 查看zabbix服务占用端口信息
四、zabbix服务参数介绍
zabbix server服务名:zabbix-server 端口:10051
zabbix agent服务名:zabbix-agent端口:10050
zabbix server主配置文件:/etc/zabbix/zabbix_server.conf
zabbix agent主配置文件:/etc/zabbix/zabbix_agentd.conf
zabbix企业微信报警脚本路径:/usr/lib/zabbix/alertscripts
zabbix自定义监控项路径:/etc/zabbix/zabbix_agentd.d zabbix
日志文件的路径:/var/log/zabbix/
五、web页面设置
从浏览器上打开Zabbix前端访问页面
对应Apache: http://IP地址/zabbix
对应Nginx: http://IP地址
Web前端安装向导页面如下:
先决检查:这里的Check of pre- requisites必须全部项目OK后才能继续配置,如有提示 fail,去server上检查是否安装这个包或配置是否按上述更改
配置数据库连接
输入连接数据库所需的详细信息。
Zabbix server服务器详情
请输入Zabbix服务器详情,可选的输入Zabbix服务器的名字, 提交后, Zabbix服务器的名字将会显示在菜单和页面的标题
安装前总结
如果webserver用户对conf/目录有写访问权,配置文件 将自动保存,并且可以立即进入下一步
web界面登陆
zabbix前端已经安装完成!最高管理员是Admin,密码是zabbix
为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix接口将暂停30秒。
在下次成功登陆后,将会在界面上显示登录尝试失败的IP地址。
修改界面的语言
成功修改为中文界面
六、部署被监控的主机
1、修改源
rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.24-1.el7.x86_64.rpm
我的客户端已经安装过了,所以有冲突正常时两条加载进度条100%
2、下载agent包并查看
yum install -y zabbix-agent
我的客户端也是下载过了
正常情况下应该是以下截图
查看以下agent包的服务
3、修改agent配置文件
vim /etc/zabbix/zabbix_agentd.conf
117 Server=192.168.40.140 #指定zabbix server地址164 ServerActive=192.168.40.140
175 Hostname=zabbix-client #此处地址后续在Web界面上添加客户端需名称一致
122 StartAgents=0 #在122行加一条配置信息
客户端的agent的模式,0表示关闭被动模式,zabbix-agentd不监控本地端口,所以看不到zabbix_agentd进程。
286 UnsafeUserParameters=1 #在286行加一条配置信息
#启动服务并设置服务开机自启
systemctl start zabbix-agent
systemctl enable zabbix-agent
我这边挂了公网不方便暴露地址了,这里写服务端的IP
Zabbix客户端脚本
#!/bin/bash
Ip_addr=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
#yum -y install redhat-lsb telnet zlib-devel pam-devel gcc vim net-tools bind-utils sysstat traceroute libaio expect pcre-devel openssl-devel zlib-devel tcl numactl wget unzip
echo "===========================安装软件源==========================="
#rpm -ivh https://repo.zabbix.com/zabbix/3.4/rhel/6/x86_64/zabbix-release-3.4-1.el6.noarch.rpm
rpm -ivh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
echo "===========================安装软件zabbix-agent==========================="
yum install -y zabbix-agent
echo "===========================生成配置文件==========================="
mkdir /etc/zabbix/script
cp /opt/ins_xg/zabbix/tcp_status.sh /etc/zabbix/script/
chmod +x /etc/zabbix/script/tcp_status.sh
cp /opt/ins_xg/zabbix/tcp_status.conf /etc/zabbix/zabbix_agentd.d/
cp -aRp /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf_bak
echo "===========================修改配置文件==========================="
cd /etc/zabbix/
sed -i 's/Server=127.0.0.1/Server=121.192.191.80/g' zabbix_agentd.conf
sed -i 'N;122aStartAgents=0' zabbix_agentd.conf
sed -i 's/ServerActive=127.0.0.1/ServerActive=121.192.191.80/g' zabbix_agentd.conf
#sed -i 's/Hostname=Zabbix server/Hostname= $Ip_addr/g' zabbix_agentd.conf
sed -i 'N;286aUnsafeUserParameters=1' zabbix_agentd.conf
echo "===========================启动服务==========================="
#/etc/init.d/zabbix-agent restart
#systemctl restart zabbix-agent
七、在ZabbixfuWeb界面发现客户端
配置模板并更新
在最新数据当中已经可以看到客户端的一些配置信息