Zabbix(四)

Zabbix Proxy

zabbix作为一个分布式监控系统(分布式监控解决方案),支持通过代理(proxy)收集zabbix agent的监控数据,然后由zabbix proxy再把数据发送给zabbix server,也就是zabbix proxy 可以代替zabbix server收集监控数据,然后把数据汇报给zabbix server,所以zabbix proxy可以在一定程度上分担了zabbix server的数据收集压力,从而降低了数据的采集时间、也相应的增加了zabbix server的监控能力。

zabbix proxy 是一个数据收集器,它不计算触发器、不处理事件、不发送报警。所以最终导致告警延时可能会比较长。

使用场景

监控远程区域设备,尤其是多机房和多个云环境时

监控网络不稳定区域,避免跨网段监控的告警不及时

当需要监控设备众多时,使用它来减轻 Zabbix Server 的压力

简化分布式监控的维护,无需各位创建 Zabbix Server,统一管理策略

Zabbix Server和Zabbix Proxy

工作模式

以proxy角度区分主动被动。

proxy的主动被动和agent主动被动没有关系。

主动模式(推荐)

主动地向zabbix server周期性的申请获取zabbix agent的监控项信息,此模式可以大幅降低Zabbix Server的压力。

被动模式

被动地等待zabbix server的连接,并接受zabbix server发送的监控项指令,然后再由zabbix proxy向zabbix agent发起请求获取数据

端口

默认端口10051

实验

Zabbix proxy的大版本必须要和Zabbix Server的版本相同,不然会出问题。

所有主机的主机名要唯一,否则被动模式可能会影响数据采集。

Zabbix Server192.168.28.60Ubuntu2204ApacheMySQL
Zabbix Proxy Active192.168.28.61Ubuntu2204MySQL包安装
Zabbix Proxy Passive192.168.28.62Ubuntu2204MySQL编译安装
Zabbix Agent1192.168.28.41Rocky8.9
Zabbix Agent2192.168.28.42Rocky8.9

Zabbix Server

[root@zbx-server ~]#apt -y install mysql-server
[root@zbx-server ~]#apt -y install language-pack-zh-hans
[root@zbx-server ~]#wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb && dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb && apt update && apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
[root@zbx-server ~]#mysqlmysql> create database zabbix character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.00 sec)mysql> create user zabbix@localhost identified by 'Admin.123';
Query OK, 0 rows affected (0.00 sec)mysql> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)mysql> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> quit;
Bye
[root@zbx-server ~]#zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
Enter password:
[root@zbx-server ~]#mysqlmysql> set global log_bin_trust_function_creators = 0;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> quit;[root@zbx-server ~]#vim /etc/zabbix/zabbix_server.conf
DBPassword=Admin.123[root@zbx-server ~]#vim /etc/zabbix/apache.conf
php_value date.timezone Asia/Shanghai[root@zbx-server ~]#vim /etc/apache2/sites-enabled/000-default.conf
ServerAdmin wenzi.zabbix.com[root@zbx-server ~]#systemctl restart zabbix-server zabbix-agent apache2
[root@zbx-server ~]#systemctl enable zabbix-server zabbix-agent apache2

1、Zabbix Proxy Active

包安装

[root@zbx-proxy-active ~]#apt -y install mysql-server
[root@zbx-proxy-active ~]#wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
[root@zbx-proxy-active ~]#dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
[root@zbx-proxy-active ~]#apt update
[root@zbx-proxy-active ~]#apt install zabbix-proxy-mysql zabbix-sql-scripts
[root@zbx-proxy-active ~]#mysql
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
Query OK, 1 row affected (0.00 sec)mysql> create user zabbix@localhost identified by 'Admin.123';
Query OK, 0 rows affected (0.00 sec)mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)mysql> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> quit;
Bye[root@zbx-proxy-active ~]#cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
Enter password:
[root@zbx-proxy-active ~]#mysql
mysql> set global log_bin_trust_function_creators = 0;
Query OK, 0 rows affected, 1 warning (0.00 sec)mysql> quit
Bye-------------------------------------关键配置
[root@zbx-proxy-active ~]#vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.28.60
Hostname=zabbix-proxy1-active
DBPassword=Admin.123[root@zbx-proxy-active ~]#systemctl restart zabbix-proxy
[root@zbx-proxy-active ~]#systemctl enable zabbix-proxy

Zabbix Proxy 配置文件说明

ProxyMode=0                         #主动模式为0,被动模式为1,默认为0即主动模式
Server=10.0.0.100                   #指向Zabbix Server
Hostname=zabbix-proxy-active        #主动模式:此名称必须和后面Web管理页的agent代理程序名称相同#被动模式:可以不一致
DBHost=localhost                    #MySQL服务器地址
DBName=zabbix_proxy_active          #MySQL数据库名
DBUser=proxy                        #连接MySQL的用户
DBPassword=123456                   #连接MySQL的用户密码LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
DebugLevel=4                        #指定日志级别,默认为3,值越大日志越详细
EnableRemoteCommands=1              #开启远程命令,允许server到proxy上执行命令,在故障自愈时使用
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
ProxyLocalBuffer=360             #当proxy将数据发送给server后将数据仍在本地保存多少时间,默认不保留
ProxyOfflineBuffer=720           #当proxy和server无法连接时将数据在本地保存多长时间,默认1小时
HeartbeatFrequency=60            #server端用来检测proxy可用性的心跳信息的时间间隔,被动模式无效
ConfigFrequency=60               #每间隔多少时间到server获取监控项,在agent更新端监控项,只在主动模式有效,默认3600s
DataSenderFrequency=60           #数据发送的间隔时间,只在主动模式有效,默认1s,建议加长
JavaGateway=10.0.0.101           #指向JAVA gateway主机
StartJavaPollers=10              #指定开启的进程数,默认为0,即不开启
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
CacheSize=8M                      #当主机数量很多时,会将获取的监控项存放在缓存中,生产中设置2G
StartDBSyncers=4                  #启动多少个线程和数据库连接
HistoryCacheSize=16M              #保存agent发送过来的监控数据的内存空间大小,生产中设置2G 
HistoryIndexCacheSize=4M          #历史数据的索引
Timeout=30                        #获取数据的最长等待时间
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000               #慢查询时长

1.1 Zabbix Agent1

使用主动模式

[root@zbx-agent1 ~]$rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
[root@zbx-agent1 ~]$dnf clean all
[root@zbx-agent1 ~]$dnf install zabbix-agent-------------------------------------关键配置
[root@zbx-agent1 ~]$vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.28.61
ServerActive=192.168.28.61    
Hostname=zabbix-agent1[root@zbx-agent1 ~]$systemctl enable --now zabbix-agent.service

Zabbix Agent 配置文件说明

LogFile=/tmp/zabbix_agentd.log
Server=10.0.0.100,10.0.0.101         #指向Zabbix Server(可选)和Zabbix Proxy(必
选)
ServerActive=10.0.0.101              #指向Zabbix Proxy
Hostname=10.0.0.103                  #主动模式:和web界面主机名称一致#被动模式:可以不一致

1.2 配置Zabbix Web

浏览器访问 http://wenzi.zabbix.com/zabbix/

添加代理

此处代理名称和Zabbix Proxy配置文件中 Hostname保持一致

 

配置Agent1使用Proxy Active

此处主机名称和Zabbix Agent配置文件中 Hostname保持一致

2 Zabbix Proxy Passive

编译安装

[root@zbx-proxy-passive ~]#apt update
[root@zbx-proxy-passive ~]#useradd zabbix
[root@zbx-proxy-passive ~]#apt -y install gcc make libxml2-dev libevent-dev libmysqlclient-dev libsnmp-dev libssh2-1-dev libcurl4-openssl-dev
[root@zbx-proxy-passive ~]#wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.27.tar.gz
[root@zbx-proxy-passive ~]#tar -xf zabbix-6.0.27.tar.gz -C /usr/local/
[root@zbx-proxy-passive ~]#cd /usr/local/zabbix-6.0.27/
[root@zbx-proxy-passive zabbix-6.0.27]#./configure --prefix=/apps/zabbix_proxy --enable-proxy --with-agent --with-net-snmp --with-mysql --with-ssh2 --with-libcurl --with-libxml2
[root@zbx-proxy-passive zabbix-6.0.27]# ~]#make && make install
[root@zbx-proxy-passive zabbix-6.0.27]#vim /lib/systemd/system/zabbix-proxy.service
[Unit]
Description=Zabbix Proxy
After=syslog.target
After=network.target[Service]
Environment="CONFFILE=/apps/zabbix_proxy/etc/zabbix_proxy.conf"
EnvironmentFile=-/etc/sysconfig/zabbix-proxy
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_proxy.pid
KillMode=control-group
ExecStart=/apps/zabbix_proxy/sbin/zabbix_proxy -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
TimeoutSec=0[Install]
WantedBy=multi-user.target[root@zbx-proxy-passive ~]#apt -y install mysql-server
[root@zbx-proxy-passive ~]#mysql
mysql> create database zabbix_proxy_passive character set utf8 collate utf8_bin;
Query OK, 1 row affected, 2 warnings (0.01 sec)mysql> create user proxy@'localhost' identified by 'Admin.123';
Query OK, 0 rows affected (0.01 sec)mysql> grant all on  zabbix_proxy_passive.* to proxy@'localhost';
Query OK, 0 rows affected (0.00 sec)mysql> set global log_bin_trust_function_creators = 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)[root@zbx-proxy-passive ~]#cd /usr/local/zabbix-6.0.27/ && mysql -uproxy -pAdmin.123 zabbix_proxy_passive < database/mysql/schema.sql
[root@zbx-proxy-passive ~]#mysql
mysql> set global log_bin_trust_function_creators = 0;
Query OK, 0 rows affected, 1 warning (0.00 sec)-------------------------------------关键配置
[root@zbx-proxy-passive ~]#vim /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1
Server=192.168.28.60
Hostname=zabbix-proxy2-passive    #此项无关web界面,可以不改
DBName=zabbix_proxy_passive    
DBUser=proxy
DBPassword=Admin.123[root@zbx-proxy-passive ~]#systemctl daemon-reload
[root@zbx-proxy-passive ~]#systemctl enable --now zabbix-proxy.service

2.1 Zabbix Agent2

使用被动模式

[root@zbx-agent2 ~]$vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.28.62
Hostname=zabbix_agent2    #此项无关web界面,可以不改
[root@zbx-agent2 ~]$systemctl restart zabbix-agent.service

2.2 配置Zabbix Web

添加代理

代理程序名称无需和配置文件Hostname保持一致

配置Agent2使用Proxy Passive

主机名称无需和配置文件Hostname保持一致

最后zabbix web怎么搞都没看到检测数据,过程应该没错,后续解决。

Zabbix实现自动化

API:Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组功能的能力,而又无需直接使用源代码,或理解内部工作机制的细节。

Zabbix API允许你以编程方式检索和修改Zabbix的配置,并提供对历史数据的访问。广泛用于:

  • 创建新的应用程序以使用Zabbix
  • 将Zabbix与第三方软件集成
  • 自动执行常规任务

Zabbix API是基于Web的API,作为Web前端的一部分提供。使用JSON-RPC 2.0协议,这意味:

  • 该API包含一组独立的方法
  • 客户端和API之间的请求和响应使用JSON格式进行编码

官方文档:19. API

常用API

user.login                          #用户登录
host.get(create|delete|update)      #主机操作
hostgroup.get(create|delete|update) #主机组操作
item.get(create|delete|update)      #监控项目操作
history.get                         #历史数据查询
event.get                           #事件查询
trigger.get                         #触发器查询

API路径和Web服务器有关

#如果是基于Nginx
http://${ZABBIX_SERVER}/api_jsonrpc.php 
#如果是基于Apache
http://${ZABBIX_SERVER}/zabbix/api_jsonrpc.php

实验

官方文档API部分有很多案例。

获取Token(一切操作的基础)

请求的 Content-Type 头部必须设置为以下值之一:application/json-rpc,application/json 或 application/jsonrequest。

访问Zabbix内部的任何数据之前,需要登录并获得身份验证令牌。

[root@zbx-server ~]#cat zabbix-api-token.sh
#!/bin/bash
#********************************************************************
#FileName:     zabbix-api-token.sh
#Version:      1.0
#Date:         2024-03-08
#Author:       wenzi
#Description: This is description
#********************************************************************#httpd
zabbix_server='http://wenzi.zabbix.com/zabbix'
#nginx
#zabbix_server='http://wenzi.zabbix.com'
user=Admin
password=zabbixcurl -s -X POST -H "Content-Type: application/json-rpc" -d '
{
"jsonrpc": "2.0",
"method": "user.login",
"params": {
"user": "'${user}'",
"password": "'${password}'"
},
"id": 1,
"auth": null
}' ${zabbix_server}/api_jsonrpc.php[root@zbx-server ~]#./zabbix-api-token.sh | jq
{"jsonrpc": "2.0","result": "6c55fa45f2d903a117627b5a22188ec9","id": 1
}

查询所有已配置主机的ID,主机名,接口

[root@zbx-server ~]#cat zabbix-api-gethost.sh
#!/bin/bash
#********************************************************************
#FileName:     zabbix-api-gethost.sh
#Version:      1.0
#Date:         2024-03-08
#Author:       wenzi
#Description: This is description
#********************************************************************source ./zabbix-api-token.sh
token=`./zabbix-api-token.sh | awk -F '"' '{print $8}'`curl -s -X POST -H "Content-Type: application/json-rpc" -d '
{"jsonrpc": "2.0","method": "host.get","params": {"output": ["hostid","host"],"selectInterfaces": ["interfaceid","ip"]},"id": 2,"auth": "'${token}'"}' ${zabbix_server}/api_jsonrpc.php[root@zbx-server ~]#./zabbix-api-gethost.sh  | jq
{"jsonrpc": "2.0","result": "a9f80171e010bcbdc58a3c3119544e08","id": 1
}
{"jsonrpc": "2.0","result": [{"hostid": "10084","host": "Zabbix server","interfaces": [{"interfaceid": "1","ip": "127.0.0.1"}]},{"hostid": "10620","host": "ubuntu","interfaces": [{"interfaceid": "46","ip": "192.168.28.62"}]},{"hostid": "10621","host": "rocky","interfaces": [{"interfaceid": "47","ip": "192.168.28.41"}]}],"id": 2
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/522221.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chrome安装Axure插件

打开原型目录/resources/chrome&#xff0c;重命名axure-chrome-extension.crx&#xff0c;修改后缀为rar&#xff0c;axure-chrome-extension.rar 解压到axure-chrome-extension目录打开Chrome&#xff0c;更多工具->扩展程序&#xff0c;打开开发者模式&#xff0c;选择加…

用BIO实现tomcat

一、前言 本课程的难度较高&#xff0c;需要将Servlet原理和IO课程全部学完。 二、当前项目使用方式 (1).自定义servlet 自定义servlet需要实现WebServlet并且实现name和urlMapping 重启进行访问 http://localhost:8090/myServlet (2).自定义html 重启进行访问 http://loc…

洗地机热门品牌测评:石头/希亦/顺造/云鲸洗地机哪个好?哪个牌子最值得入手

大家好&#xff0c;博主是一个热爱生活和科技的居家测评博主。在过去的三年多时间里&#xff0c;我专注于清洁家电——洗地机。我深入测评了三十多款洗地机&#xff0c;现在我将用简单易懂的语言来分享洗地机的选购技巧和热门洗地机机型推荐。 洗地机选购技巧&#xff1a; 看…

在迁移测试中,源表、中间表、目标表的迁移规则

以银行的核心系统从旧核心系统更换为新核心系统为基础&#xff0c;对导入到迁移环境的生产数据&#xff08;已脱敏&#xff09;进行数据的验证。 数据迁移环境 迁移环境需要A、B两套环境。其中&#xff0c;A环境为新系统环境、B环境为老系统环境。 数据迁移小组 迁移小组&a…

图片速览 BitNet: 1-bit LLM

输入数据 模型使用absmax 量化方法进行b比特量化,将输入量化到 [ − Q b , Q b ] ( Q b 2 b − 1 ) \left[-Q_{b},Q_{b}\right](Q_{b}2^{b-1}) [−Qb​,Qb​](Qb​2b−1) x ~ Q u a n t ( x ) C l i p ( x Q b γ , − Q b ϵ , Q b − ϵ ) , Clip ⁡ ( x , a , b ) ma…

浅谈字典攻击

一、前言 字典攻击是一种常见的密码破解方法&#xff0c;它使用预先编制的字典文件作为攻击字典&#xff0c;通过尝试猜测密码的方式来破解密码。下面是一个关于字典攻击的博客&#xff0c;希望能够为您了解字典攻击提供帮助。 二、字典攻击概述 字典攻击是一种密码破解方法&…

Unity笔记:C#基础(1)

杂项 虚函数 CSDN - C虚函数详解 cnblog - C#中的虚函数virtual 常量池与new 在C#中&#xff0c;string是不可变的&#xff0c;这意味着对string对象的操作通常会返回一个新的string对象&#xff0c;而不会修改原始的string对象。因此&#xff0c;几乎所有涉及更改string内…

(未解决)macOS matplotlib 中文是方框

reference&#xff1a; Mac OS系统下实现python matplotlib包绘图显示中文(亲测有效)_mac plt 中文值-CSDN博客 module ‘matplotlib.font_manager‘ has no attribute ‘_rebuild‘解决方法_font_manager未解析-CSDN博客 # 问题描述&#xff08;笑死 显而易见 # solve 找到…

开源文生图大模型Playground v2.5发布:超越SD、DALL·E 3和 Midjourney

前言 在AI技术迅速发展的今天&#xff0c;文生图模型成为了艺术创作、设计创新等领域的重要工具。Playground v2.5的发布&#xff0c;不仅在技术上取得了突破&#xff0c;更在开源文化的推广与实践上迈出了重要一步。 Huggingface模型下载&#xff1a;https://huggingface.co/…

虚拟机环境搭建

搭建vm环境&#xff0c;配置虚拟机&#xff0c;期间遇到不支持&#xff0c;重启电脑后还是没用 此主机支持 AMD-V&#xff0c;但 AMD-V 处于禁用状态。 如果已在 BIOS/固件设置中禁用 AMD-V&#xff0c;或主机自更改此设置后从未重新启动&#xff0c;则 AMD-V 可能被禁用。 确…

PDF文件中有多个文件如何一次性的全部分割出来? 这个办法绝对能够帮到你

PDF作为一种常用的文件格式&#xff0c;广泛应用于各种文档、报表、合同等文件的制作和传输。但有时候&#xff0c;我们可能会遇到一个问题&#xff1a;PDF文件中包含了多个文件&#xff0c;我们需要单独提取其中的一个或几个文件。那么&#xff0c;该如何操作呢&#xff1f;下…

常见BUG如何在测试过程中分析定位

前言 在测试的日常工作中&#xff0c;相信经常有测试的小伙伴遇到类似的情况&#xff1a;在项目上线时&#xff0c;只要出现问题&#xff08;bug&#xff09;&#xff0c;就很容易成为“背锅侠”。 软件测试人员在工作中是无法避免的要和开发人员和产品经理打交道的&#xff…