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.mzph.cn/news/730274.shtml

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

相关文章

【免费资源】Unity真实广阔的沙漠场景等你来解锁!

Unity真实广阔的沙漠场景等你来解锁&#xff01; Unity 每周免费资源上新啦&#xff01;此次更新的是广阔的沙漠场景&#xff0c;其中包含 14 个预制体&#xff0c;每个预制体都包含 LOD、400-2000 顶点和 4K 纹理。现在&#xff0c;只需登录 Asset Store&#xff0c;即可免费领…

怎么将pom在文件放到src下方

今天在IDEA从git拉取项目的时候&#xff0c;发现pom.xml文件在文件夹src的上方&#xff0c;平时看惯了项目的pom.xml文件在文件夹src的下方&#xff0c;应该怎么去设置呢&#xff1f; 点击设置——>点击Folder Always on Top 即可 参考&#xff1a;http://t.csdnimg.cn/s34…

达梦数据库——如何查看数据库大字段中的数据内容

今天get到一个小知识点 分享给大家&#xff0c;如何在数据库查看大字段中的数据内容。 以下为演示步骤&#xff0c;简单易懂&#xff0c;操练起来吧 首先创建一个含有CLOB、TEXT的大字段测试表 create table "SYSDBA"."CS"("COLUMN_1" CLOB,&qu…

配电网数字化转型全面推进:《关于新形势下配电网高质量发展的指导意见》

近日&#xff0c;国家发展改革委、国家能源局印发了《关于新形势下配电网高质量发展的指导意见》&#xff08;以下简称《意见》&#xff09;&#xff0c;到2030年&#xff0c;基本完成配电网柔性化、智能化、数字化转型&#xff0c;实现主配微网多级协同、海量资源聚合互动、多…

【Linux】第四十站:线程概念

文章目录 一、线程二、Linux中线程应该如何理解三、重新定义线程四、四谈进程地址空间&#xff08;页表相关&#xff09;五、Linux线程周边的概念1. 线程与进程切换2.线程优点3.线程缺点4.线程异常5.线程用途 一、线程 线程&#xff1a;是进程内的一个执行分支。线程的执行粒度…

Linux mmap系统调用

文章目录 前言一、mmap()函数简介二、代码演示2.1 mmap使用场景2.2 私有匿名映射2.3 私有文件映射2.4 共享匿名映射2.5 共享文件映射 参考 前言 NAMEmmap, munmap - map or unmap files or devices into memorySYNOPSIS#include <sys/mman.h>void *mmap(void *addr, siz…

跨境电商趋势解析:社交电商携手私域流量运营,精准触达与转化

随着全球化的深入发展&#xff0c;跨境电商逐渐成为全球贸易的重要组成部分。在这一背景下&#xff0c;社交电商作为一种新兴的商业模式&#xff0c;正逐渐在跨境电商领域崭露头角&#xff0c;并对私域流量的运营产生了深远的影响。本文Nox聚星将和大家分析社交电商在跨境电商中…

浏览器一键重新发起请求

一、需求场景 在前端开发过程中&#xff0c;经常会需要重新请求后台进行代码调试&#xff0c;之前的常规方法是刷新浏览器页面或者点击页面进行交互&#xff0c;这样对多个请求的场景就很方便&#xff0c;但是往往很多时候我们只是单纯的想重新发起一个请求&#xff08;多个请求…

力扣---接雨水---单调队列

题目&#xff1a; 单调队列思想&#xff1a; 没有思路的小伙伴可以先把这个想清楚哦&#xff1a;力扣hot10---大根堆双端队列-CSDN博客 从上面的图就可以发现&#xff0c;如果柱子呈递减序列&#xff0c;那么不会接到雨水&#xff0c;只要有一个小凸起柱子&#xff0c;那么这个…

PubMedQA数据集分享

来源: AINLPer公众号&#xff08;每日干货分享&#xff01;&#xff01;&#xff09; 编辑: ShuYini 校稿: ShuYini 时间: 2024-2-28 该数据集由匹兹堡、卡内基梅隆等大学提出&#xff0c;它是第一个需要对生物医学研究文本进行推理&#xff0c;特别是其定量内容的问答数据集。…

【前端】-初始前端以及html的学习

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Vue开发实例(八)Vuex状态管理store

Vuex状态管理store 一、Vuex的安装与配置二、store使用方法1、基础使用2、提交变更3、getters使用4、在其他页面&#xff08;组件&#xff09;中显示5、modules多模块 做vue项目的时候&#xff0c; store状态管理器可以帮助我们完成一些数据的存储和管理&#xff0c;通俗理解是…

如何将任何文本转换为概念图(GC)

原文地址&#xff1a;how-to-convert-any-text-into-a-graph-of-concepts 使用 Mistral 7B 将任何文本语料库转换为知识图的方法 2023 年 11 月 10 日 使用递归 RAG 方法来实现具有多跳推理的 QnA&#xff0c;以回答基于大型文本语料库的复杂查询。 知识图增强生成与递归 R…

unity-urp:视野雾

问题背景 恐怖游戏在黑夜或者某些场景下&#xff0c;需要用雾或者黑暗遮盖视野&#xff0c;搭建游戏氛围 效果 场景中&#xff0c;雾会遮挡场景和怪物&#xff0c;但是在玩家视野内雾会消散&#xff0c;距离玩家越近雾越薄。 当前是第三人称视角&#xff0c;但是可以轻松的…

【C++】十大排序算法之 归并排序 快速排序

本次介绍内容参考自&#xff1a;十大经典排序算法&#xff08;C实现&#xff09; - fengMisaka - 博客园 (cnblogs.com) 排序算法是《数据结构与算法》中最基本的算法之一。 十种常见排序算法可以分为两大类&#xff1a; 比较类排序&#xff1a;通过比较来决定元素间的相对次序…

力扣--滑动窗口438.找到字符串中所有字母异位词

思路分析&#xff1a; 使用两个数组snum和pnum分别记录字符串s和p中各字符出现的次数。遍历字符串p&#xff0c;统计其中各字符的出现次数&#xff0c;存储在pnum数组中。初始化snum数组&#xff0c;统计s的前m-1个字符的出现次数。从第m个字符开始遍历s&#xff0c;通过滑动窗…

史上最细,接口自动化测试用例设计编写总结,一篇带你打通...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 说到自动化测试&a…

亚信安慧AntDB:“融合+实时”引领数据库创新

在当今多变的数据应用场景中&#xff0c;AntDB作为行业领先的超融合流式实时数仓&#xff0c;秉承着“融合实时”的研发理念&#xff0c;全面应对企业日益复杂的数据处理需求。通过SQL接口访问多种执行引擎&#xff0c;AntDB在实现交易、分析等多重能力的“超融合”方面取得了显…

SQL设计时增加说明列

后关闭sql Studio,然后打开注册表,注册表地址: 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell\DataProject 如有版本不同,红色内容有所变化,修改内容如下: SSVPropViewColumnsSQL70,SSVPropViewColumnsSQL80 全修改为 1,2,6,7…

魔方,3循环是你的秘密[嗑瓜子]。​

引理1.任意Sn中的元素&#xff1a;(N_1N_2N_3...N_m) 证明&#xff1a; (N_1N_2N_3...N_m) (N_1N_m)(N_1N_m-1)...(N_1N_2) 举例&#xff1a; 比如(1234) (14)(13)(12) (3214) (34)(31)(32) 2.任意An可以表示成3循环的乘积&#xff0c; 证明&#xff1a; 1.An中的元素属于…