初识zabbix
监控是整个运维以及产品在整个生命周期中最重要的一环,旨在事前能够及时告警通告故障,事中能够结合监控数据定位问题,事后能够提供数据分析问题
zabbix是一个企业级的监控方案,我们可以通过zabbix第一时间了解到服务器的一些基本情况,保证服务可靠性安全性,或者当服务器出现异常时候及时采取措施,保证业务的稳定、可持续运行。
除了zabbix,还有其他一些监控方案像Cacti、Nagios、Ganglia、Promethus等等。
特性
说到zabbix的优点,我第一个想到的就是开源,极大地减少了企业的成本投入;其次是功能较为齐全,自带多种监控模板,满足各种监控需求;在一些分布式集群中,zabbix支持分布式集中管理,而且有自动发现功能,可以实现自动化监控,极大地提高了运维效率。
缺点:
- 需要在被监控主机上安装zabbix-agent
- 所有数据都存放在数据库里面,数据库容易成为瓶颈
- 自定义报警监控项需要自己定义,过程较为繁琐
zabbix架构以及组件结构
- zabbix-server:整个监控体系中最核心的组件,它负责接收客户端发送的报告信息,所有配置、 统计数据及操作数据都由它组织。
- Database:所有配置信息和zabbix收集到的数据都存储在数据库中。
- zabbix-proxy:用于分布式系统中,可以代理zabbix-server的功能,减轻server的压力。
- zabbix-agent:客户端软件,装在被监控主机上,用于采集监控数据,并把采集到的的数据发送给proxy或者server。
- web界面:web界面可以让用户随时随地都能够轻松的访问到zabbix,是zabbix-server的一部分,通常跟server运行在同一台物理机上。
监控方式
zabbix有两种监控方式——主动模式和被动模式
- 主动模式
- agent主动向zabbix-server请求与自己相关的监控项配置,主动将监控数据发送给server(有proxy情况下发送给proxy)
- 被动模式
- server向agent请求获取监控数据,agent收到请求,之后获取数据并响应给server
这两个方式的区别在于主动模式能够极大地节约server的资源,不需要server自己去找agent要,一般生产环境里面大多都是设置成主动模式。
zabbix-server部署
介绍完zabbix的一些基础知识后,我们少说多做——搭建一个简单分布式集群并使用zabbix对集群进行监控。
有三台虚拟机,一台为zabbix-server,另外两台为zabbix-agent
server:192.168.244.141
agent1:192.168.244.128
agent2:192.168.244.129
架构图如下:
- 首先下载Zabbix-server所需组件
[root@server ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@server ~]# yum clean all
[root@server ~]# yum install zabbix-server-mysql zabbix-web-mysql -y
- 接着下载数据库,实现数据存储的功能
[root@server ~]# yum install mariadb-server -y
#启动数据库并设置成开机自启动
[root@server ~]# systemctl start mariadb
[root@server ~]# systemctl enable mariadb
- 初始化数据库
[root@server ~]# # mysql -uroot -p
password :#回车即可
#创建一个名为zabbix的库并设置为utf8的字符编码格式
mysql> create database zabbix character set utf8 collate utf8_bin;
#创建用户并授权设置密码
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> flush privileges;
mysql> quit;
all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等
on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”xianyu”@”192.168.0.%”,表示xianyu这个用户只能在192.168.0IP段登录
identified by:指定用户的登录密码
- 导入表
[root@server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
导入之后验证一下
- 我们对zabbix-server进行配置数据库密码
配置文件路径:
/etc/zabbix/zabbix_server.conf
[root@server ~]# vim /etc/zabbix/zabbix_server.conf
DBPassword=password
[root@server ~]# systemctl start zabbix-server.service
[root@server ~]# systemctl enable zabbix-server.service
- 进行前端php配置
[root@server ~]# vim /etc/httpd/conf.d/zabbix.conf
#这里我们修改时区为亚洲上海即可
php_value date.timezone Asia/Shanghai
#启动服务
[root@node1 ~]# systemctl start httpd
[root@node1 ~]# systemctl enable httpd
- 验证
至此完成zabbix 服务端的部署,我们可以在浏览器输入:ip/zabbix 进行访问。
至此我们成功登录zabbix的web页面,我们也可以点击左上角头像图标进行语言设置
总结
今天给大家简单介绍了一下zabbix以及zabbix-server的部署,由于篇幅问题,我打算在下一篇文章里面教大家如何进行zabbix-agent的部署以及自定义监控项对agent进行监控。
后面还会将其中一台机器部署为zabbix-proxy,让大家对server+proxy架构有个更清晰的认识!