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 ~]#mysql

mysql> 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 ~]#mysql

mysql> 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=zabbix


curl -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
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mybatis-Spring | Mybatis与Spring的“整合“

目录 : 一、配置环境1. 整合环境需导入的JAR :Spring框架所需JARMybatis框架所需JARMyBatis与Spring整合的中间JAR数据库驱动JAR包数据源所需JAR包 &#xff08;下面的例子中 : 用的不是这个数据源&#xff09; 2. 编写“配置文件” 和 “.properties文件” ( 只是概述&#xf…

电磁铁通电后测不到磁场是什么原因

电磁铁 电磁铁没有磁力的一般原因有多种&#xff0c;以下是一些常见原因&#xff1a; 1. 电源问题&#xff1a;电磁铁没有连接好电源或电源电压不足&#xff0c;无法产生足够强的磁场。电磁铁所需要的电流和电压应符合制造商的规定。另外的话&#xff0c;电源接头也需要注意接…

SAP 消息编号 M8147

月末执行物料分类账的时候&#xff0c;出现以下报错 解决方法&#xff1a;OBYC-PRM

Linux运维:实现光盘开机自动挂载、配置本地yum源教程

Linux运维&#xff1a;实现光盘开机自动挂载、配置本地yum源教程 一、光盘开机自动挂载1、检查光驱设备2、创建挂载点3、编辑/etc/fstab文件4、测试挂载 二、配置本地yum源(挂载光盘或ISO文件)1、挂载ISO文件2、创建YUM仓库配置文件3、清理YUM缓存并测试 &#x1f496;The Begi…

萌新小白对于ctf学习的笔记--CTF中的RCE

概念 RCE(Remote code execution&#xff09;远程代码执行漏洞&#xff0c;RCE又分命令执行和代码执行。 RCE-远程代码执行&#xff1a;远程执行PHP代码RCE-远程命令执行&#xff1a;远程执行Linux或者Windows等系统命令。 常见函数有&#xff1a; PHP&#xff1a;eval(),a…

解决syslog服务器启动问题

Syslog 监控和管理对于每个组织来说都很重要&#xff0c;可以减少系统停机时间、提高网络性能并加强企业的安全策略。而在网络系统管理中&#xff0c;syslog服务用于收集、存储和管理系统和设备的日志信息。 然而&#xff0c;有时候我们可能会遇到syslog服务器无法启动的问题&…

mysql中 COALESCE和CASE WHEN的使用以及创建或替换视图

create or replace view 自理能力评估视图 as SELECT ehr_zlnlpg.ID AS ID, ehr_zlnlpg.GRID AS GRID, ehr_zlnlpg.TJID AS TJID, ehr_grjbxx.Name AS 姓名, ehr_grjbxx.Sex AS 性别, ehr_grjbxx.Cardnum AS 身份证号, ehr_zlnlpg.SCORESUM AS 总…

[每周一更]-第90期:认识Intel的CPU

市面上的CPU分类主要分有两大阵营&#xff0c;一个是Intel、AMD为首的复杂指令集CPU&#xff0c;另一个是以IBM、ARM为首的精简指令集CPU。 两个不同品牌的CPU&#xff0c;其产品的架构也不相同&#xff0c;例如&#xff0c;Intel、AMD的CPU是X86架构的&#xff0c;而IBM公司的…

基于java+springboot+vue实现的校园悬赏任务平台(文末源码+Lw)23-277

摘 要 使用旧方法对校园悬赏任务平台的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在校园悬赏任务平台的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的…

STM32 | Proteus 8.6安装步骤(图文并茂)

01 Proteus 8.6 简介 Proteus 8.6 是一款功能强大的电子设计自动化软件&#xff0c;广泛用于电路设计、仿真和PCB布局。它为电子工程师和学生提供了一个全面的工具集&#xff0c;用于设计和验证各种电路和电子设备。Proteus 8.6 包括了以下几个主要特性&#xff1a; 1. 电路设…

云计算 3月8号 (WEB服务及Apache 服务的搭建与配置——基于域名 端口 Ip多方式访问)

1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全世界浏览。 - WEB服务器也称为WWW(WORLD WIDE WEB)服务器&#xff0c;主要功能是提供网上信息浏览服务。 …

【lua】lua内存优化记录

这边有一个Unity项目用的tolua&#xff0c; 游戏运行后手机上lua内存占用 基本要到 189M&#xff0c; 之前峰值有200多。 优化点1 加快gc频度&#xff1a; 用uwa抓取的lua内存&#xff0c; 和unity的mono很像&#xff0c;内存会先涨 然后突然gc一下&#xff0c;降下来。 这样…

S4---FPGA-K7板级原理图硬件实战

视频链接 FPGA-K7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-K7板级原理图硬件实战 基于XC7K325TFFG900的FPGA硬件实战框图 基于XILINX 的KINTEX-7 芯片XC7K325FPGA的硬件平台&#xff0c;FPGA 开发板挂载了4 片512MB 的高速DDR3 SDRAM 芯片&#xff0c;另外板上带有一个SODIM…

RabbitMQ的Windows版安装教程

文章目录 前言一、Windows安装RabbitMQ总结 前言 曾经写过一篇关于RabbitMQ的Ubuntu安装教程&#xff08;http://t.csdnimg.cn/5CYfC&#xff09;&#xff0c;当时使用的是Docker将RabbitMQ安装到虚拟机上&#xff0c;但是有很多小伙伴问Windows上如何进行安装RabbitMQ&#x…

根据xlsx文件第一列的网址爬虫

seleniumXpath 在与该ipynb文件同文件下新增一个111.xlsx&#xff0c;第一列放一堆需要爬虫的同样式网页 然后使用seleniumXpath爬虫 from selenium import webdriver from selenium.webdriver.common.by import By import openpyxl import timedef crawl_data(driver, url)…

【力扣白嫖日记】1164.指定日期的产品价格

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 1164.指定日期的铲平价格 表&#xff1a;Products 列名类型product_idintnew_priceintchange_datedate (pr…

Nacos2.2.3之MySQL8.X持久化详细配置过程

Nacos2.2.3之MySQL8.X持久化详细配置过程 文章目录 Nacos2.2.3之MySQL8.X持久化详细配置过程1. 官网与下载1. 官网2. Naocs是什么&#xff1f;3. 下载 2. 安装与持久化配置1. 解压安装2. 创建数据库1. 连接数据库2. 创建nacos数据库3. 导入脚本4. 查看表 3. 持久化配置1. appli…

Ant Design Vue a-select 的 optionFilterProp 检索结果不对

<a-selectshow-search //可输入查询optionFilterProp"label" //查询的是labelv-model:value"form.roomId"placeholder"请选择房间名称":disabled"isUpdate"><a-select-optionv-for"item in rooms":key"ite…

【嵌入式高级C语言】9:万能型链表懒人手册

文章目录 序言单向不循环链表拼图框架搭建 - Necessary功能拼图块1 创建链表头信息结构体 - Necessary2 链表头部插入 - Optional3 链表的遍历 - Optional4 链表的销毁 - Necessary5 链表头信息结构体销毁 - Necessary6 获取链表中节点的个数 - Optional7 链表尾部插入 - Optio…

如何在Windows系统部署Jellyfin Server并实现公网访问内网影音文件

文章目录 1. 前言2. Jellyfin服务网站搭建2.1. Jellyfin下载和安装2.2. Jellyfin网页测试 3.本地网页发布3.1 cpolar的安装和注册3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5. 结语 1. 前言 随着移动智能设备的普及&#xff0c;各种各样的使用需求也被开发出来&…