• 成熟企业级开源监控解决方案Zabbix6.2关键功能实战-下


    @

    实战

    Zabbix server源码安装使用示例

    部署

    # 下载zabbix的源码包
    wget https://github.com/zabbix/zabbix/archive/refs/tags/6.2.4.tar.gz
    # 解压下载好的zabbix源安装包
    mkdir /usr/local/zabbix
    tar -zxvf zabbix-6.2.4.tar.gz -C /usr/local/zabbix/
    # 为编译安装依赖
    yum -y install net-snmp-devel libevent-devel mysql-devel libxml2-devel curl-devel gcc gcc-c++ pcre-devel OpenIPMI-devel
    cd /usr/local/zabbix/zabbix-6.2.4
    ./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
    make install
    

    配置

    mysql就使用前面部署好的容器zabbix-docker-624_mysql-server_1,通过docker inspect zabbix-docker-624_mysql-server_1找到"IPAddress": "172.16.239.2"

    vi /usr/local/zabbix/etc/zabbix_server.conf

    DBHost=172.16.239.2                      ---数据库本机
    DBName=zabbix                         ---数据库库名   
    DBUser=zabbix                         ---数据库账号
    DBPassword=zabbix                        ---数据库密码
    DBSocket=/var/lib/mysql/mysql.sock    ---指定sock路径
    ListenPort=10051                      ---服务端监听端口
    ListenIP=0.0.0.0                      ---监听IP范围
    
    # 停掉基于容器的zabbix-agent和zabbix-server
    docker stop zabbix-agent1
    docker stop zabbix-docker-624_zabbix-server_1
    # 复制启动配置
    cp /usr/local/zabbix/zabbix-6.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
    # 修改BASEDIR
    vim /etc/init.d/zabbix_server
    BASEDIR=/usr/local/zabbix
    # 启动zabbix-server
    service zabbix_server start
    

    image-20221107143458097

    由于前面是容器启动修改主机Zabbix server,这里修改为本机127.0.0.1地址,

    image-20221107151956408

    vi /usr/local/zabbix/etc/zabbix_agentd.conf ,下面这三项保持默认设置即可

    Server=127.0.0.1         ---填写server端IP,server链接agent获取数据           
    ServerActive=127.0.0.1   ---填写server端IP,agent主动提交数据
    Hostname=Zabbix server   ---给agent设定一个名字,默认为Zabbix server
    
    # 复制服务配置
    cp /usr/local/zabbix/zabbix-6.2.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
    vi /etc/init.d/zabbix_agentd
    BASEDIR=/usr/local/zabbix
    # 启动服务
    service zabbix_agentd start
    

    查看zabbix-server和zabbix-agent的进程信息和监听端口

    image-20221107152528723

    等待一小段时间后查看web的主机信息Zabbix server已为可用状态

    image-20221107152635925

    Zabbix agent2使用示例

    部署

    部署Agent和Agent2使用rpm安装是比较方便的

    # 安装Zabbix仓库
    rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm
    yum clean all
    # 安装Zabbix agent2
    yum install zabbix-agent2 zabbix-agent2-plugin-*
    

    编辑zabbix-agent2的配置文件 vi /etc/zabbix/zabbix_agent2.conf

    # 被动检查相关配置,允许zabbix-server的IP到当前服务器上获取数据,可以写多个IP
    Server=192.168.50.95
    # Option: Hostname ,区分大小写且在zabbix server唯一的值
    Hostname=agent2-host1
    # Server和ServerActive都是zabbix_server端的ip
    ServerActive=192.168.50.95
    

    启动zabbix-agent2

    systemctl start zabbix-agent2
    systemctl enable zabbix-agent2
    netstat -ntulp |grep 10050
    

    image-20221107121325467

    配置

    • 创建名称为agent-group的主机组
    • 创建名称为agent2-host1的主机,选择模板群组Templates下的Linux by Zabbix agent模板,添加Agent

    image-20221107121935980

    等待一小段时间后查看web的主机信息agent2-host1已为可用状态

    image-20221107154254215

    Zabbix proxy使用示例

    部署

    # 安装Zabbix仓库
    rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm
    yum clean all
    # 安装zabbix-proxy
    yum install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy
    

    在数据库主机上运行以下代码。

    # mysql -uroot -ppassword
    mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
    mysql> create user zabbix@localhost identified by 'password';
    mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
    mysql> set global log_bin_trust_function_creators = 1;
    mysql> quit;
    

    导入初始架构和数据,系统将提示您输入新创建的密码。

    cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
    mysql> set global log_bin_trust_function_creators = 0;
    

    配置

    编辑配置文件 vim /etc/zabbix/zabbix_proxy.conf

    # 0 - proxy in the active mode主动,1 - proxy in the passive mode被动
    ProxyMode=0
    #填写zabbix-server所在服务器IP
    Server=192.168.5.95
    Hostname=Zabbix proxy
    DBHost=192.168.5.52
    DBName=zabbix_proxy
    DBUser=zabbix
    DBPassword=zabbix
    DBSocket=/var/lib/mysql/mysql.sock
    DBPort=3306
    #更新配置文件频率
    ConfigFrequency=300
    
    # 启动zabbix-proxy
    systemctl start zabbix-proxy
    

    通过Zabbix的web的管理-Proxy中创建Proxy,名称为hostname一致也即是Zabbix proxy,默认主动模式

    image-20221108124047459

    也可以选择被动模式

    image-20221108122826568

    部署、配置和启动另外一台Agent,主机名称为agent2-host2

    # 配置为zabbix proxy的地址
    Server=192.168.5.52
    # Option: Hostname ,区分大小写且在zabbix server唯一的值
    Hostname=agent2-host2
    # 配置为zabbix proxy的地址
    ServerActive=192.168.5.52
    

    yum install -y zabbix-get后通过zabbix_get -s 192.168.5.53 -p 10050 -k vm.memory.size[available]验证获取监控项可用

    image-20221108133608406

    通过Zabbix的web的配置-主机,创建新的主机,并选择由agent程序监测中上面新创建的Zabbix proxy,点击添加按钮

    image-20221108124921763

    过一会查看配置-主机可以看到agent2-host2主机通过Zabbix proxy上报到Zabbix server,实现分布式监控(主动模式)

    image-20221108133439021

    自定义监控使用示例

    如果模板没有我们需要的监控项,可以使用自定义监控来实现。自定义监控流程如下:

    • 客户端

      • 通过命令、脚本取出对应的值。
      # 本机81端口是否存在,>0则存在
      ss -lntup | grep -w 81 | wc -l
      

      image-20221108183009055

      • 根据Zabbix的要求格式书写配置文件,创建键值。
      # 在zabbix_agent的配置文件中/etc/zabbix/zabbix_agent2.conf可以看到Include的配置项
      Include=/etc/zabbix/zabbix_agent2.d/*.conf
      # 在/etc/zabbix/zabbix_agent2.d/目录下创建web.conf的文件,UserParameter=key,cmd,key为键值,建议采用x.y.z格式,cmd可以为命令或者脚本,脚本如sh /home/a.sh
      vim /etc/zabbix/zabbix_agent2.d/web.conf
      UserParameter=nginx.port_count,ss -lntup | grep -w 81 | wc -l
      
      • 重启客户端测试键值是否可用。
      # 重启zabbix-agent2
      systemctl restart zabbix-agent2
      # 通过客户端查配置,nginx.port_count值为1
      zabbix_agent2 -t nginx.port_count
      # 杀死nginx
      pkill nginx
      # 再次客户端查配置,nginx.port_count值为0
      zabbix_agent2 -t nginx.port_count
      

      image-20221108183739303

    • 服务端

      • 测试键值是否
      # 重新启动nginx
      systemctl start nginx
      # 在zabbix server端执行,成功取得客户端的监控项值
      zabbix_get -s 192.168.5.98 -p 10050 -k nginx.port_count
      

      image-20221108184229002

      • web页面键值与监控项关联并测试,在配置-主机中,找到刚才的部署自定义监控的客户端的主机,点击监控项进入后创建监控项,输入键值,可以

    image-20221108184542337

    在监测-最新数据,找到主机后查看监控项最新值为当前正确的值

    image-20221108185227291

    触发器使用示例

    点击配置-主机,找到上面创建主机名称为agent2-host1,点击触发器,然后通过右上方的创建触发器,输入名称、添加问题表现形和恢复表达式

    image-20221109164141727

    点击添加按钮,回到触发器列表,通过名称点击"应用"按钮查询到刚才添加的触发器信息

    image-20221109164313797

    通过杀死主机agent2-host1上的nginx进程(pkill nginx),过一会查看监测-仪表盘中的当前问题可以看到触发了问题结果。

    image-20221109164828290

    重启启动nginx过一小会后,在仪表盘的当前问题就消失了,而在监测-问题中的最近的问题和历史记录可以看到问题已经触发恢复表达式状态自动变为为“已解决”,且刚恢复几分钟内zabbix还是非常比较人性化将“已解决”状态字眼呈现一闪一闪更为生动。

    image-20221109165015421

    图形使用示例

    配置-主机,找到上面创建主机名称为agent2-host1,点击图形,右上角点击添加图形按钮,输入图形名称和监控项图形设置

    image-20221109171320703

    可以点击预览查看图形

    image-20221109171542615

    模板使用示例

    • 创建模板,在配置-模板中添加模板,点击添加

    image-20221109175436395

    • 添加自定义监控项

    从对应主机找到所需的监控项,勾选监控项后点击复制按钮,

    image-20221109175552031

    选择目标类型为模板,模板名称为刚创建的web template,点击复制

    image-20221109175644164

    • 添加触发器

    触发器和上面的监控项一样通过复制的方式操作

    image-20221109180118775

    • 添加图形

    图形和上面的监控项一样通过复制的方式操作

    image-20221109180013408

    通过上面的添加监控项、触发器、图形后后查看模板已有对应的信息

    image-20221109180251007

    • 模板关联主机

    在主机列表中勾选需要绑定模板的主机,查看当前监控项、触发器、图形的数量

    image-20221109180747878

    点击“批量更新”按钮,勾选模板连接,选择上面创建模板web template,点击更新按钮

    image-20221109182707872

    在主机列表中可以看到监控项、触发器、图形的数量都增加了一个

    image-20221109182759935

    将自定义监控使用示例中创建的/etc/zabbix/zabbix_agent2.d/web.conf分发到agent2-host2上,重启agent2-host2的zabbix-agent2

    image-20221109183325305

    由于agent2-host2上面没有nginx服务,所以查看监测-仪表盘中当前问题可以看到agent2-host2主机触发了,验证模板已绑定到主机的流程

    image-20221109183528623

    SNMP监控使用示例

    # 这里先linux开启SNMP做例子,但后续SNMP更多在交互机、路由器使用
    yum install net-snmp net-snmp-utils -y
    # 修改配置文件,添加一个采集项.1,意味着可以采集到所有mib tree的信息,
    vim /etc/snmp/snmpd.conf
    view    all    included   .1
    

    image-20221110103554807

    # 被监控端开启snmp服务
    systemctl start snmpd
    # 监控端开启的服务(如果允许被监控端启动主动监控时启用)
    systemctl start snmptrapd
    # snmpget测试
    snmpget -v 2c -c public 192.168.5.98 sysName.0
    # snmpwalk测试
    snmpwalk -v 2c -c public 192.168.5.98 sysName.0
    snmpwalk -v 2c -c public 192.168.5.98 .1.3.6.1.2.1.1.1
    

    image-20221110104517174

    在配置-主机中找到agent2-host1(192.168.5.98),点击修改模板为linux snmp模板和添加snmp接口,点击更新按钮

    image-20221110111533167

    等待一小段时间后,还可以再主机的宏添加变量{$SNMP_COMMUNITY}为public的值,主机的snmp服务监控已变为“可用状态”

    image-20221110112537546

    自动发现使用示例

    自动发现为服务端主动扫描局域网内所有的机器有则添加,配置简单方便,效率不高。

    • 配置自动发现规则

    先勾选前面页面创建的主机,点击删除将原来主机信息删除掉

    image-20221110122246602

    配置-自动发现配置发现规则,先选择没有agent代理程序,IP范围,添加检查类型,最后添加添加按钮

    image-20221110123035491

    配置-动作中发现动作中,点击右上角的创建动作,输入名称和条件

    image-20221110123802310

    再添加一个auto discover host with agent的发现规则,选择Zabbix proxy为agent代理程序自动发现,添加IP范围,点击添加

    image-20221110124524294

    切换到操作页面,添加操作详情,包括添加主机、添加到主机群组、链接到模板、启动主机,最后点击添加按钮

    image-20221110125751631

    稍等一小会查看主机列表多了两个自动发现的主机信息

    image-20221110125844401

    自动注册使用示例

    自动注册为客户端主动向服务端注册,服务端只需要等待与验证即可,配置有点复杂,效率高。

    先关闭上面的自动发现的规则(自动发现规则列表对应的规则右方单击“已启用”之后变为"停用"状态即可)和自动发现的动作(发现动作列表对应的动作右方单击“已启用”之后变为"停用"状态即可)

    然后再删除上面的自动发现的2个主机信息

    • 修改Zabbix 客户端配置文件,vim /etc/zabbix/zabbix_agentd.conf
    # ServerActive按照实际填写为zabbix-server或zabbix-proxy
    ServerActive=192.168.50.95
    # 主机唯一标识名称
    Hostname=agent2-host1
    # 主机的元数据属性
    HostMetadata=agent2-host1
    # 自动获取主机名,与Hostname二选一
    HostnameItem=system.hostname
    # 自动获取主机的元数据,与HostMetadata二选一
    HostMetadataItem=system.hostname
    
    • 配置-动作-自动注册动作,点击创建动作,输入如下名称和条件

    image-20221110143518340

    切换到操作按钮,配置和上面自动发现操作一样,点击添加按钮

    image-20221110141539591

    • 重启zabbix-agent2(systemctl restart zabbix-agent2)

    过几分钟后查看有2台主机主动注册的信息

    image-20221110143609302

    JMX监控使用示例

    从 Zabbix 2.0 开始,以 Zabbix 守护进程方式原生支持监控 JMX 应用程序就存在了,称之为“Zabbix Java gateway”。JMX可用于监控java的应用程序,例如常见的tomcat服务,提前安装好tomcat。

    • 安装zabbix-java-gateway
    yum install zabbix-java-gateway
    
    • 修改zabbix_java_gateway配置文件,vim /etc/zabbix/zabbix_java_gateway.conf
    START_POLLERS=5
    
    • 启动zabbix-java-gateway
    # 启动zabbix-java-gateway
    systemctl restart zabbix-java-gateway
    # 开启自启动
    systemctl enable zabbix-java-gateway
    
    • 修改Zabbix Server配置 关联 Java 网关
    JavaGateway=192.168.5.52
    JavaGatewayPort=10052
    StartJavaPollers=5
    
    • 重启zabbix-server

    • 修改tomcat启动脚本,vim tomcat/bin/catalina.sh,在OS specific support. $var must be set to either true or false的前面添加下面一行即可

    #!/bin/sh  
    CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
    
    • 创建主机,模板选择Apache Tomcat by JMX,接口为JMX接口,点击添加按钮

    image-20221110153105691

    过一会查看主机名称为tomcat-host的信息,JMX服务以为可用

    image-20221110170420660

    **本人博客网站 **IT小神 www.itxiaoshen.com

  • 相关阅读:
    八股文之JVM
    Vue3集成json-editor-vue3
    聊一聊前后端权限控制 RBAC(完整流程)
    【论文阅读——机器人操作】
    nginx-基于range做断点续传
    【Python3】函数相关应用
    uni-app android picker选择默认月份
    【云计算赛项】职业技能竞赛--容器开发部分例题K8s编排部署WebMall
    Java学习之八皇后
    C# 调用高德地图API获取经纬度以及定位【万字详解附完整代码】
  • 原文地址:https://www.cnblogs.com/itxiaoshen/p/16879122.html