服务器数量很多,每个服务器本身硬件方面操作系统方面包括上面运行的软件这些东西都要及时的了解他们的情况,如果有问题我们及时解决

可以使用监控系统:提前设置好,哪里有事件发生的时候,主动给我发邮件,或者发微信,这种方式可以了解到他,去解决,节省了大量的不断去查询的工作

所有的这些工作交给监控系统 去完成

这就省事了


监控工具有很多,现在使用最多的: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 进行报警  

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql

上图只是个 简单的架构

如果未来集群架构比较大 一台server 不够了  中间会加 zabbix-proxy

zabbix的分布式

zabbix-proxy 和zabbix-server 都需要连接数据库

agent 比较多 同一个server  处理不了那么多 就需要加proxy 每一百台 或两百台连一个proxy  把数据再传给server  这样他的压力更小一点

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_02


开始安装zabbix-server


官网

https://www.zabbix.com/cn/

安装4.0的LTS版 稳定版

https://www.zabbix.com/cn/download?zabbix=4.0&os_distributinotallow=ubuntu&os_versinotallow=18.04&compnotallow=server_frontend_agent&db=mysql&ws=apache

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_03

注意要保证机器上没有apache

然后下面就是安装步骤了

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_04

复制 干就行了

wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-3%2Bbionic_all.deb

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_05

他会下载deb文件

然后用

dpkg -i zabbix-release_4.0-3+bionic_all.deb

安装

他会产生一个文件

vim /etc/apt/sources.list.d/zabbix.list

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_06

加了个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


需要的数据库步骤官网全告诉了

他需要在数据库里创建一个库

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_07

在数据库操作以下内容

# 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

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_08

这就是时间服务器  想让他更快的话 可以改成国内的

把那个ntp.ubuntu.com 改为ntp.aliyun.com

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_09

集群的时间同步这块非常重要 他不管是在我们这块重要 他在所有的服务 所有的集群 所有的节点 都非常重要  都要求做时间同步


如果一个分布式集群 他俩的时间差一秒 他是很危险的 会导致这个集群有问题

群集有个状态监控 有个选举 相互来检测和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

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_10

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_11

监听地址  SourceIP 默认为空  空就是0.0.0.0

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_12

日志类型

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_13

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_14

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_15

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_16

192.168.1.33

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_17

zabbix_server_247

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_18

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_19

123456

然后保存

systemctl start zabbix-server

启动zabbix-server

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_20

启动的端口号 10051 服务端端口号 10050 客户端端口号


zabbix-server 默认给我装了个apache 我们重启一下

systemctl restart apache2

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_21

192.168.1.61/zabbix

访问这个

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_22

出现这个界面说明安装成功了

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_23

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_24

这里出现个时区不对

这里面有一个不ok的都不行

改时区需要去修改Apache的配置文件

vim /etc/zabbix/apache.conf

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_25

改为

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_26

php_value date.timezone Asia/Shanghai

systemctl restart apache2

重启apache2

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_27


再刷新这个界面 就全ok 了

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_28

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_29

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_30

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_31

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_32

默认的用户名是 大写的Admin

Admin

密码是zabbix

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_33

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_34

这表示zabbix server 就装完了

需要汉化一下zabbix

安装中文依赖语言包

apt -y install language-pack-zh*
vim /etc/environment

修改环境变量

LANG="zh-CN.UTF-8"

添加这条内容  让他识别语言环境

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_35

dpkg-reconfigure locales

启动

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_36

找到zh_CN.UTF-8 UTF-8 拍空格

tab键 ok回车

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_37

tab键

ok

回车

然后就导入语言环境了

然后重启apache2

systemctl restart apache2

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_38

右上角

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_39

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_40

瞬间清晰

还有个bug


他的表下的字是乱码 我们需要去修改

找到我我们windows电脑的控制面板

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_41

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_42

找到字体

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_43

找到楷体常规

复制 粘贴到桌面  需要带后缀

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_44

放到

cd /usr/share/zabbix/assets/fonts

下的

chmod +x simkai.ttf

加个执行权限

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_45

去修改zabbix 的一个配置文件

vim /usr/share/zabbix/include/defines.inc.php


修改这两行内容

复制一行 注释掉 (安全)

然后改下 simkai

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_46

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_47

复制一行 注释掉 (安全)

然后改下simkai



然后就生效了


到现在zabbix-server 就装完了

然后添加一个agent  代理端

我们找个机器安装 agent

下载源


https://www.zabbix.com/cn/download?zabbix=4.0&os_distributinotallow=ubuntu&os_versinotallow=18.04&compnotallow=server_frontend_agent&db=mysql&ws=apache


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 是谁

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_48

改为server 的ip

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_49

默认端口号10050

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_50

改为server 的ip地址

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_51

这个改为客户端自己的ip


然后可以重启了

systemctl restart zabbix-agent

重启zabbix-agent

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_52

端口号10050 已经启动了

我现在要把这个agent 机器 添加到server上

切换web界面

server服务端

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_ubuntu_53

点击配置 →主机

当前主机 默认就一个server

他监听的接口是

修改一下他

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_mysql_54

这个是 server 的 自己的机器

一会就好了


我们现在把新的agent加进来

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_55

创建机器

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_56

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_zabbix_57

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_58

这个os linux  是zabbix给的模板  

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_59

现在有这个主机了

等一会就可用了

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_apache_60

点图形

现在监控加进去了 数据也能展示了


这些是用模板的监控项

这时候我们可以看下mysql 主机

进到 zabbix_server_247 库

select * from hosts \G;

看下 就有我们新加入的主机了

1-Zabbix-server安装及agent安装与添加详细过程,Ubuntu:18.04安装Zabbix_agent_61