监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用。
对系统不间断时实监控
实时反馈系统当前状态
保证服务可靠性安全性
保证业务持续稳定运行
了解监控对象
性能基准指标
报警阈值定义
故障处理流程
发现问题
定位问题
解决问题
总结问题
MRTG
Grnglia
是一个跨平台的、可扩展的,高性能的分布式监控系统,如集群和网格,它基于分层涉及,使用广泛的技术,用RRDtool存储数据。具有可视化界面,适合对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低。目前已经有成千上万的集群正在使用这个监控系统,可以轻松的处理2000个节点的集群环境。
cacti
是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数。提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板。在历史数据展示监控方面,其功能相当不错。
Nagios
smokeping
OpenTSDB
Zabbix
open-falcon
OWL
Zabbix是一个基于web界面的提供分布式系统监视以及网络监视功能的企业级开源解决方案。
Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
Zabbix由两部分构成,Zabbix server与可选组件 Zabbix agent 。通过C/S模式采集数据,再通过B/S模式在web端展示和配置。
zabbix支持监控各种系统平台,包括linux和windows等主流操作系统,也可以借助SNMP或者SSH协议监控路由交换设备。
zabbix如果部署在服务器上,可以监控其CPU、内存、网络等硬件参数,也可以监控具体服务或者应用程序,服务运行情况及性能。
硬件监控(zabbix IPMI interface)
系统监控(zabbix agent interface)
java监控(zabbix JMX interface)
网络设备监控(Zabbix SNMP Interface )
应用服务监控Zabbix Agent UserParameter
MySQL数据库监控:percona-monitoring-plulgins
URL监控:Zabbix Web 监控
也就是zabbix的最简单的架构,监控机器和被监控机器之间不经过任何处理,直接由zabbix-server和zabbix-agent之间进行数据交换。
适用于网络比较简单,尽量在局域网内,设备比较少的监控环境。
其中proxy是server、client之间沟通的一个桥梁,proxy本身没有前端,而且本身并不存放数据,只是将agentd发来的数据暂时存放,然后再交给server。
该架构经常是和master-node-client架构做比较。一般适用于跨机房、跨网络的中型网络架构的监控。
该架构是zabbix最负载的监控架构,使用于跨机房、跨网络设备较多的大型环境。每一个node都会同步server端。相当于也是一个server端
node下面可以接proxy,也可以直接接clinet。
node有自己的配置文件和数据库,其要做的是将配置信息和监控数据向master同步,master的故障或损不会对影响node节点的正常工作,但是会影响zabbix-server整体的完整性。
主机(host)
主机组(host group)
监控项(item)
触发器(trigger)
事件(event)
动作(action)
报警升级(escalation)
媒介(media)
通知(notification)
远程命令
模板(template)
应用(application)
web场景(web scennario)
前端(frontend)
Zabbix agent 安装在被监控的主机上,zabbix agent负责定期收集客户端本地各项数据,并发至 Zabbix server端,zabbix server收到数据后,将数据存储到数据库中。
用户基于Zabbix Web可以看到数据在前端展现图像。
当Zabbix监控监控某个具体项目,该项目会设置一个触发器阈值,当被监控的指标超过触发器设定的阈值,会进行一些必要的动作,动作包括: 发送信息(邮件、微信、短信、电话,钉钉)、发送命令(shell命令、rebbot、restart、install等)
当告警后,根据告警机制可以先自动处理(比如使用shell脚本启动nginx服务等),自动处理不了的,就会通知对应的运维人员进行处理。
原理总结
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_agent
zabbix_proxy
zabbix_get
zabbix_sebder
Zabbix-server 硬件内存至少2G,推荐4G
关闭防火墙、修改主机名
systemctl disable --now firewalld
setenforce 0
hostanamectl set-hostname zbx-server
获取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前端
下一步继续
输入数据库登录密码下一步
继续下一步
确认信息下一步
安装完成
登录zabbix前端界面
查看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端口。
关闭防火墙、增强功能、修改主机名
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su
配置时间同步
yum -y install ntpdate
ntpdate -u ntp.aliyun.com
zabbix-server服务端
zabbix-agent01客户端
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
#设置时区
配置zabbix的下载源,安装zabbix-agent2
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配置文件
cp /etc/zabbix/zabbix/zabbix_agent2.conf{,.bak}
vim /etc/zabbix/zabbix_agent2.conf时
Server=20.0.0.55 #80行,指定zabbix服务端ip
ServerActive=20.0.0.55 #124行,指定zabbix服务端ip
Hostname=zbx-agent01 #133行,设置客户端主机名
启动zabbix-agent2
systemctl enable --now zabbix-agent2
netstat -natp |grep 10050
在服务端验证连通性(服务端操作)
yum -y install zabbix-get.x86_64
#服务端安装zabbix主动获取数据的命令
zabbix_get -s '20.0.0.56' -p 10050 -k 'agent.ping'
#-k指定键,如果返回1,则表示能ping通
zabbix_get -s '20.0.0.56' -p 10050 -k 'system.hostname'
#获取客户端的主机名
zabbix_get -s '20.0.0.56' -p 10050 -k 'system.uname'
#获取客户端的内核版本
点击左边菜单栏【配置】中的【主机】,点击【创建主机】
{---------------------------------
【主机名称】设置成 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
点击 【添加】
点击左边菜单栏【配置】中的【主机】,点击【创建主机】