一.监控软件的作用:
作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果和网站的健康状态
利用一个优秀的监控软件,我们可以:
- 对系统不间断实时监控
- 实时反馈系统当前状态
- 保证服务可靠性安全性
- 保证业务持续稳定运行
二.Zabbix基本介绍:
1.什么是zabbix:
zabbix:是一款开源免费的,自动化发现服务与网络设备的分布式监控,可以监视应用层服务并以web前端页面集中管理并展示。
2.zabbix功能:
监控服务器cpu负载、服务器内存使用、服务器磁盘使用及网络状态、还可以监控中间件。
缺点:只支持传统运维,不支持容器。
3.zabbix运行机制:
zabbix是C/S架构由zabbbix server和zabbix agent组成:
zabbix server :负责存储展示硬件信息,通过B/S模式传给web端展示配置,端口:10051。
zabbix agent :监控收集服务器信息,端口号为10050。
通过C/S模式采集数据,通过B/S模式在Web端展示和配置。
4.zabbix的3种架构:
C/S架构:
被监控的机器和zabbix直接相连zabbix agent负责采集服务器的信息,zabbix server 负责存储并通过web展示硬件信息
zabbix-proxy-client架构:
被监控的机器和zabbix中间有个proxy代理,zabbix agent将采集的信息传到代理上由代理同一传给zabbix server进行前端页面展示和数据存储。
跨机房,跨网络的中型架构——大于500台
master-zabbix-client架构:
master下有node节点,node可以存储数据,node有自己的配置文件和数据库注意负责将配置信息和监控数据与master同步,node下可以直接接入主机或接入代理proxy。
Master-Node-Client该架构是Zabbix最复杂的监控架构,适用于跨网络跨机房设备多的大型环境。每个Node同时接一个Sever端,Node下面可以接Proxy端,也可以直接连接Client,Node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向Master进行数据同步,Master故障损坏对Node其下架构的完整性无任何影响
5.zabbix工作原理及数据走向:
- zabbix agent在主机上采集监控数据,将采集的数据传给zabbix server
- zabbix server收到数据后将数据存在自己的数据库中
- 然后从数据库中提取数据进行分析,是否需要报警
- 分析完成后server在web前端页面进行界面数据展示
6.zabbix监控模式:
主动模式:
- 主动检测: 由agent端主动收集信息发送给server端 工具是zabbix_sender
- 相对于agent而言; agent(active),agent向server请求与自己相关监控项配置, 主动地将server配置的监控项相关的数据发送给server;
- 主动监控能极大节约监控server的资源。
被动模式:
- 被动检测:由server端主动拉取信息 工具是zabbix_get
- 相对于agent而言 ; agent, server向agent请求获取配置的各监控项相关的数据,agent接收请求、获取数据并响应给server;
7.Zabbix的监控对象:
- 硬件监控:通过 SNMP 来进行路由器交换机的监控
- 系统监控:如 CPU 的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘 inode 节点
- 服务监控:比如公司用 LNMP nginx 自带 Status 模块、 PHP 也有相关的 Status 、 MySQL 的话可以通过 ODBC协议 来进行监控
- 网络监控:如果是云主机又不是跨机房,那么可以选择不监控网络
- 安全监控:如果是云主机可以考虑使用自带的安全防护。当然也可以Zabbix监控 iptables 如果是硬件,那么推荐以Zabbix监控硬件防火墙
- Web 监控:web 监控的话题其实还是很多。比如可以使用自带的 web 监控来监控页面相关的延迟、 js 响应时间、下载时间、等等
- 日志监控:如果是 web 的话可以使用监控 Nginx 的 500x 日志。PHP 的 ERROR 日志
- 流量分析:平时我们分析日志都是拿 awk sed xxx 一堆工具来实现。这样对我们统计 ip 、 pv 、 uv 不是很方便。那么可以使用百度统计、 google 统计、商业,让开发嵌入代码即可 (不想关建议去掉)
- 可视化:通过 screen 以及引入一 些第三方的库来美化界面,同时我们也需要知道、订单量突然增加、 突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平台来梳理各个系统之间的业务关系
- 自动化监控:如上我们做了那么多的工作,当然不能是一台一台的来加 key 实现。可以通过Zabbix 的主动模式以及被动模式来实现。当然最好还是通过 API 来实现
8.Zabbix的程序组件:
- Zabbix agent:客户端守护进程,负责部署在被监控主机上,把被监控主机的数据传送给zabbix server,例如:收集 CPU 负载、内存、硬盘使用情况等;
- Zabbix server:服务端守护进程,负责接收agent发送的信息,组织配置信息,统计配置信息和操作数据等
- Zabbix proxy:zabbix分布式代理守护进程,分布式环境中使用,zabbix proxy代表server端管理该区域中的信息收集,最终统一发往zabbix server
- Zabbix get:zabbix 数据接收工具,单独使用的命令,通常在 server 或者 proxy 端执行获取远程客户端信息的命令
- Zabbix sender:zabbix 数据发送工具,用户发送数据给 server 或 proxy 端,通常用户耗时比较长的检查
三、部署Zabbix:
1. 环境准备:
节点 | IP地址 | 安装服务 |
---|---|---|
zabbix-server | 192.168.91.10 | zabbix-server-mysql 、zabbix-agent |
zabbix-agent | 192.168.91.20 | zabbix-agent2 |
关闭防火墙和防护:
#开机不再启动防火墙
systemctl disable --now firewalld
setenforce 0
2.部署Zabbix服务端(端口号10051):
#获取下载资源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d/
#更换 zabbix.repo 为阿里源
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo
#清缓存并重新建立元数据
yum clean all && yum makecache
安装SCL(Software Collections),修改 Zabbix-front 前端源:
便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /opt/rh 目录下。
#安装SCL所需
yum install -y centos-release-scl.noarch
#修改zabbix-frontend前端源,开启安装源
vim zabbix.repo
---------------
第11行 enabled=1
------------------
#安装SCL
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
安装Zabbix所需的数据库:
yum install -y mariadb-server.x86_64 mariadb
systemctl enable --now mariadb.service
yum install -y zabbix-server-mysql zabbix-agent
初始化数据库:
#初始化数据库,并设置密码123
mysql_secure_installation
添加数据库用户,以及Zabbix所需的数据库信息:
#登入数据库
mysql -uroot -p123
#修改字符集utf8
create database zabbix character set utf8 collate utf8_bin;
#创建权限用户,是的zabbix可以访问数据库
grant all on zabbix.*to 'zabbix'@'%' identified by 'zabbix';
#刷新权限
flush privileges;
导入数据库信息:
#查询sql文件位置
rpm -ql zabbix-server-mysql
zcat /usr/share/doc/zabbix-server-mysql-5.0.42/create.sql.gz | mysql -uroot -p123 zabbix
修改Zabbix server配置文件:
#修改数据库密码
vim /etc/zabbix/zabbix_server.conf
------------------------------------------------
DBPassword=zabbix #124行,指定 zabbix 数据库的密码
#修改时区
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
--------------------------------------------------
php_value[date.timezone] = Asia/Shanghai #25行,取消注释,修改时区
启动Zabbix相关服务:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
浏览器访问验证 :
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新:
解决 zabbix-server Web页面web问题:
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
3.部署zabbix客户端(端口号10050):
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
zabbix 服务端 zabbix_server 默认使用 10051 端口,客户端 zabbix_agent2 默认使用 10050 端口。
服务端和客户端,配置时间同步:
yum install -y ntpdate.x86_64
ntpdate -u ntp.aliyun.com
客户端配置时区,要与服务端保持一致:
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
date
设置Zabbix的下载源,安装Zabbix-agent2:
#设置zabbix的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#更改
cd /etc/yum.repos.d/
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo
安装Zabbix-agent2,并修改配置文件:
#安装zabbix-agent2
yum install -y zabbix-agent2
#修改配置文件
vim /etc/zabbix/zabbix_agent2.conf
-------------------------------------------
Server=192.168.79.210 #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.79.210 #125行,指定 zabbix 服务端的 IP 地址
Hostname=agent1 #136行,指定当前 zabbix 客户端的主机名
---------------------------------------------
启动Zabbix-agent2:
systemctl start zabbix-agent2.service
systemctl enable zabbix-agent2.service
ss -natp | grep zabbix
在服务端验证Zabbix-agent2 的连通性:
yum install -y zabbix-get.x86_64
zabbix_get -s '192.168.91.20' -p 10050 -k 'agent.ping'
zabbix_get -s '192.168.91.20' -p 10050 -k 'system.hostname'
4.在Web页面创建自定义监控项模板:
客户端操作:
#切换目录
cd /etc/zabbix/zabbix_agent2.d/
#修改
vim UserParameter_login.conf
----------------------------------
UserParameter=login.user,who|wc -l
-----------------------------------------
#重启服务
systemctl restart zabbix-agent2
创建模板:
【模板名称】设置成 Template Login User
【可见的名称】设置成 Template Login User
【群组】选择 Template
【描述】可自定义
创建应用集(用于管理监控项的):
创建监控项:
创建触发器(当监控项获取到监控的值后和触发器预设的值进行对比,判断是否报警)
创建图形:
此时就点击【监测】中的【主机】,点击你关联主机的【图形】,即可查看到相关的监控项指标
测试:多开几个终端:
部署Zabbix代理服务器
1. 环境准备:
在原有zabbix server和zabbix agent1上再添加一台proxy代理服务器
节点 | IP地址 | 安装服务 |
zabbix-proxy | 192.168.91.30 | zabbix-proxy-mysql、zabbix-get |
关闭防火墙和selinux安全模块:
systemctl disable --now firewalld #开机不再启动防火墙
setenforce 0