zabbix介绍及部署

yuan 1年前 ⋅ 95 阅读

IT基础设施监控

本篇学习目标:zabbix
请运维朋友认真看完,真的很详细(虽然是5.0版本的)


一、zabbix的基本概述

Zabbix是一款功能强大的监控软件,可以监控各种网络参数,确保企业的服务架构安全运营。它还提供灵活的告警机制,使运维人员能够快速定位故障并解决问题。Zabbix支持分布式功能,适用于复杂架构下的监控解决方案,并且提供了直观的web页面,以便清晰展示主机监控情况。

zabbix官网地址为zabbix.com/,页面如下所示:


二、zabbix的构成

zabbix主要由以下5个组件构成:

1、Server

Zabbix Server是Zabbix的核心组件,用于存储所有的配置信息、统计信息和操作信息。Zabbix Agent负责向Zabbix Server报告可用性、完整性以及其他的统计信息。

2、web页面

作为IT工程师,您已经可以通过Web页面来访问和使用Zabbix系统的功能。Web页面是Zabbix系统的一部分,通常与Zabbix服务器部署在同一台物理设备上。然而,根据特殊情况的需要,它们也可以在不同的设备上进行配置。Web页面的主要目的是为了提供直观的监控信息,以便运维人员可以方便地进行监控和管理操作。

3、数据库

zabbix数据库内存储了配置信息、统计信息等zabbix的相关内容。

4、proxy

对于特定的生产环境,可以考虑是否采用或者放弃使用Zabbix Proxy。采用Zabbix Proxy可以替代Zabbix Server进行数据信息的采集,有效减轻Zabbix Server的负载。通常情况下,Zabbix Proxy适用于大型架构、Zabbix Server负载过重,以及企业设备跨机房、跨网段、Zabbix Server无法直接与Zabbix Agent通信的情况。

5、Agent

通常情况下,IT工程师会将Zabbix代理程序部署在需要被监控的对象上。这个代理程序能够主动监测本地资源和应用程序,并将监测到的数据发送给Zabbix服务器。

三、zabbix的监控对象

Zabbix拥有广泛的系统平台监控能力,包括主流操作系统如Linux和Windows,同时还能利用SNMP和SSH协议监控路由交换设备。

当在服务器上部署Zabbix时,可以监控CPU、内存、网络性能等硬件参数,并且能够监控特定的服务、应用程序以及它们的运行情况和性能指标。

硬件监控是通过Zabbix IPMI接口进行的。通过此接口,能够监测被监控对象的物理特征,如电压、温度、风扇状态和电源状态,利用标准IPMI硬件接口实现这一功能。

系统监控可以通过Zabbix Agent Interface实现,该接口使用专用的代理程序进行监控。与常见的master/agent模型相似,如果被监控的对象支持相应的代理程序,我们建议优先选择使用这种方式进行监控。

Java监控:Zabbix JMX接口是利用JMX(Java Management Extensions,即Java管理扩展)技术进行监控的一种选择,特别适用于监控JVM虚拟机。

网络设备监控的一种方法是使用Zabbix SNMP Interface,它通过SNMP协议与被监控的设备进行通信。SNMP协议的全称是简单网络管理协议,它允许我们在无法安装代理程序的硬件设备(如路由器或交换机)上进行监控,因为这些设备都支持SNMP协议。

应用服务监控:Zabbix Agent UserParameter

MySQL数据库监控:percona-monitoring-plulgins

URL监控:Zabbix Web 监控

四、zabbix的常用术语

zabbix的学习需要掌握一些zabbix的常用术语,zabbix常用术语列举如下:

1、主机(host)

要监控的设备,可以由IP或者是主机名(必须可解析)指定。

2、主机组(host group)

主机的逻辑容器,包含主机和模板,主机组通常在给用户或者是用户组指派监控权限时使用。

3、监控项(item)

监控指标数据包括某个特定监控对象的各项数据,例如内存大小、CPU使用率和服务运行状态等。这些监控项数据是从被监控对象获取的,并通过唯一的键标识每个监控项。

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 web根据这些数据在前端进行展示和绘图。

zabbix的数据收集分为两种模式:

1、主动模式

作为一名IT工程师,Zabbix客户端通过主动向Zabbix服务器请求监控项列表,然后主动提交监控项所需的数据给Zabbix服务器。

2、被动模式

zabbix server向 agent 请求获取监控项的数据,zabbix agent返回数据。

由此可以看出zabbix的主动和被动模式是以zabbxi客户端为基准的。

六、zabbix进程详解

默认情况下,Zabbix有六个工作进程,分别是:Zabbix Agent代理、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

作为一名IT工程师,我会以更专业的方式重新表达这段文字: Zabbix Proxy是Zabbix监控系统的代理程序。它扮演着类似于服务器的角色,作为一个中间站点来接收和处理数据,最终将收集到的数据重新提交给Zabbix服务器。

4、zabbix_get

作为zabbix工具之一,zabbix_get通常在zabbix_server或者zabbix_proxy上进行运行,用于远程获取客户端信息。该工具常用于排查和解决问题。

5、zabbix_sender

Zabbix Sender是Zabbix的一个工具,通常运行在Zabbix客户端上,用于执行耗时较长的检查任务,并主动向服务器发送数据。

6、zabbix_java_gateway

zabbix_java_gateway是自zabbix 2.0以后引入的新功能,专为处理JAVA设备而设计。然而,其功能仅限于主动获取数据,无法被动接收数据。

七、zabbix的监控框架

根据不同的网络环境和监控规模,Zabbix提供了三种框架,分别为server_client架构、master_node_client架构和server_proxy_client架构。这些框架在实际工作中发挥着重要的作用。

1、server_client架构

Zabbix的架构十分简单,其监控设备与被监控设备之间直接通过直连方式进行通信,并且Zabbix Server和Zabbix Client之间也直接交换数据。

2、zabbix_proxy_client架构

代理是连接服务器和客户端之间的桥梁,它本身不存储数据,只是暂时保存来自Zabbix代理端的数据,并将其提交给服务器。这种架构通常适用于跨机房、跨网络的中型网络架构。

在server_proxy_client架构中,server设备的宕机会导致整个系统瘫痪而无法正常工作。

3、master_node_client架构

Master_node_client架构是Zabbix中最复杂的架构之一。它通常被应用于跨机房、跨网络以及具有大量监控设备的大型网络架构中。与Server_proxy_client架构相比,Master_node_client架构的主要区别在于Node和Proxy的部署。

在master_node_client架构中,每个node可被视为一个小型的服务器,在其配置文件和数据库之下,node下游能够直接连接client,或者经过proxy代理后再次连接client。

在master_node_client架构中,master设备宕机不会影响node节点的正常工作。

7.1 三种架构模式的架构图如下:

7.2 每个模块的工作职责:

作为核心组件,Zabbix Server用于获取agent的存活状态和监控数据。所有的配置、统计和操作数据都通过Server存取到数据库中。

2、Zabbix_Database:用户存储所有的zabbix的配置信息、监控数据的数据库;

3、Zabbix_Web是Zabbix系统的web界面,由管理员用于管理Zabbix配置和查看相关监控信息。通常情况下,Zabbix_Web与Zabbix服务器在同一主机上运行,但也可以独立部署在其他服务器上。

Zabbix Proxy是一个用于分布式监控的组件,其主要功能是代理Zabbix Server收集部分主机监控数据并将其统一发送给服务器端。通常情况下,当需要监控的主机数量超过500台时,使用Zabbix Proxy可以更好地管理监控数据。

5、Zabbix_Agent:部署在被监控主机上,负责收集被监控主机的数据,并发送给servre端或者proxy端;

每个Zabbix服务器、代理和代理程序都具有自己的配置文件和日志文件。这些文件包含了重要的参数,需要在文件中进行配置。稍后将详细说明这些参数。

八、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 repo.zabbix.com/zabbix/
sed -i.bak 's#Zabbix Official Repository' 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,请在服务器上检查是否已安装相关软件包,并确认配置是否按照先前的更改进行。

配置数据库连接

输入连接数据库所需的详细信息。zabbix数据库必须先建立好。

Zabbix server服务器详情

请提供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)"标签下点击"增加(Add)"按钮。

在这个对话框中,为用户输入一个Email地址。

你可以为媒介指定一个时间活动周期,(访问时间周期说明

作为一位IT工程师,您可以通过自定义触发器来激活媒介并设置不同的严重等级。媒介默认情况下始终是活动的,并且所有的等级默认都是启用状态。

选择用户身份(如果需要该用户接收告警通知,需要超级 管理员类型)


9.4 添加权限

默认情况下,新用户不具备访问主机的权限。如果要为用户授予权限,请在“组”列中点击相应的用户组(例如在此例中为"administrators"组)。然后,在“组属性”表单中,切换到“权限”选项卡。

假设您是一个IT工程师,用户要求获得Linux Server组的只读访问权限。您需要设置适当的权限级别,并将其添加到权限列表中。请单击"用户组属性"表单中的"更新"按钮以完成操作。

在Zabbix系统中,请注意主机的访问权限是通过用户组进行分配的,而不是单独的用户。已经完成了权限设置!请尝试使用新用户的登录凭据进行登录。


9.5 如何修改超级用户 Admin 的密码

十、部署被监控的主机

1、修改源

rpm -ivh repo.zabbix.com/zabbix/

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 repo.zabbix.com/zabbix/
sed -i.bak 's#Zabbix Official Repository' 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"

————————————————

本文由我作为一名IT工程师创作,并遵循CC 4.0 BY-SA版权协议,不得擅自转载。如需转载,请务必附上原文出处链接并注明本声明。

原文链接:zabbix介绍及部署(超详细讲解)_微笑着敲代码的博客-CSDN博客(侵删)



如果本文对你有帮助的话,欢迎点赞&在看&转发,这对我继续分享&创作优质文章非常重要。感谢

如有错误或其它问题,欢迎小伙伴留言评论、指正。

更多相关Linux运维技术文章,请持续关注:程序员加油站

参考链接:https://zhuanlan.zhihu.com/p/614847827

关于纵目

江苏纵目信息科技有限公司是一家专注于运维监控软件产品研发与销售的高科技企业。覆盖全链路应用性能监控、IT基础设施监控、物联网数据采集数据观测等场景,基于Skywalking、Zabbix、ThingsBoard等开源体系构建了ArgusAPM、ArgusOMS、ZeusIoT等产品,致力于帮助各行业客户构建集聚可观测性的统一运维平台、物联网大数据平台。

  点赞 0   收藏 0
  • yuan
    共发布32篇文章 获得1个收藏
全部评论: 0