服务器数量很多,每个服务器本身硬件方面操作系统方面包括上面运行的软件这些东西都要及时的了解他们的情况,如果有问题我们及时解决
可以使用监控系统:提前设置好,哪里有事件发生的时候,主动给我发邮件,或者发微信,这种方式可以了解到他,去解决,节省了大量的不断去查询的工作
所有的这些工作交给监控系统 去完成
这就省事了
监控工具有很多,现在使用最多的:Zabbix,Prometheus
Zabbix 应用最广泛 版本更新快
Prometheus 一般配合着云环境
绝大部分环境使用的zabbix系统
特点:
zabbix的特点?
1) Zabbix是图形界面配置、展示比较友好,多种告警方式;
2) 功能比较强大,如主机性能、服务状态、接口流量等,还支持SNMP协议对网络设备(不能安装zabbix客户端软件)进行监控;
3) 支持分布式监控(三种架构),适用于大中小环境;
Zabbix 在工作是 由不同组件构成 不同组件完成不同的任务
Zabbix服务器 首先需要由网站的方式来进行管理 应该有相关的web接口
接下来需要有其他的信息把他收集过来 监控的主机有发送的
Zabbix有接受的
另外把发送的信息收集起来 会放到数据库当中去 里面还有其他组件
组件代表着不同的程序
组件有服务端
Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置、统计数据及操作数据均由其组织进行;
然后会把消息放到数据库当中
Database Storage: 用于存储所有配置信息,以及由zabbix收集的数据,常用存储引擎MySQL;
最终以web形式展示 去设置
Web interface:zabbix的GUI接口,提供web界面,方便用户查看监控数据;
客户端比较多的情况下,我们把信息都交给服务器,服务器会频繁的与客户端进行交互 ,可以中间加上代理 客户端把相关信息交给代理,代理收集完了后 汇总给服务器 代理会有多个 客户端会有多个
比如一个班有10个人 一个老师收10个人 的作业很方便
如果 一个班有70个人 一个老师收70个人的作业就很麻烦
就设置几个组长 分成5组 组长收齐作业 交给老师
这样老师的负担就比较轻了
这个Proxy就是代理
Proxy: 可选组件,常用于分布式监控环境中,代理Server收集被监控端的监控数据并统一发往Server端;
再接下来客户机上需要部署客户端程序叫Agent
Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端。
我们在整个环境中 大体的组件有服务器端 负责接受信息 接受完了后 放到数据库中去 客户端需要安装客户端程序 如果说环境比较大的话 比较复杂的话
中间可以加代理 最终 配置管理都是由web形式的
对应程序的话
zabbix_agentd: 客户端程序
zabbix_get: 服务端向客户端索要数据的时候 对应的命令 get得到获取
zabbix_sender 客户端向服务端发送的时候sender发送
zabbix_server 服务端运行的程序
zabbix_proxy 中间可能有proxy 代理
zabbix_java_gateway 还可能有java的网关
zabbix工作原理:工作原理
在每个工作的时候在每个客户端上需要安装客户端程序 zabbix agent agent代理 在客户端安装上这个软件后 他会把本主机上的 相关信息收集起来
然后负责提交给zabbix server
服务端安装的程序 zabbix server
zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。
这里agent收集数据分为主动和被动两种模式:
主动:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
被动:server向agent请求获取监控项的数据,agent返回数据。
系统配置中默认是被动模式。无需更改。
服务器 端和客户端 他们之间的数据 是客户端交给服务器端
客户端是给服务器端提交数据的
是客户端主动给服务器端 提交 还是服务器端去要
针对这种过程分为两种
1是客户端主动交给服务器端的 服务器你不用说话 客户端分周期性的 给服务器提供
这个对于客户端 来讲是主动提交的
这种方式对于服务器来讲有很多好处 服务器的负载较低 我不找你要你主动给我
2是被动方式:你找我要的时候我才给你,首先服务器向客户端发出查询我有我才给你提交
服务器挨个去问 这个过程 服务器就比较累了
我们更多的时候采用主动的行为
这样对于服务器资源占用较少 特别是服务端对客户端 监控项多的情况下
流程 首先 zabbix egent 安装到客户端上后 定期收集系统信息 发送给 zabbix server
zabbix server 放到数据库中 最后将这些信息 zabbix web 在前端展示
agent 收集信息 两种情况 一个主动 客户端主动给服务端 一种 被动 服务端向客户端索要
zabbix监控
监控物理服务器 异常 宕机
监控各种各样的应用 如 nginx 是否正常 能不能用 性能 tomcat 比如haproxy redis
监控网络 tcp的状态 ,监控操作系统 磁盘的使用情况 内存的使用情况 cpu 的使用情况 负载 ,操作系统端口号的存活
监控为了收集数据 收集完了后展示出来。数据采集,数据传输,数据展示,报警触发,生产上 不允许有没有监控的业务上线,这称为裸奔,不允许裸奔。
zabbix 是个C/S架构 有客户端和服务端
每台被监控的机器都需要装客户端工具zabbix-agent,客户端agent收集完 信息 把数据传输给zabbix-server 传给服务端,这个信息有各个服务的信息 硬件的 网络的 操作系统的,所有的agent 客户端 收集完信息 都要传给server
zabbix-server负责存储 zabbix-server 会有个数据库 mysql数据库
默认使用mysql数据库 数据存在mysql,然后zabbix-server从mysql获取数据 做成图出来展示 ,在web界面上做成图形 进行展示 ,采集 传输 存储 展示 都完成了 还有一个报警,报警是zabbix-server 进行报警
上图只是个 简单的架构
如果未来集群架构比较大 一台server 不够了 中间会加 zabbix-proxy
zabbix的分布式
zabbix-proxy 和zabbix-server 都需要连接数据库
agent 比较多 同一个server 处理不了那么多 就需要加proxy 每一百台 或两百台连一个proxy 把数据再传给server 这样他的压力更小一点
开始安装zabbix-server
官网
安装4.0的LTS版 稳定版
注意要保证机器上没有apache
然后下面就是安装步骤了
复制 干就行了
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3%2Bbionic_all.deb
他会下载deb文件
然后用
dpkg -i zabbix-release_4.0-3+bionic_all.deb
安装
他会产生一个文件
vim /etc/apt/sources.list.d/zabbix.list
加了个apt源
然后
apt update
更新一下
apt install zabbix-server-mysql zabbix-frontend-php zabbix-agent -y
然后安装 server 上需要装 server-mysql zabbix-frontend-php zabbix前端是个网页
然后我们需要依赖一个数据库 需要一个mysql 在本机启动也可以另找一台也行
启一台mysql
zabbix-server 的配置文件
vim /etc/zabbix/zabbix_server.conf
需要的数据库步骤官网全告诉了
他需要在数据库里创建一个库
在数据库操作以下内容
# mysql -uroot -ppasswordmysql> create database zabbix character set utf8 collate utf8_bin;
创建一个库zabbix(可以是别的名字 如果这里改了 下面也必须改) 字符集是utf8mysql> create user zabbix@localhost identified by 'password';
创建个用户mysql> grant all privileges on zabbix.* to zabbix@localhost;mysql> quit;
时间同步他会自动的去连接时间服务器
apt -y install chrony
默认给我们 做时间同步
systemctl start chrony
启动他
systemctl enable chrony
然后做个开机自启
这个时间服务器 的配置文件 是在
vim /etc/chrony/chrony.conf
这就是时间服务器 想让他更快的话 可以改成国内的
把那个ntp.ubuntu.com 改为ntp.aliyun.com
集群的时间同步这块非常重要 他不管是在我们这块重要 他在所有的服务 所有的集群 所有的节点 都非常重要 都要求做时间同步
如果一个分布式集群 他俩的时间差一秒 他是很危险的 会导致这个集群有问题
群集有个状态监控 有个选举 相互来检测和ping一样 之类的 她时间都超过一秒了 就相当于 那一秒钟 没给我响应 他可能就默认觉他down了 所以一般情况下 集群之间时间相隔一秒 就有可能造成你的集群启动失败
所以生产上 都会做类似动作 都要做时间同步
create database zabbix_server_247 character set utf8 collate utf8_bin;
创建一个数据库 名字改了下叫zabbix_server_247
create user zabbix@'192.168.1.%' identified with 'mysql_native_password' by '123456';
创建用户 因为是8.0的所以加with 'mysql_native_password' 这些 密码为123456
grant all privileges on zabbix_server_247.* to zabbix@'192.168.1.%';
授权 给 只需要给他 zabbix_server_247库的权限就行
flush privileges;
刷新权限
库创建完了 只是名字不一样而已 然后去导入初始架构的数据库
数据在zabbix-server 机器的
/usr/share/doc/zabbix-server-mysql*/create.sql.gz
我们可以传给mysql 机器 然后导入 也可以直接 导入
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -h 192.168.1.33 -u zabbix -p123456 zabbix_server_247
我们未来所有的数据 都会存储在这个数据库里面
修改zabbix-server 主机的主配置文件
vim /etc/zabbix/zabbix_server.conf
监听地址 SourceIP 默认为空 空就是0.0.0.0
日志类型
192.168.1.33
zabbix_server_247
123456
然后保存
systemctl start zabbix-server
启动zabbix-server
启动的端口号 10051 服务端端口号 10050 客户端端口号
zabbix-server 默认给我装了个apache 我们重启一下
systemctl restart apache2
访问这个
出现这个界面说明安装成功了
这里出现个时区不对
这里面有一个不ok的都不行
改时区需要去修改Apache的配置文件
vim /etc/zabbix/apache.conf
改为
php_value date.timezone Asia/Shanghai
systemctl restart apache2
重启apache2
再刷新这个界面 就全ok 了
默认的用户名是 大写的Admin
Admin
密码是zabbix
这表示zabbix server 就装完了
需要汉化一下zabbix
安装中文依赖语言包
apt -y install language-pack-zh*
vim /etc/environment
修改环境变量
LANG="zh-CN.UTF-8"
添加这条内容 让他识别语言环境
dpkg-reconfigure locales
启动
找到zh_CN.UTF-8 UTF-8 拍空格
tab键 ok回车
tab键
ok
回车
然后就导入语言环境了
然后重启apache2
systemctl restart apache2
右上角
瞬间清晰
还有个bug
他的表下的字是乱码 我们需要去修改
找到我我们windows电脑的控制面板
找到字体
找到楷体常规
复制 粘贴到桌面 需要带后缀
放到
cd /usr/share/zabbix/assets/fonts
下的
chmod +x simkai.ttf
加个执行权限
去修改zabbix 的一个配置文件
vim /usr/share/zabbix/include/defines.inc.php
修改这两行内容
复制一行 注释掉 (安全)
然后改下 simkai
复制一行 注释掉 (安全)
然后改下simkai
然后就生效了
到现在zabbix-server 就装完了
然后添加一个agent 代理端
我们找个机器安装 agent
下载源
wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3%2Bbionic_all.deb
dpkg -i zabbix-release_4.0-3+bionic_all.deb
apt update
apt -y install zabbix-agent
修改下agent 配置文件
vim /etc/zabbix/zabbix_agentd.conf
需要去修改server ip 是谁
改为server 的ip
默认端口号10050
改为server 的ip地址
这个改为客户端自己的ip
然后可以重启了
systemctl restart zabbix-agent
重启zabbix-agent
端口号10050 已经启动了
我现在要把这个agent 机器 添加到server上
切换web界面
server服务端
点击配置 →主机
当前主机 默认就一个server
他监听的接口是
修改一下他
这个是 server 的 自己的机器
一会就好了
我们现在把新的agent加进来
创建机器
这个os linux 是zabbix给的模板
现在有这个主机了
等一会就可用了
点图形
现在监控加进去了 数据也能展示了
这些是用模板的监控项
这时候我们可以看下mysql 主机
进到 zabbix_server_247 库
select * from hosts \G;
看下 就有我们新加入的主机了