监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用
对系统不间断时实监控
实际上是对系统不间断的时实监控
实时反馈系统当前状态
我们监控某个硬件、或者系统,都是需要能时实看到当前系统的状态,是正常、异常、或是故障。保证服务可靠性安全性
我们监控的目的就是要保证系统、服务、业务正常运行
保证业务持续稳定运行
如果我们的监控做的很完善,即使出现故障,能第一时间接收到故障报报警,在第一时间处理解决,从而保证业务持续性的稳定运行
了解监控对象
了解CPU是如何工作的。
性能基准指标
我们要监控这个东西的什么属性?比如如CPU的使用率、负载、用户态、内核态、上下文切换。
报警阈值定义
怎么才算是故障,比如CPU的负载到底多少算高?内核态,用户态分别跑多少算高?
故障处理流程
收到了故障报警,那么我们怎么处理?
发现问题
当系统发生故障报警,我们会收到故障报警的信息。
定位问题
故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题、还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因。
解决问题
当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障。
总结问题
当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现。
Zabbix是一个基于web界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。
Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix由两部分构成,Zabbix server与可选组件 Zabbix agent 。通过C/S模式采集数据,再通过B/S模式在web端展示和配置。
zabbix支持监控各种系统平台,包括linux和windows等主流操作系统,也可以借助SNMP或者SSH协议监控路由交换设备。
zabbix如果部署在服务器上,可以监控其CPU、内存、网络等硬件参数,也可以监控具体服务或者应用程序,服务运行情况及性能。
通过IPMI接口进行监控,我们可以通过标准的IPMI硬件接口,监控备监控的对象的物理特征,比如电压、温度、风扇状态、电源状态等。
通过专用的代理程序进行监控,与常见的master/agent模型类型,如果监控对象支持对应的agent,推荐选这种方式。
通过JMX进行监控,JMX(java management extensions,即java管理扩展),监控JMX虚拟机时,使用这种方法非常不错的选择。
通过SNMP协议与被监控对象进行通信,SNMP协议的全称为simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装agent,但是这些硬件都支持SNMP协议。
应用服务监控Zabbix Agent UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web 监控
主机(host)
- 要监控的设备,可以有ip或是主机名(必须可解析)指定。
主机组(host group)
- 主机的逻辑容器,包含主机和模板,主机通常在给用户或是用户组指派监控权限时使用。
监控项(item)
- 一个特定指定的相关数据,比如内存的大小,CPU的使用率,甚至是服务的运行状态等,监控项数据来源于被监控对象,并且每一个监控项都由一个key值来标识。
触发器(trigger)
- 一个表达式,用于评估监控的值是否在合理的范围,当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。
事件(event)
- 触发器触发的一个特定时间,或者zabbix定义的一个自定上限注册主机的事件。
动作(action)
- 指根据配置,zabbix对于触发器触发的特定时间进行处理的具体措施,如执行某个脚本,或是向管理员邮箱发送邮件等等
报警升级(escalation)
- 发送警报或是执行远程命令的自定义方案。
媒介(media)
- 发送通知(告警)的手段,比如:电话,微信,邮件,短信,企业微信,钉钉,等等
通知(notification)
- 通过指定媒介,向用户发送的有关事件的信息
- 远程命令
- 指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。
模板(template)
- 用于快速被监控主机的预设条目结合,通常包括了监控项、触发器、应用等,模板可以直接连接到某个主机
应用(application)
- 一组监控的集合
web场景(web scennario)
- 用于检测web站点可用性的一个或多个HTTP请求
前端(frontend)
- zabbix的web接口
原理总结
zbbix_server 服务端可以通过主动或被动的方式获取到zabbix_agent客户端的数据,zabbix_server拿到数据后进行分析,存放到自己的数据库中,zabbix再将数据给到web_server,然后用户通过client访问web_server的UI界面访问
Zabbix监控部署在系统中,包含常见五个程序:zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender等
zabbix_server
zabbix服务端守护进程,其中zabbix_agent、zabbix_get、zabbix_sender、azbbix_proxy的数据最终都交给zabbix_server。
zabbix_agent
客户端守护进程,负责收集客户端数据,例如: 收集CPU负载、内存、硬盘、中间件使用情况
zabbix_proxy
zabbix分布式代理守护进程,通常大于500台主机,需要进行分布式监控架构部署。
zabbix_get
数据接收工具,单独使用命令,通常在server或proxy端执行获取远程客户端信息的命令。
zabbix_sebder
zabbix数据发送工具,用户发送数据给server或proxy端,通常用户耗时比较长的检查
获取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#' zabbix.repo
yum clean all && yum makecache
yum install -y zabbix-server-mysql zabbix-agent
安装SCL(software Collections),便于后续安装高版本的php,默认yum安装php版本为5.4,版本过低,因为zabbix 5.0版本对php版本最低要求7.2.0版本。SCL可以使得在同一台及其上使用多个版本的软件,而又不会影响整个系统的依赖环境,软件包会安装在/opt/rh目录下。
yum install -y centos-release-scl
#安装SCL
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
......
enabled=1 #开启安装源
......
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
#将前端环境安装达到SCL下
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
#安装mariadb数据库并启动
mysql_secure_installation
#初始化数据库(后=后面全部输入y),并设置密码,如:123
mysql -u root -p123
#登录数据库
create database zabbix character set utf8 collate utf8_bin;
#创建zabbix库,使用utf8字符集编码
grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';
#授权权限,zabbix用户可以使用密码zabbix从任意主机登录,且拥有zabbix库的所有权限
flush privileges;
#刷新授权表
rpm -ql zabbix-server-mysql
#查询mysql文件的位置
zcat \
/usr/share/doc/zabbix-server-mysql-5.0.26/create.sql.gz | \
mysql -uroot -p123 zabbix
#zcat压缩状态下查看,然后将压缩的文件导入到zabbix库中
mysql -u root -p123
use zabbix;
show tables;
#查看zabbix数据库中是否有文件导入
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 #24行,取消注释,修改时区
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
#服务包含(zabbix_server、zabbix_agent、httpd、php)
浏览器访问:http://20.0.0.55/zabbix
点击下一步,设置数据库的密码 zabbix
安装完成后,默认的登录账号和密码为:Admin/zabbix
设置文件界面:点击左边菜单栏的【User settings】,【Language】选择 Chinese(zh_CN),再点击 Update 更新。
查看zabbix的最新数据
发现存在乱码
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
zabbix 5.0 版本采用golang语言开发的新版本客户端agent2。
zabbix服务端zabbix_server默认使用10051端口,客户端zabbix_agent2默认使用10050端口
zabbix-server服务端
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su
yum -y install ntpdate
ntpdate -u ntp.aliyun.com
zabbix-agent01客户端
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置时区
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
#修改为阿里云源
yum clean all && yum makecache
#删除缓存和重新加载
yum install -y zabbix-agent2
#安装zabbix-agent2
修改agent2配置文件
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
{---------------------------------
【主机名称】设置成 zbx-agent01
【可见的名称】设置成 zbx-agent01-20.0.0.56
【群组】选择 Linux server
【Interfaces】的【IP地址】设置成 20.0.0.56
再点击上方菜单栏【模板】
------------------------------------}
【Link new tamplates】搜索 Linux ,选择 Template OS Linux by Zabbix agent
点击 【添加】
点击左边菜单栏【配置】中的【主机】,点击【创建主机】