成熟企业级开源监控解决方案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

posted @ 2022-11-10 22:58  itxiaoshen  阅读(812)  评论(0编辑  收藏  举报