当前位置: 首页 > news >正文

Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx

监控tomcat

tomcat自身并不能提供监控指标数据,需要借助第三方exporter实现:https://github.com/nlighten/tomcat_exporter

构建镜像

基于tomcat官方镜像,重新制作一个镜像,将tomcat-exporter和tomcat整合到一起。Ddockerfile如下:

FROM tomcat:8.5.73
LABEL maintainer="admin@163.com"ADD server.xml /usr/local/tomcat/conf/RUN mkdir -p /data/tomcat/webappsADD myapp /data/tomcat/webapps/myapp#添加tomcat-expoter相关文件
ADD metrics.war  /data/tomcat/webapps
ADD simpleclient-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_common-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_hotspot-0.8.0.jar /usr/local/tomcat/lib/
ADD simpleclient_servlet-0.8.0.jar /usr/local/tomcat/lib/
ADD tomcat_exporter_client-0.0.17.jar /usr/local/tomcat/lib/EXPOSE 8080 8443ADD run_tomcat.sh /usr/bin/CMD ["/usr/bin/run_tomcat.sh"]

myapp/目录下是一个测试页面index.jsp

root@master-01:~/dockerfile/tomcat# cat myapp/index.jsp
tomcat myapp

tomcat配置文件server.xml中需要指定app路径,并且打开war包的自动解压和部署功能

root@master-01:~/dockerfile/tomcat# cat server.xml |grep /data/tomcat<Host name="localhost"  appBase="/data/tomcat/webapps"  unpackWARs="true" autoDeploy="true">

run_tomcat.sh是启动tomcat脚本

root@master-01:~/dockerfile/tomcat# cat run_tomcat.sh
#!/bin/bash
/usr/local/tomcat/bin/catalina.sh starttail -f /etc/hosts

执行构建,上传到私有仓库

docker build -t harbor-server.linux.io/n70/tomcat-with-exporter:8.5.73 .
docker push harbor-server.linux.io/n70/tomcat-with-exporter:8.5.73

运行一个测试容器,验证metrics接口是否可以访问

docker run -d --name tomcat -p 8080:8080 harbor-server.linux.io/n70/tomcat-with-exporter:8.5.73

在这里插入图片描述

部署tomcat

以Deployment方式运行tomcat

apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-deploymentnamespace: default
spec:selector:matchLabels:app: tomcatreplicas: 1template:metadata:labels:app: tomcatannotations:prometheus.io/scrape: 'true'prometheus.io/port: "8080"spec:containers:- name: tomcatimage: harbor-server.linux.io/n70/tomcat-with-exporter:8.5.73imagePullPolicy: Alwaysports:- containerPort: 8080securityContext:privileged: true
---
kind: Service
apiVersion: v1
metadata:annotations:prometheus.io/scrape: 'true'prometheus.io/port: '8080'name: tomcat-service
spec:selector:app: tomcatports:- nodePort: 31080port: 80protocol: TCPtargetPort: 8080type: NodePort

将此yaml文件创建到集群上,然后等待Pod就绪
在这里插入图片描述

配置Prometheus采集数据

如果是部署在集群内部的Prometheus,建议使用角色为pod或endpoints的基于API Server的服务发现来发现target并监控。具体job配置可以参考之前的文章《Prometheus服务发现》

如果是集群外的Prometheus,添加一个job,内容如下:

- job_name: tomcat-exporterstatic_configs:- targets: ["192.168.122.12:31080"]

配置修改完成后,重启Prometheus。然后通过Prometheus界面查看target状态
在这里插入图片描述

在Grafana上导入模板,查看监控数据。模板地址:https://github.com/nlighten/tomcat_exporter/blob/master/dashboard/example.json
在这里插入图片描述

监控mysql

Prometheus官方提供了mysql-expoter用于采集mysql指标数据,项目地址:https://github.com/prometheus/mysqld_exporter

部署mysql

直接以apt方式安装mysql

apt -y install mariadb-server
mysql

mysql授权

创建一个账户并授权,之后mysql-exporter会使用此账户来访问mysql查询相关信息

> CREATE USER 'mysql-exporter'@'localhost' IDENTIFIED BY 'Admin@123' WITH MAX_USER_CONNECTIONS 3;
> GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'mysql-exporter'@'localhost';mysql -u mysql-exporter -p -h localhost;	#验证权限

部署mysql-exporter

下载安装包

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter /usr/bin/mysqld_exporter -h #查看帮助信息

准备mysql-exporter配置文件

root@prometheus-node-02:~# mkdir /etc/mysqld-exporter
root@prometheus-node-02:~# cat /etc/mysqld-exporter/.my.cnf
[client]
#指定连接mysql的账户和密码
user = mysql-exporter
password = Admin@123

准备service文件

root@prometheus-node-02:~# cat /lib/systemd/system/mysql-exporter.service
[Unit]
Description=Prometheus Node Exporter
After=network.target[Service]
ExecStart=/usr/bin/mysqld_exporter --config.my-cnf=/etc/mysql-exporter/.my.cnf --web.listen-address=192.168.122.23:9104[Install]
WantedBy=multi-user.target

启动服务

systemctl daemon-reload
systemctl start mysql-exporter.service
systemctl status mysql-exporter.service
systemctl enable mysql-exporter.service

访问mysql-exporter指标接口测试
在这里插入图片描述

配置Prometheus采集数据

编辑Prometheus配置,添加一个job,内容如下:

  - job_name: mysql-exporterstatic_configs:- targets: ["192.168.122.23:9104"]

配置修改完成后,重启Prometheus。然后通过Prometheus界面查看target状态
在这里插入图片描述

Grafana导入模板,查看监控数据。模板地址:https://github.com/prometheus/mysqld_exporter/blob/main/mysqld-mixin/dashboards/mysql-overview.json
在这里插入图片描述

监控redis

redis-exporter项目地址:https://github.com/oliver006/redis_exporter

部署redis&redis-exporter

将redis和redis-exporter运行在同一个Pod中,然后以Deployment方式部署Pod

apiVersion: apps/v1
kind: Deployment
metadata:name: redis-deploy
spec:replicas: 1selector:matchLabels:app: redistemplate:metadata:labels:app: redisannotations:prometheus.io/scrape: "true"pometheus.io/port: "9121"spec:containers:- name: redisimage: redisports:- containerPort: 6379resources:requests:cpu: 100mmemory: 100Mi- name: redis-exporterimage: oliver006/redis_exporterports:- containerPort: 9121resources:requests:cpu: 100mmemory: 100Mi
kind: Service
apiVersion: v1
metadata:annotations:prometheus.io/scrape: 'true'prometheus.io/port: "9121"name: redis-exporter-service
spec:selector:app: redisports:- nodePort: 31082name: promport: 9121protocol: TCPtargetPort: 9121type: NodePort---
kind: Service
apiVersion: v1
metadata:name: redis-redis-service
spec:selector:app: redisports:- nodePort: 31081name: redisport: 6379protocol: TCPtargetPort: 6379type: NodePort

将yaml文件创建到集群上,等待Pod就绪
在这里插入图片描述

通过 任意节点:31082/metrics 访问redis-exporter指标接口测试
在这里插入图片描述

配置Prometheus采集数据

编辑Prometheus配置,添加job,内容如下:

  - job_name: redis-exporterstatic_configs:- targets: ["192.168.122.13:31082"]

配置修改完成后,重启Prometheus。然后通过Prometheus界面查看target状态
在这里插入图片描述

Grafana导入模板,查看监控数据。模板ID:14615
在这里插入图片描述

监控Haproxy

Prometheus官方提供了haproxy-exporter用于采集haproxy指标数据,项目地址:https://github.com/prometheus/haproxy_exporter

部署haproxy-exporter

下载安装包

wget https://github.com/prometheus/haproxy_exporter/releases/download/v0.15.0/haproxy_exporter-0.15.0.linux-amd64.tar.gz
tar xf haproxy_exporter-0.15.0.linux-amd64.tar.gz
mv haproxy_exporter-0.15.0.linux-amd64/haproxy_exporter /usr/bin/
haproxy_exporter -h		#查看帮助信息

haproxy-exporter可以通过两种方式连接haproxy来获取数据:

  1. 通过socket文件连接haproxy获取数据,这种方式只能获取本机的haproxy数据
  2. 通过haproxy状态页连接haproxy获取数据,这种方式可以获取本机或远程主机的数据,但需要在haproxy配置文件中开启状态页面配置

启动hapeoxy-exporter

#如果通过haproxy状态页获取数据,运行下面命令,其中haadmin:123456表示访问状态页的用户名密码
haproxy_exporter --haproxy.scrape-uri="http://haadmin:123456@127.0.0.1:9999/haproxy-status;csv" &#如果通过socket文件获取数据,运行下面命令
haproxy_exporter --haproxy.scrape-uri="unix:/run/haproxy/admin.sock" &

访问haproxy-exporter指标接口验证,默认端口9101
在这里插入图片描述

配置Prometheus采集数据

编辑Prometheus配置添加job,内容如下:

  - job_name: haproxy-exporterstatic_configs:- targets: ["192.168.122.14:9101", "192.168.122.15:9101"]

配置修改完成后,重启Prometheus。然后通过Prometheus界面查看target状态

在这里插入图片描述

Grafana导入模板,查看监控数据。模板ID: 2428
在这里插入图片描述

监控nginx

nginx-exporter项目地址:https://github.com/hnlq715/nginx-vts-exporter

此nginx-exporter依赖一个nginx模块nginx-module-vts(https://github.com/vozlt/nginx-module-vts),所以需要编译安装nginx,并加载此模块。

nginx-module-vts模块会收集nginx指标数据,然后提供一个状态页面,nginx-exporter通过此状态页获取指标数据,再将数据转换为Prometheus需要的数据格式提供给Prometheus。

部署nginx

下载nginx源码包和nginx-module-vts模块

wget http://nginx.org/download/nginx-1.22.1.tar.gz
wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.2.1.tar.gz
tar xf nginx-module-vts-0.2.1.tar.gz -C /usr/local/src/
tar xvf nginx-1.22.1.tar.gz
cd nginx-1.22.1/./configure --prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre \
--with-file-aio \
--with-stream \
--with-stream_ssl_module \
--with-stream_realip_module \
--add-module=/usr/local/src/nginx-module-vts-0.2.1/

修改nginx配置文件

http {vhost_traffic_status_zone;	#启用状态页...server {...location /status {	#状态页面location配置vhost_traffic_status_display;vhost_traffic_status_display_format html;}}
}

启动nginx

/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx

访问状态页测试
在这里插入图片描述
还可以用json格式输出数据

在这里插入图片描述

部署nginx-exporter

wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
tar xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
cp nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter /usr/bin/
nginx-vts-exporter  -nginx.scrape_uri http://192.168.122.23/status/format/json &	#启动nginx-exporter

访问nginx-exporter指标接口测试
在这里插入图片描述

配置Prometheus采集数据

编辑Prometheus配置,添加Job,内容如下:

  - job_name: nginx-exporterstatic_configs:- targets: ["192.168.122.23:9913"]

配置修改完成后,重启Prometheus。然后通过Prometheus界面查看target状态

在这里插入图片描述

Grafana导入模板,查看数据。模板地址:https://github.com/hnlq715/nginx-vts-exporter/blob/master/dashboard/nginx-vts-exporter.json

在这里插入图片描述

监控ingress-nginx-controller

ingress-nginx-controller程序自身可以提供指标数据,默认通过端口10254/metrics提供指标数据,在部署ingress-nginx-controller时候需要在容器上定义10254端口,并在ingress-nginx-controller对应的Service资源上也定义10254端口

        ports:- containerPort: 80name: httpprotocol: TCP- containerPort: 443name: httpsprotocol: TCP- containerPort: 8443name: webhookprotocol: TCP- name: metricscontainerPort: 10254protocol: TCP
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxapp.kubernetes.io/version: 1.3.1name: ingress-nginx-controllernamespace: ingress-nginx
spec:ipFamilies:- IPv4ipFamilyPolicy: SingleStackports:- appProtocol: httpname: httpport: 80protocol: TCPtargetPort: http- appProtocol: httpsname: httpsport: 443protocol: TCPtargetPort: https- name: metricsport: 10254targetPort: 10254protocol: TCPselector:app.kubernetes.io/component: controllerapp.kubernetes.io/instance: ingress-nginxapp.kubernetes.io/name: ingress-nginxtype: NodePort

之后就可以通过nodePort访问ingress-nginx-controller的指标接口
在这里插入图片描述

然后在Prometheus中配置中添加Job,内容如下

  - job_name: nginx-ingress-controllerstatic_configs:- targets: ["192.168.122.11:38144"]

配置修改完成后,重启Prometheus。通过Prometheus界面查看target状态
在这里插入图片描述

Grafana导入模板,查看监控数据。模板ID:9614
在这里插入图片描述

相关文章:

Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx

监控tomcat tomcat自身并不能提供监控指标数据&#xff0c;需要借助第三方exporter实现&#xff1a;https://github.com/nlighten/tomcat_exporter 构建镜像 基于tomcat官方镜像&#xff0c;重新制作一个镜像&#xff0c;将tomcat-exporter和tomcat整合到一起。Ddockerfile如…...

如何寻找SAP中的增强

文章目录0 简介1 寻找一代增强2 寻找二代增强2.2 在包里也可以看到2.3 在出口对象里输入包的名字也可以找到2.4 通过以下函数可以发现已有的增强2.5 也可以在cmod里直接找2.6 总结3 寻找第三代增强0 简介 在SAP中&#xff0c;对原代码的修改最不容易的是找增强&#xff0c;以下…...

算法刷题打卡第95天: 最大平均通过率

最大平均通过率 难度&#xff1a;中等 一所学校里有一些班级&#xff0c;每个班级里有一些学生&#xff0c;现在每个班都会进行一场期末考试。给你一个二维数组 classes &#xff0c;其中 classes[i] [passi, totali] &#xff0c;表示你提前知道了第 i 个班级总共有 totali…...

Springboot扩展点系列之终结篇:Bean的生命周期

前言关于Springboot扩展点系列已经输出了13篇文章&#xff0c;分别梳理出了各个扩展点的功能特性、实现方式和工作原理&#xff0c;为什么要花这么多时间来梳理这些内容&#xff1f;根本原因就是这篇文章&#xff1a;Spring bean的生命周期。你了解Spring bean生命周期&#xf…...

OnGUI Color 控件||Unity 3D GUI 简介||OnGUI TextField 控件

Unity 3D Color 控件与 Background Color 控件类似&#xff0c;都是渲染 GUI 颜色的&#xff0c;但是两者不同的是 Color 不但会渲染 GUI 的背景颜色&#xff0c;同时还会影响 GUI.Text 的颜色。具体使用时&#xff0c;要作如下定义&#xff1a;public static var color:Color;…...

【日刻一诗】

日刻一诗 1&#xff09;LeetCode总结&#xff08;线性表&#xff09;_链表类 2&#xff09;LeetCode总结&#xff08;线性表&#xff09;_栈队列类 3&#xff09;LeetCode总结&#xff08;线性表&#xff09;_滑动窗口 4&#xff09;LeetCode总结&#xff08;线性表&#x…...

设计模式 状态机

前言 本文梳理状态机概念&#xff0c;在实操中状态机和状态模式类似&#xff0c;只是被封装起来&#xff0c;可以很方便的实现状态初始化和状态转换。 概念 有限状态机&#xff08;finite-state machine&#xff09;又称有限状态自动机&#xff08;英语&#xff1a;finite-s…...

React源码分析(二)渲染机制

准备工作 为了方便讲解&#xff0c;假设我们有下面这样一段代码&#xff1a; function App(){const [count, setCount] useState(0)useEffect(() > {setCount(1)}, [])const handleClick () > setCount(count > count)return (<div>勇敢牛牛, <sp…...

Object.defineProperty 和 Proxy 的区别

区别:Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数&#xff0c;&#xff0c;而 Proxy 是一个用来包装普通对象的对象的对象。Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理1)参数不同Object.defineProperty参数obj: 要定…...

Python基础4——面向对象

目录 1. 认识对象 2. 成员方法 2.1 成员方法的定义语法 3. 构造方法 4. 其他的一些内置方法 4.1 __str__字符串方法 4.2 __lt__小于符号比较方法 4.3 __le__小于等于符号比较方法 4.4 __eq__等号比较方法 5. 封装特性 6. 继承特性 6.1 单继承 6.2 多继承 6.3 pas…...

Hive 核心知识点灵魂 16 问

本文目录 No1. 请谈一下 Hive 的特点No2. Hive 底层与数据库交互原理&#xff1f;No3. Hive 的 HSQL 转换为 MapReduce 的过程&#xff1f;No4. Hive 的两张表关联&#xff0c;使用 MapReduce 怎么实现&#xff1f;No5. 请说明 hive 中 Sort By&#xff0c;Order By&#xff0…...

聊聊探索式测试与敏捷实践

这是鼎叔的第五十二篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》&#xff0c;大量原创思考文章陆续推出。探索式测试在敏捷测试象限中处于右上角&#xff0c;即面向业务且评价产品&#xff0c;这篇补充一下探索…...

社区宠物诊所管理系统

目录第一章概述 PAGEREF _Toc4474 \h 21.1引言 PAGEREF _Toc29664 \h 31.2开发背景 PAGEREF _Toc3873 \h 3第二章系统总体结构及开发 PAGEREF _Toc19895 \h 32.1系统的总体设计 PAGEREF _Toc6615 \h 32.2开发运行环境 PAGEREF _Toc13054 \h 3第三章数据库设计 PAGEREF _Toc2852…...

Vue项目创建首页发送axios请求

这是个全新的Vue项目,引入了ElementUI 将App.vue里的内容干掉,剩如下 然后下面的三个文件也可以删掉了 在views文件下新建Login.vue组件 到router目录下的index.js 那么现在的流程大概是这样子的 启动 写登陆页面 <template><div><el-form :ref"form"…...

Nginx

NginxNginxNginx可以从事的用途Nginx安装Nginx自带常用命令Nginx启动Nginx停止Nginx重启Nginx配置概要第一部分&#xff1a;全局块第二部分&#xff1a;events 块&#xff1a;第三部分&#xff1a;http块&#xff1a;Nginx Nginx是一个高性能的http和反向代理服务器&#xff0…...

2049. 统计最高分的节点数目

2049. 统计最高分的节点数目题目算法设计&#xff1a;深度优先搜索题目 传送门&#xff1a;https://leetcode.cn/problems/count-nodes-with-the-highest-score/ 算法设计&#xff1a;深度优先搜索 这题的核心是计算分数。 一个节点的分数 左子树节点数 右子树节点数 除自…...

Docker 架构简介

Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…...

玄子Share-BCSP助学手册-JAVA开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言&#xff1a; 此文为玄子&#xff0c;复习BCSP一二期后整理的文章&#x…...

利用React实现多个场景下的鼠标跟随框提示框

前言 鼠标跟随框的作用如下图所示&#xff0c;可以在前端页面上&#xff0c;为我们后续的鼠标操作进行提示说明&#xff0c;提升用户的体验。本文将通过多种方式去实现&#xff0c;从而满足不同场景下的需求。 实现原理 实现鼠标跟随框的原理很简单&#xff0c;就是监听鼠标在…...

【安全知识】——如何绕过cdn获取真实ip

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a; 现在的样子是你想要的吗&#xff1f;cdn简单来说就是…...

Mamba实战:如何用选择性状态空间模型提升你的长序列处理效率(附代码)

Mamba实战&#xff1a;如何用选择性状态空间模型提升你的长序列处理效率&#xff08;附代码&#xff09; 在自然语言处理、基因组学和金融时间序列分析等领域&#xff0c;处理长序列数据一直是个棘手的问题。传统Transformer架构虽然强大&#xff0c;但随着序列长度增加&#x…...

lychee-rerank-mm行业方案:文旅部门景区图片库按游客搜索词智能排序

Lychee-rerank-mm行业方案&#xff1a;文旅部门景区图片库按游客搜索词智能排序 1. 项目背景与价值 文旅部门的景区图片库通常包含成千上万张照片&#xff0c;从自然风光到人文景观&#xff0c;从特色建筑到文化活动。当游客通过搜索词查找图片时&#xff0c;如何快速找到最相…...

GLM-4.1V-9B-Base部署指南:模型权重校验+SHA256完整性验证流程

GLM-4.1V-9B-Base部署指南&#xff1a;模型权重校验SHA256完整性验证流程 1. 模型简介 GLM-4.1V-9B-Base是智谱开源的视觉多模态理解模型&#xff0c;支持以下核心功能&#xff1a; 图像内容识别与描述场景理解与分析目标检测与问答中文视觉理解任务 该模型采用9B参数规模&…...

基于YOLOv12的零售客流量分析:Vue.js可视化Dashboard开发

基于YOLOv12的零售客流量分析&#xff1a;Vue.js可视化Dashboard开发 你有没有想过&#xff0c;每天进出你店里的顾客&#xff0c;他们到底是怎么走的&#xff1f;哪些货架最受欢迎&#xff0c;顾客停留了多久&#xff0c;又有多少人只是匆匆路过&#xff1f;过去&#xff0c;…...

避开Arduino PID编程的3个常见坑:为什么你的控制总是不稳?

Arduino PID控制实战&#xff1a;避开3个致命陷阱实现精准调节 当你在深夜盯着反复震荡的电机转速曲线&#xff0c;或是加热棒温度始终无法稳定的数据时&#xff0c;是否怀疑过自己复制的PID代码有问题&#xff1f;这不是你的错觉——大多数Arduino PID控制问题都源于三个容易被…...

gallery用户留存技巧:提高本地AI平台用户的活跃度

gallery用户留存技巧&#xff1a;提高本地AI平台用户的活跃度 【免费下载链接】gallery A gallery that showcases on-device ML/GenAI use cases and allows people to try and use models locally. 项目地址: https://gitcode.com/GitHub_Trending/gallery44/gallery …...

全栈开发者工具链:OpenClaw+Qwen3.5-9B-AWQ-4bit辅助前端调试

全栈开发者工具链&#xff1a;OpenClawQwen3.5-9B-AWQ-4bit辅助前端调试 1. 为什么需要AI辅助前端调试 作为全栈开发者&#xff0c;我经常陷入这样的困境&#xff1a;当页面渲染出现异常时&#xff0c;需要在控制台日志、网络请求和DOM树之间反复切换排查。传统调试流程至少包…...

大模型微调终极指南:从基础概念到实战技巧

前言 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;的爆发式发展正在深刻改变人工智能的格局。然而&#xff0c;如何将这些通用模型适配到特定领域和任务&#xff0c;成为了开发者面临的核心挑战。本文将系统性地梳理大模型后训练的核心方法&#xff0c;从监督微调…...

从实战到复盘:K8s服务器电子数据取证竞赛全解析与核心技巧

1. K8s服务器电子数据取证竞赛全景解析 第一次参加K8s服务器电子数据取证竞赛时&#xff0c;我完全被复杂的集群环境搞懵了。三个节点、七个命名空间、近20个Pod&#xff0c;还有各种加密算法和数据库连接&#xff0c;简直像走进了一个技术迷宫。但经过几轮实战后&#xff0c;我…...

从零搭建WebRTC SFU服务器:基于Mediasoup的1080P视频会议部署教程

从零搭建WebRTC SFU服务器&#xff1a;基于Mediasoup的1080P视频会议部署教程 视频会议已成为现代远程协作的核心工具&#xff0c;而WebRTC技术让浏览器间的实时音视频通信变得触手可及。但当你需要支持10人以上的高清会议时&#xff0c;单纯的P2P连接就会暴露出带宽和性能瓶颈…...