• 企业级监控方案——zabbix!(上)


    初识zabbix

    监控是整个运维以及产品在整个生命周期中最重要的一环,旨在事前能够及时告警通告故障,事中能够结合监控数据定位问题,事后能够提供数据分析问题

    zabbix是一个企业级的监控方案,我们可以通过zabbix第一时间了解到服务器的一些基本情况,保证服务可靠性安全性,或者当服务器出现异常时候及时采取措施,保证业务的稳定、可持续运行。

    除了zabbix,还有其他一些监控方案像CactiNagiosGangliaPromethus等等。

    特性

    说到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安装官网

    图片

    • 首先下载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
    
    • 1
    • 2
    • 3
    • 4
    • 接着下载数据库,实现数据存储的功能
    [root@server ~]# yum install mariadb-server -y
    
    #启动数据库并设置成开机自启动
    [root@server ~]# systemctl start mariadb
    [root@server ~]# systemctl enable mariadb
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 初始化数据库
    [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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    all privileges:表示将所有权限授予给用户。也可指定具体的权限,如:SELECT、CREATE、DROP等
    
    
    on:表示这些权限对哪些数据库和表生效,格式:数据库名.表名,这里写“*”表示所有数据库,所有表。如果我要指定将权限应用到test库的user表中,可以这么写:test.user
    
    
    to:将权限授予哪个用户。格式:”用户名”@”登录IP或域名”。%表示没有限制,在任何主机都可以登录。比如:”xianyu”@”192.168.0.%”,表示xianyu这个用户只能在192.168.0IP段登录
    
    
    identified by:指定用户的登录密码
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 导入表
    [root@server ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
    
    • 1

    导入之后验证一下

    图片

    • 我们对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
    
    • 1
    • 2
    • 3
    • 4
    • 进行前端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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 验证

    至此完成zabbix 服务端的部署,我们可以在浏览器输入:ip/zabbix 进行访问。

    图片

    图片

    图片

    图片

    至此我们成功登录zabbix的web页面,我们也可以点击左上角头像图标进行语言设置

    图片

    总结

    今天给大家简单介绍了一下zabbix以及zabbix-server的部署,由于篇幅问题,我打算在下一篇文章里面教大家如何进行zabbix-agent的部署以及自定义监控项对agent进行监控。

    后面还会将其中一台机器部署为zabbix-proxy,让大家对server+proxy架构有个更清晰的认识!

  • 相关阅读:
    Docker容器内使用Docker——DinD与DooD
    嵌入式开发基础之任务管理(线程管理)
    大数据Doris(二):Doris原理篇
    rust编程-rust所有权理解(chapter 4.1)
    Vue项目后台部分2,文件夹介绍,登录页面,路由的搭建,品牌管理页面使用element-ui动态展示
    Python GUI_Tinkter学习笔记
    常用的数据采集工具有哪些-免费获取数据信息的工具有哪些
    2023 年解锁物联网端点安全
    有营养的算法笔记五
    java对象与字节数组互转
  • 原文地址:https://blog.csdn.net/s_alted/article/details/126023922