zabbix介绍及部署(超详细讲解)_zabbix

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

    目录


    一、zabbix的基本概述

    二、zabbix的构成

    三、zabbix的监控对象

    四、zabbix的常用术语

    五、zabbix的工作流程

    六、zabbix进程详解

    七、zabbix的监控框架

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

    7.2 每个模块的工作职责

    八、zabbix源码安装及部署

    一、服务端安装

    1.1 安装zabbix5.0储存库二进制安装方式

    1.2 安装zabbix软件包

    1.3 安装zabbix前端软件包

    1.4 安装数据库软件

    1.5 数据库配置

    1.6 启动并查看

    1.7 zabbix 服务端一键安装脚本

    二、zabbix服务参数介绍

    九、web页面设置

    9.1 修改界面的语言

    9.2 修改登录密码此处我设置为123456

    9.3 用户及媒介创建

    9.4 添加权限

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

    十、部署被监控的主机

    1、修改源

    2、下载agent包并查看

    3、修改agent配置文件

    4、zabbix客户端一键安装脚本



    一、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支持监控各种系统平台包括LinuxWindows等主流操作系统也可以借助SNMP或者是SSH协议监控路由交换设备。

    zabbix如果部署在服务器上可以监控其CPU、内存、网络性能等硬件参数也可以监控具体的服务或者应用程序、服务运行情况及性能。

    硬件监控Zabbix IPMI Interface 通过IPMI接口进行监控我们可以通过标准的IPMI硬件接口监控被监控对象的物理特征比如电压、温度、风扇状态、电源状态等。

    系统监控Zabbix Agent Interface 通过专用的代理程序进行监控与常见的master/agent模型类似如果被监控对象支持对应的agent推荐首选这种方式。

    Java监控Zabbix JMX Interface 通过JMX进行监控JMXjava 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_agentdzabbix_getzabbix_proxyzabbix_senderzabbix_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_Serverzabbix_server作为核心组件用来获取agent存活情况和监控数据。所有的配置、统计、操作数据均通过server进行存取到database

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

    3、Zabbix_Webzabbix的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"

     

  • 阿里云国际版折扣https://www.yundadi.com

  • 阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6