Zabbix介绍及部署(超详细讲解)
入门小站 入门小站 2022-12-15 21:30 发表于湖北 收录于合集 #Linux651个 #Zabbix1个 入门小站 分享运维技巧及10k+Stars的开源项目 214篇原创内容 公众号【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
一、[zabbix]的基本概述
zabbix 是一个监控软件,其可以监控各种网络参数,保证企业服务架构安全运营,同时支持灵活的告警机制,可以使得运维人员快速定位故障、解决问题。zabbix 支持分布式功能,支持复杂架构下的监控解决方案,也支持 web 页面,为主机监控提供了良好直观的展现。
zabbix 官网地址为 https://www.zabbix.com/,页面如下所示:
二、zabbix 的构成
zabbix 主要由以下 5 个组件构成:
1、Server
zabbix server 是 zabbix 的核心组件,server 内部存储了所有的配置信息、统计信息和操作信息。zabbix agent 会向 zabbix server 报告可用性、完整性及其他统计信息。
2、web 页面
web 页面也是 zabbix 的一部分,通常和 zabbix server 位于一台物理设备上,但是在特殊情况下也可以分开配置。web 页面主要提供了直观的监控信息,以方便运维人员监控管理。
3、数据库
zabbix 数据库内存储了配置信息、统计信息等 zabbix 的相关内容。
4、proxy
zabbix proxy 可以根据具体生产环境进行采用或者放弃。如果使用了 zabbix proxy,则其会替代 zabbix server 采集数据信息,可以很好的分担 zabbix server 的负载。zabbix proxy 通常运用与架构过大、zabbix server 负载过重,或者是企业设备跨机房、跨网段、zabbix server 无法与 zabbix agent 直接通信的场景。
5、Agent
zabbix agent 通常部署在被监控目标上,用于主动监控本地资源和应用程序,并将监控的数据发送给 zabbix server。
三、zabbix 的监控对象
zabbix 支持监控各种系统平台,包括Linux 和Windows 等主流操作系统,也可以借助 SNMP 或者是 SSH 协议监控路由交换设备。
zabbix 如果部署在服务器上,可以监控其 CPU、内存、网络性能等硬件参数,也可以监控具体的服务或者应用程序、服务运行情况及性能。
硬件监控: Zabbix IPMI Interface ,通过 IPMI 接口进行监控,我们可以通过标准的 IPMI 硬件接口,监控被监控对象的物理特征,比如电压、温度、风扇状态、电源状态等。
系统监控: Zabbix Agent Interface ,通过专用的代理程序进行监控,与常见的 master/agent 模型类似,如果被监控对象支持对应的 agent,推荐首选这种方式。
Java 监控: Zabbix JMX Interface ,通过 JMX 进行监控,JMX(java management extensions,即 java 管理扩展),监控 JVM 虚拟机时,使用这种方法是非常不错的选择。
网络设备监控: Zabbix SNMP Interface ,通过 SNMP 协议与被监控对象进行通信,SNMP 协议的全称为 simple network management protocol,被译为简单网络管理协议,通常来说,我们无法在路由器、交换机这种硬件上安装 agent,但是这些硬件都支持 SNMP 协议。
应用服务监控: Zabbix Agent UserParameter
MySQL 数据库监控: percona-monitoring-plulgins
URL 监控: Zabbix Web 监控
四、zabbix 的常用术语
zabbix 的学习需要掌握一些 zabbix 的常用术语,zabbix 常用术语列举如下:
1、主机(host)
要监控的设备,可以由 IP 或者是主机名(必须可解析)指定。
2、主机组(host group)
主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。
3、监控项(item)
一个特定监控指标的相关数据,比如内存的大小、CPU 的使用率,甚至是服务的运行状态等等。监控项数据来源于被监控对象,并且每个监控项都由一个 key 来标识。
4、触发器(trigger)
一个表达式,用于评估监控项的值是否在合理的范围内。当接收的值超出触发器的规定时,就被认为是故障,如果超出后再次符合,就被认为是正常。
5、事件(event)
触发器触发的一个特定事件,或者是 zabbix 定义的一个自动上线注册主机的事件。
6、动作(action)
指根据配置,zabbix 对于触发器触发的特定事件进行处理的具体措施,如执行某个脚本,或者是向管理员邮箱发送邮件等等。
7、报警升级(escalation)
发送警报或者是执行远程命令的自定义方案。
8、媒介(media)
发送通知(告警)的手段,如微信、邮件、钉钉等等。
9、通知(notification)
通过指定的媒介,向用户发送的有关事件的信息。
10、远程命令(remote command)
指运维人员提前写好的命令,可以让被监控主机在触发事件后执行。
11、模板(template)
用于快速定义被监控主机的预设条目集合,通常包括了监控项、触发器、应用等,模板可以直接链接至某个主机。
12、应用(application)
一组监控项的集合。
13、web 场景(web scennario)
用于检测 web 站点可用性的一个或多个 HTTP 请求。
14、前端(frontend)
zabbix 的 web 接口。
这些术语,我们都会在后文中直接使用而不过多赘述,在企业技术交流中也会经常使用。
五、zabbix 的工作流程
Zabbix 在进行监控时,zabbix 客户端要安装在被监控设备上,负责定期收集数据,并将其发送给 zabbix 服务端;zabbix 服务端要安装在监控设备上,其将 zabbix 客户端发送的数据存储的数据库中,zabbix web 根据数据在前端进行展示和绘图。
zabbix 的数据收集分为两种模式:
1、主动模式
zabbix 客户端主动向 zabbix server 请求监控项列表,并主动将监控项内需要的数据提交给 zabbix server。
2、被动模式
zabbix server 向 agent 请求获取监控项的数据,zabbix agent 返回数据。
由此可以看出 zabbix 的主动和被动模式是以 zabbxi 客户端为基准的。
六、zabbix 进程详解
在默认的情况下,zabbix 有 6 个工作进程;分别是 zabbix_agentd,zabbix_get,zabbix_proxy,zabbix_sender,zabbix_server 和 zabbix_gateway。
其中,zabbix_java_gateway 是可选进程。这 6 个进程的作用如下:
1、zabbix_agentd
zabbix-agentd 为 zabbix客户端守护进程 ,主要负责收集客户端监控项数据。
2、zabbix_server
zabbix_server 为 zabbix服务端守护进程,主要负责收集 zabbix 客户端数据。(端口为 10051)
3、zabbix_proxy
zabbix_proxy 是 zabbix 的代理程序,其功能类似于 server,作用上类似于一个中转站,最终会把收集的数据再次提交给 zabbix_server。
4、zabbix_get
zabbix_get 作为 zabbix 工具,通常运行在 zabbix_server 或者 zabbix_proxy 上,用于远程获取客户端信息,通常用于排错。
5、zabbix_sender
zabbix_sender 也是 zabbix 的一个工具,通常运行在 zabbix 的客户端,用于耗时比较长的检查,其作用是主动发送数据。
6、zabbix_java_gateway
zabbix_java_gateway 是 zabbix2.0 以后引入的新功能,可以用于 JAVA 方面的设备;但是只能主动获取数据,而不能被动获取数据。
七、zabbix 的监控框架
在实际的工作环境中,根据网络环境和监控的规模不同,zabbix 一共有三种框架,分别是 server_client 架构、master_node_client 架构和 server_proxy_client 架构。
1、server_client 架构
zabbix 最简单的架构,监控设备和被监控设备之间直接相连,zabbix_server 和 zabbix_client 之间直接进行数据交互。
2、zabbix_proxy_client 架构
proxy 是连接 server 和 client 之间的桥梁,其本身不存放数据,只是将 zabbix_agent 端发来的数据暂存,然后再提交给 server。这种架构一般用于跨机房、跨网络的中型网络架构。
在 server_proxy_client 架构中,server 设备的宕机会导致整个系统瘫痪而无法正常工作。
3、master_node_client 架构
master_node_client 架构是 zabbix 最复杂的架构。一般用于跨机房、跨网络、监控设备较多的大型网络架构。与 server_proxy_client 架构相比,master_node_client 架构的主要区别在于 node 与 proxy 上.
在 master_node_client 架构中,每个 node 可以理解为一个小的 server 端,在自己的配置文件和数据库,node 下游可以直接连接 client,也可以再次经过 proxy 代理后连接 client。
在 master_node_client 架构中,master 设备宕机不会影响 node 节点的正常工作。
7.1 三种架构模式的[架构图]如下:
7.2 每个模块的工作职责:
1、Zabbix_Server:zabbix_server 作为核心组件,用来获取 agent 存活情况和监控数据。所有的配置、统计、操作数据均通过 server 进行存取到 database;
2、Zabbix_Database:用户存储所有的 zabbix 的配置信息、监控数据的数据库;
3、Zabbix_Web:zabbix 的 web 界面,管理员通过 web 界面管理 zabbix 配置以及查看 zabbix 相关监控信息,通常与 zabbix_server 运行在同一台主机上,也可以单独部署在独立的服务器上;
4、Zabbix_Proxy:通常用于分布式监控,代理 zabbix_server 收集部分被监控的数据并统一发送给 server 端;(通常大于 500 台主机需要使用)
5、Zabbix_Agent:部署在被监控主机上,负责收集被监控主机的数据,并发送给 servre 端或者 proxy 端;
Zabbix Server、Proxy、Agent 都有自己的配置文件以及 log 文件,重要的参数需要在这里配置,后面会详细说明。
八、zabbix 源码安装及部署
一、服务端安装
1.1 安装 zabbix5.0 储存库(二进制安装方式)
rpm-Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
这时候你查看一下你的库里面会有一个 zabbix 库
1.2 安装 zabbix 软件包
可选配置:如果官方仓库无法连接,可将仓库地址改为清华大学,下边是清华大学仓库地址
> vim /etc/yum.repos.d/zabbix.repo
> [zabbix]
> name=Zabbix Official Repository - $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/
> enabled=1 gpgcheck=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
> ZABBIX-A14FE591
>
> [zabbix-frontend]
> name=Zabbix Official Repository frontend -
> $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/frontend enabled=0
> gpgcheck=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
> ZABBIX-A14FE591
>
> [zabbix-debuginfo]
> name=Zabbix Official Repository debuginfo -
> $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/ enabled=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-
> ZABBIX-A14FE591
> gpgcheck=0
>
> [zabbix-non-supported]
> name=Zabbix Official Repository non-supported
> - $basearch
> baseurl=https://mirrors.tuna.tsinghua.edu.cn/zabbix/non-supported/rhel/7/$basearch/ enabled=1
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY- ZABBIX
> gpgcheck=0
>
> 启用 zabbix-frontend 存储库
> vim /etc/yum.repos.d/zabbix.repo
> ...
> [zabbix-frontend]
> name=Zabbix Official Repository frontend -
> $basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ zabbix/zabbix/5.0/rhel/7/$basearch/frontend
> enabled=1 # 启用仓库
> gpgcheck=0
> gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY- ZABBIX-A14FE591
1.3 安装 zabbix 前端软件包
> zabbix-web-mysql-scl 用于连接数据库
> zabbix-apache-conf-scl 用于连接 apache
> yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl
>
> 如果缺包加入以下两个库
>
> yum -y install epel-release
>
> yum install centos-release-scl
这时候提示我们缺包,我们可以下载另外两个库
下载完成后可以继续下载那两个包
1.4 [安装数据库]软件
> yum install -y mariadb-server
>
> systemctl start mariadb #启动数据库
>
> systemctl enable mariadb #设置开机自启
1.5 数据库配置
> #进入数据库
> mysql
>
> 创建存储数据的库,并支持中文(库名:zabbix)
> MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
>
> #授权连接数据库的用户,并设置密码(用户名:zabbix)
> MariaDB [(none)]> create user zabbix@localhost identified by '123456';
>
> #数据库授权
> MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
>
> #查看所有库
> MariaDB [(none)]> show databases;
> +--------------------+
> | Database |
> +--------------------+
> | information_schema |
> | mysql |
> | performance_schema |
> | test |
> | zabbix |
> +--------------------+
> 5 rows in set (0.01 sec)
>
> #进入 zabbix 库
> MariaDB [(none)]> use zabbix;
> Database changed
>
> #查看当前库下表
> MariaDB [zabbix]> show tables;
> Empty set (0.00 sec) # 空
>
> #在 Zabbix 服务器主机上,导入初始架构和数据。系统将提示您输
> 入新创建的密码
> zcat /usr/share/doc/zabbix-server- mysql*/create.sql.gz | mysql -uzabbix -p zabbix
> Enter password: password # 输入 zabbix 用户密码
>
> #Zabbix 服务器配置数据库
> vim /etc/zabbix/zabbix_server.conf
> 100 DBName=zabbix #存储监控数据的库名
> 116 DBUser=zabbix #连接数据库的用户
> 124 DBPassword=123456 #设置 zabbix 用户密码
>
> #为 Zabbix 配置正确的时区
> vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
> php_value[date.timezone] = Asia/Shanghai # 亚洲 / 上海
进入数据库
创建存储数据的库,并支持中文(库名:zabbix)
授权连接数据库的用户,并设置密码(用户名:zabbix)
数据库授权,在本地登录
查看所有库
进入 zabbix 数据库并查看当前库下的表
在 Zabbix服务器主机上,导入初始架构和数据。系统将提示您输入新创建的密码(要先退出数据库)**
Zabbix 服务器配置数据库
为 Zabbix 配置正确的时区
1.6 启动并查看
> #启动所有服务
> systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
>
> #设置服务随机自启
> systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
>
> #查看 zabbix 服务占用端口信息
> netstat -anptul | grep zabbix
> tcp LISTEN 0 128 *:10051
> #zabbix-server 端口
> tcp LISTEN 0 128 *:10050
> #zabbix-agent 端口
启动所有服务并设置开机自启
查看 zabbix 服务占用端口信息
1.7 zabbix 服务端一键安装脚本
> #!/bin/bash
> #Zabbix-Server 5.0
>
> #安装 zabbix 源、aliyun YUM 源
> cd /etc/yum.repos.d/
> rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
> sed -i.bak 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' zabbix.repo
> sed -i 's#enabled=0#enabled=1#' zabbix.repo
>
> #安装 zabbix
> yum -y install zabbix-server-mysql zabbix-agent
> yum -y install centos-release-scl
> yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
>
> #安装启动 mariadb 数据库
> yum -y install mariadb mariadb-server httpd
> systemctl start mariadb.service
>
> #创建数据库
> mysql -e 'create database zabbix character set utf8 collate utf8_bin;'
> mysql -e 'grant all privileges on zabbix.* to zabbix@localhost identified by"zabbix";'
> mysql -e 'flush privileges;'
>
> #导入数据
> zcat /usr/share/doc/zabbix-server-mysql-5.0.3/create.sql.gz|mysql -uzabbix -pzabbix -Dzabbix
>
> #配置 zabbixserver 连接 mysql
> sed -i.bak '/^# DBPassword=*/i DBPassword=zabbix' /etc/zabbix/zabbix_server.conf
>
> #添加时区
> sed -i.bak '/^; php_value[date.timezone]*/i php_value[date.timezone] = Asia/Shanghai' /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
>
> #解决中文乱码
> yum -y install wqy-microhei-fonts
> \cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
>
> #启动服务
> systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
>
> #开机自启动
> systemctl enable mariadb.service
> systemctl enable httpd
> systemctl enable zabbix-server
>
> #输出信息
> echo "浏览器访问 http://`hostname -I|awk'{print $1}'`/zabbix"
二、zabbix 服务参数介绍
zabbix server 服务名:zabbix-server 端口:10051
zabbix agent 服务名:zabbix-agent 端口:10050
zabbix server 主配置文件:/etc/zabbix/zabbix_server.conf
zabbix agent 主配置文件:/etc/zabbix/zabbix_agentd.conf
zabbix 企业微信报警脚本路径:/usr/lib/zabbix/alertscripts
zabbix 自定义监控项路径:/etc/zabbix/zabbix_agentd.d zabbix
日志文件路径:/var/log/zabbix/
九、web 页面设置
从浏览器上打开 Zabbix 前端访问 URL. 如果你是从 packages 方式安装 Zabbix, URL 是:
对应 Apache: http:///zabbix
对应 Nginx: http://
您看到的第一个 Web 前端安装向导页面如下:
先决条件检查
请确保先满足所有软件先决条件. 这里的 Check of pre- requisites 必须全部项目 OK 后才能继续配置,如有提示 fail,去 server 上检查是否安装这个包或配置是否按上述更改
配置数据库连接
输入连接数据库所需的详细信息。zabbix 数据库必须先建立好。
Zabbix server 服务器详情
请输入 Zabbix 服务器详情,可选的输入 Zabbix 服务器的名 字, 然而, 如果输入并提交了, Zabbix 服务器的名字将会显示在菜单和页面的标题。
安装前总结
回顾所有配置
完成安装
如果webserver用户对conf/目录有写访问权,配置文件 将自动保存,并且可以立即进入下一步
web 界面登陆
zabbix 前端已经安装完成!超级用户名是 Admin,密码是 zabbix
为了防止暴力破解和词典攻击,如果发生连续五次尝试登陆失败,Zabbix 接口将暂停 30 秒。
在下次成功登陆后,将会在界面上显示登录尝试失败的 IP 地址。
web 界面概览
侧边栏的垂直菜单可访问 Zabbix 前端各个部分。
菜单默认使用深蓝主题。
菜单可以整个折叠或隐藏:
折叠, 单击 Zabbix logo 旁边的
隐藏, 单击 Zabbix logo 旁边的
折叠菜单
当菜单折叠为图标时,将鼠标光标放在菜单上,就会重新 显示完整菜单。 需要注意菜单只是重新浮在页面内容上; 要将页面内容移至右侧,您必须单击展开按钮。 如果再次 将鼠标光标置于整个菜单之外,则该菜单将在两秒钟后再 次折叠。
隐藏菜单
即使菜单被完全隐藏,只需要通过鼠标单击汉堡图标即可 获得完整的菜单。需要注意的是它只是重新浮现在页面内 容上;要将页面内容移至右侧,您必须通过单击显示侧边 栏按钮来取消隐藏菜单。
9.1 修改界面的语言
更改完成后
9.2 修改登录密码(此处我设置为 123456)
9.3 用户及媒介创建
添加用户
可以在管理(Administration)→用户(Users)下查看用户信息。
点击 创建用户(Create user)以增加用户。
在添加用户的表单中,请确保将新增的用户添加到了一个已有的用户组,比如'Zabbix administrators'。
所有必填项都以红色星标标记。
默认情况下,没有为新增的用户定义媒介(media,即通 知发送方式) 。如需要创建,可以到 媒介(Media)标签 下,然后点击 增加(Add)。
在这个对话框中,为用户输入一个 Email 地址。
你可以为媒介指定一个时间活动周期,(访问时间周期说明
页面,查看该字段格式的描述)。默认情况下,媒介一直 是活动的。你也可以通过自定义触发器严重等级来激活媒介,默认所有的等级都保持开启。
选择用户身份(如果需要该用户接收告警通知,需要超级 管理员类型)
9.4 添加权限
默认情况下,新用户没有访问主机的权限。若要授予用户 权限,请单击 “组” 列中的用户组 (在本例中 为 "administrators" 组)。在“组属性” 表单中,转到“权限” 选项卡。
此用户是要有只读访问 Linux Server 组的权限, 设置权限级别,然后添加到权限列表中。 在 “用户组属性” 表单中, 单击“更新。
重要提醒:在 Zabbix 中,主机的访问权限被分配给用户组, 而不是单独的用户。权限设置完成了!您可以尝试使用新用户的凭据登录。
9.5 如何修改超级用户 Admin 的密码
十、部署被监控的主机
1、修改源
> rpm -ivh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.24-1.el7.x86_64.rpm
2、下载 agent 包并查看
3、修改 agent 配置文件
> vim /etc/zabbix/zabbix_agentd.conf
> 117 Server=192.168.63.20 #指定 zabbix server 地 址
>
> #启动服务并设置服务随机自启
> systemctl start zabbix-agent
> systemctl enable zabbix-agent
4、zabbix 客户端一键安装脚本
> #!/bin/bash
> #Zabbix-Agent 5.0
>
> Zabbix_Service=192.168.63.20
>
> #安装 zabbix 源、aliyun YUM 源
> cd /etc/yum.repos.d/
> rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
> sed -i.bak 's#repo.zabbix.com#mirrors.aliyun.com/zabbix#' zabbix.repo
> sed -i 's#enabled=0#enabled=1#' zabbix.repo
>
> #安装 zabbix
> yum -y install zabbix-agent
>
> #修改配置文件
> sed -i.bak "s/^Server=127.0.0.1/Server=$Zabbix_Service/" /etc/zabbix/zabbix_agentd.conf
> sed -i "s/^ServerActive=127.0.0.1/ServerActive=$Zabbix_Service/" /etc/zabbix/zabbix_agentd.conf
> sed -i "/^Hostname=/c Hostname=$(echo `hostname`)" /etc/zabbix/zabbix_agentd.conf
>
> #开启 zabbix-agent 服务 10050 端口
> systemctl start zabbix-agent
>
> #设置开机自启
> systemctl enable zabbix-agent
>
> #输出提示
> echo -e "Now you can use \033[32mnetstat -tnlp\033[0m check \033[33mport:10050\033[0m"
【Linux250个常用命令速查手册】关注【入门小站】,后台回复 「1001」 自取。
近期热文
入门小站 分享运维技巧及10k+Stars的开源项目 214篇原创内容 公众号 收录于合集 #Linux 651个 下一篇linux中管理文件类型和系统时间的5个有用命令 阅读 1008 标签:基础,Zabbix,agent,server,etc,zabbix,监控,搭建 From: https://www.cnblogs.com/cherishthepresent/p/16986713.html