入门 | Prometheus+Grafana 普罗米修斯

一、prometheus介绍

1、监控系统组成

        一个完整的监控系统需要包括如下功能:数据产生、数据采集、数据存储、数据处理、数据展示、分析、告警等。

(1)、数据来源

        数据来源,也就是需要监控的数据。数据常见的产生、直接或间接暴露方式如下:

                硬件本身的记录信息---以文件或者以内存属性的方式存在

                应用业务的接口-- 主动暴露软件本身的运行状态,比如redis info、各种status 等

                相关的信息采集工具 --- 方便收集数据或者采集数据的 系统级别的命令等

注意:这些数据在长时间的运行过程中,都是以固定的“属性指标”来描述他们,我们把这些称为 metric (监控指标),监控系统就需要对每个环境的每个指标都要进行数据的获取,并且按照用户的需要方式,提供给用户来使用。

(2)、数据采集和传输

        对于上面所说的metric指标数据,我们需要持续性、周期性的方式来采集,根据数据采集方式的不同划分了两个分类:

        软件层面:

                agent:专用的软件的一种应用机制

                ssh:系统常见的一种应用通信机制,但是并非所有的系统都支持

                SNMP:简单网络管理协议,是工作在各种网络设备中的一种机制

        硬件层面:

                IPMI:智慧平台管理接口,是一种工业标准用于采集硬件设备的各种物理健康状态数据,如温度、电压、工作状态、电源状态等

注意:由于每个业务场景不同,我们需要的采集指标量不好评估,甚至一个业务场景,就需要采集数百个指标,如果按照上述所说的周期性采集的方式来说,数据的采集量是相当大的。

(3)、数据存储

        由于采集到是“样本数据” ,不是一次性使用的,尤其是单个数据是没有意义的,我们需要将这些数据存储下来,在后续的工作场景中进行聚合操作,从而满足我们的需求。

        我们在后续使用这些数据的时候,不仅仅要知道这些数据,还要知道这些数据的事件属性--什么时候的数据,所以这些数据在存储的时候,必须有一个重要的时间维度,所以我们一般将这种用于监控场景的数据,称为时间序列数据 -- TS,专门用于存储这些数据的数据库,称其为 时序数据库  TSDB 

        其具备以下特点:

                数据结构简单:某一度量指标在某一时间点只会有一个值,没有复杂的结构(嵌套、层次)和关系(关联、主外键)

                数据量大:由于时序数据由所监控的大量数据源来产生、收集和发送,比如主机、IoT设备、终端或 APP等

(4)、数据处理

        如果仅仅采集到的是单条数据,本身没有太大的意义,我们需要对数据进行各种聚合和处理操作,才可以正常的用于工作分析场景,所以对于各种聚合操作之后的数据,我们也需要进行分析和展示。

(5)、数据分析展示

        无论是采集到的时序数据,还是经过聚合分析之后的统计数据,由于数据量巨大,用肉眼观察很难看得清楚,尤其是通过表格来查看成千上万条数据,来分析其内在的逻辑趋势关系,所以对于监控系统来说,其本身的数据可视化功能是非常重要的,以各种图形演示的方式展示我们数据的发展趋势,方便我们进行分析。

 (6)、告警

        告警,就是在某些特殊情况下,提醒我们去看相关的数据,根据日常工作的状态值,设置一个阈值指标,后续数据采集的时候,一旦超出我们的阈值指标,就通过告警机制通知我们,提高我们的工作效率。

(7)、监控内容

        资源监控:

                硬件设备:服务器、路由器、交换机、IO系统等

                系统资源:OS、网络、容器、VM实例

                应用软件:nginx 、MySQL 、Java 应用等

        业务服务:

                业务状态:服务通信、服务运行、服务下线、性能指标、QPS、DAU日活、转化率、业务接口(登录、注册、聊天、留言)、产品转化率、充值额度、用户投诉等

                一般故障:访问缓慢、存储空间不足、数据同步延迟、主机宕机、主机不可达

                严重故障:服务不可达、集群故障

        趋势分析:

                数据统计:时间序列数据展示历史数据等

                数据预测:事件什么时候发生、持续时间、发生概率是多大等,比如:电商大促时间

(8)、监控设施实现方式

          对于Linux系统来说,他的系统监控的实现方式很多,主要有系统命令、开源软件、监控平台等

                系统命令(略)

                uptime

                开源软件

                        zabbix、nogios、Prometheus、smoke ping 、cacti

        对于传统的业务数据监控来说,Zabbix 是优秀的,由于 Zabbix 诞生的时代业务数据量相对不是太多,所以它默认采取的是关系型数据库作为后端存储。

        所以随着业务场景的发展,尤其是微服务、云原生场景的发展,大量数据的存储就成为了 Zabbix 本身的限制。所以就出现了另外一种监控软件 Prometheus。

2、时序数据库

        时间序列数据(TimeSeriesData) : 按照时间顺序记录系统、设备状态变化的数据被称为时序数据。

        时间序列数据库 (Time Series Database , 简称 TSDB) 是一种高性能、低成本、稳定可靠的在线时间序列数据库服务,提供高效读写、高压缩比存储、时序数据插值及聚合计算等服务

        特点:

                顺序写入操作,很少涉及修改数据

                删除操作都是删除一段时间的数据,而不涉及到删除无规律数据,读操作一般都是升序或者降序

                高效的压缩算法,节省存储空间,有效降低 IO,存储成本低

                高性能读写, 每秒百万级数据点写入,亿级数据点聚合结果秒级返回

3、Prometheus

        Prometheus是一个开源的系统监控和报警系统,本身基于Go语言开发的一套开源的系统监控报警框架和时序列数据库(TSDB)。

        其特点主要如下:

                支持多维数据模型:由度量名和键值对组成的时间序列数据

                内置时间序列数据库TSDB(Time Series Database )

                支持PromQL(Prometheus Query Language)查询语言,可以完成非常复杂的查询和分析,对图表展示和告警非常有意义

                支持 HTTP 的 Pull 方式采集时间序列数据

                支持 PushGateway 采集瞬时任务的数据

                支持静态配置和服务发现两种方式发现目标

                多种可视化和仪表盘,支持第三方 Dashboard,比如:Grafana

        数据特点:

                监控指标采用,独创的指标格式,我们称之为Prometheus格式,这个格式在监控场景中很常见。

                数据标签,支持多维度标签,每个独立的标签组合都代表一个独立的时间序列

                数据处理,Prometheus内部支持多种数据的聚合、切割、切片等功能。

                数据存储,Prometheus支持双精度浮点型数据存储和字符串

        适用场景:

                Prometheus非常适合记录任何纯数字时间序列。它既适合以机器为中心的监控场景,也适合于高度动态的面向服务的体系结构的监控场景。尤其是在微服务世界中,它对多维数据收集和查询的支持是一种特别的优势。

        不足:

                不支持集群化

                被监控集群规模过大后本身性能有一定瓶颈

                中文支持不好中文资料也很少

二、Prometheus架构

1、Prometheus架构图

2、架构详解

(1)、Prometheus Server(普罗米修斯服务器)

        负责从各种数据源拉取指标数据(metrics pull)以及接收通过 Pushgateway 推送过来的指标数据(alerts push)。
        通过 HTTP 与数据源进行交互,包括与各种 exporters(如 Jobs/ Node HDD/SSD 对应的 exporters)以及 targets(目标)通信。
        内部包含一个时间序列数据库(TSDB server)用于存储抓取到的指标数据,支持 PromQL(Prometheus 查询语言)进行数据查询和分析。
        提供 web UI 供用户查看和管理监控数据。

(2)、Pushgateway(推送网关)

        主要用于接收短生命周期作业(Short-lived jobs)的数据推送,因为这些作业可能在 Prometheus 主动抓取数据之前就已经结束了。
        将接收到的数据缓存起来,等待 Prometheus Server 来拉取。

(3)、Exporters(导出器)

        负责从各种不同的数据源(如 Jobs/ Node HDD/SSD)收集数据,并将其转换为 Prometheus 可以理解的格式进行暴露。
        使得 Prometheus 可以监控各种不同类型的系统和应用程序。

(4)、PromQL(Prometheus 查询语言)

        用于查询和分析存储在 Prometheus Server 中的时间序列数据。
        可以进行复杂的查询操作,例如聚合、过滤、函数计算等。

(5)、Grafana visualization(Grafana 可视化)

        Grafana 是一个流行的开源数据可视化工具,可以与 Prometheus 集成。
        通过使用 Prometheus 作为数据源,Grafana 可以将 Prometheus 中的监控数据以各种直观的图表和仪表盘形式展示出来。

(6)、Alertmanager(Prometheus 告警)

        当监控数据满足特定条件时,可以触发警报。
        可以通过 Alertmanager 将警报发送到各种渠道,如 PagerDuty、Email 等,以便及时通知相关人员进行处理。

(7)、API clients(API 客户端)

        可以通过 Prometheus 的 API 与 Prometheus Server 进行交互,获取监控数据或者进行管理操作。

(8)、工作流程

        Prometheus server 定期从配置好的 jobs 或者 exporters 中拉 metrics,或者接收来自Pushgateway 发过来的 metrics,或者从其他的 Prometheus server 中拉 metrics。

        Prometheus server 在本地存储收集到的 metrics,并运行已定义好的alert.rules,记录新的时间序列或者向 Alertmanager 推送警报,实现一定程度上的完全冗余功能。Alertmanager 根据配置文件,对接收到的警报进行去重分组,根据路由配置,向对应主机发出告警。集成Grafana或其他API作为图形界面,用于可视化收集的数据。

        为保存数据的拉取效果,当数据量特别大时,会产生一定的延迟。基于promQL语句显示在web、UI上。

(9)、Prometheus数据模型

        rometheus中存储的数据为时间序列,即基于同一度量标准或者同一时间维度的数据流。除了时间序列数据的正常存储之外,Prometheus还会基于原始数据临时生成新的时间序列数据,用于后续查询的依据或结果。

metric名字:

        该名字必须有意义,用于表示 metric 的一般性功能,metric名字由ASCII 字符,数字,下划线,以及冒号组成,且必须满足正则表达式[a-zA-Z_:][a-zA-Z0-9_:]* 的查询需求。

注意:冒号是为用户定义的记录规则保留的。

标签:

        标签是以键值对的样式而存在,不同的标签用于表示时间序列的不同维度标识,方便检索

基本格式:

<metric name>{<label name>=<label value>, …}

指标类型:

        Counter-累计图:

                counter是一个累加的计数器,代表一个从0开始累积单调递增的计数器,其值只能在重新启动时增加或重置为零。典型的应用如:用户的访问量,请求的总个数,任务的完成数量或错误的数量等。不能使用Counter来表示递减值。

        Gauge- 量规图:

                Gauge是一种度量标准,只有一个简单的返回值,或者叫瞬时状态,可以代表可以任意metric的上下波动的数值。通常用于测量值,例如,硬盘剩余空间,当前的内存使用量,一个待处理队列中任务的个数等,还用于可能上升和下降的“计数”,例如并发请求数。

        Histogram-直方图:

                某一段范围内的分布情况

                Histogram统计数据的分布情况。比如最小值,最大值,中间值,还有中位数,75百分位,90百分位, 95百分位.98百分位,99百分位,和9.9百分位的值(percenties ,代表着近似的百分比估算数值

三、Prometheus部署

1、脚本安装Prometheus server

下载二进制安装包:

https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz

进行脚本安装:

#!/bin/bash
#
#無爲謂PROMETHEUS_VERSION=2.54.1
PROMETHEUS_FILE="prometheus-${PROMETHEUS_VERSION}.linux-amd64.tar.gz"
PROMETHEUS_URL="https://mirrors.tuna.tsinghua.edu.cn/github-release/prometheus/prometheus/LatestRelease/${PROMETHEUS_FILE}"
#PROMETHEUS_URL="https://github.com/prometheus/prometheus/releases/download/v${PROMETHEUS_VERSION}/${PROMETHEUS_FILE}"INSTALL_DIR=/usr/localHOST=`hostname -I|awk '{print $1}'`. /etc/os-releasemsg_error() {echo -e "\033[1;31m$1\033[0m"
}msg_info() {echo -e "\033[1;32m$1\033[0m"
}msg_warn() {echo -e "\033[1;33m$1\033[0m"
}color () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $"  OK  "    elif [ $2 = "failure" -o $2 = "1"  ] ;then${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo 
}install_prometheus () {if [ ! -f  ${PROMETHEUS_FILE} ] ;thenwget ${PROMETHEUS_URL} ||  { color "下载失败!" 1 ; exit ; }fi[ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIRtar xf ${PROMETHEUS_FILE} -C $INSTALL_DIRcd $INSTALL_DIR &&  ln -s prometheus-${PROMETHEUS_VERSION}.linux-amd64 prometheusmkdir -p $INSTALL_DIR/prometheus/{bin,conf,data}cd $INSTALL_DIR/prometheus && { mv prometheus promtool bin/ ; mv prometheus.yml conf/; }groupadd -r prometheususeradd -r -g prometheus -s /sbin/nologin prometheuschown -R prometheus.prometheus ${INSTALL_DIR}/prometheus/cat >  /etc/profile.d/prometheus.sh <<EOF
export PROMETHEUS_HOME=${INSTALL_DIR}/prometheus
export PATH=\${PROMETHEUS_HOME}/bin:\$PATH
EOF}prometheus_service () {cat > /lib/systemd/system/prometheus.service <<EOF
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network.target[Service]
Restart=on-failure
User=prometheus
Group=prometheus
WorkingDirectory=${INSTALL_DIR}/prometheus
ExecStart=${INSTALL_DIR}/prometheus/bin/prometheus --config.file=${INSTALL_DIR}/prometheus/conf/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
LimitNOFILE=65535[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now prometheus.service
}start_prometheus() {systemctl is-active prometheusif [ $?  -eq 0 ];thenecho color "Prometheus 安装完成!" 0echo "-------------------------------------------------------------------"echo -e "访问链接: \c"msg_info "http://$HOST:9090/"elsecolor "Prometheus 安装失败!" 1exitfi
}install_prometheusprometheus_servicestart_prometheus

Dashboard 菜单说明

        Alerts  #Prometheus的告警信息菜单

        Graph   #Prometheus的图形展示界面,这是prometheus默认访问的界面

        Status  #Prometheus的状态数据界面

        Help    #Prometheus的帮助信息界面

                #Status子菜单,在Status菜单下存在很多的子选项,其名称和功能效果如下:

                Runtime& Build Information 服务主机的运行状态信息及内部的监控项基本信息

                Command-LineFlags 启动时候从配置文件中加载的属性信息

                Configuration配置文件的具体内容(yaml格式)

                Rules查询、告警、可视化等数据分析动作的规则记录

                Targets监控的目标对象,包括主机、服务等以endpoint形式存在

                ServiceDiscovery 自动发现的各种Targets对象列表

2、脚本安装node_exporter 

安装 Node Exporter 用于收集各 node 主机节点上的监控指标数据,监听端口为9100

#!/bin/bash
#
#無僞謂NODE_EXPORTER_VERSION=1.8.2
NODE_EXPORTER_FILE="node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz"
NODE_EXPORTER_URL=https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/${NODE_EXPORTER_FILE}
INSTALL_DIR=/usr/localHOST=`hostname -I|awk '{print $1}'`. /etc/os-releasemsg_error() {echo -e "\033[1;31m$1\033[0m"
}msg_info() {echo -e "\033[1;32m$1\033[0m"
}msg_warn() {echo -e "\033[1;33m$1\033[0m"
}color () {RES_COL=60MOVE_TO_COL="echo -en \\033[${RES_COL}G"SETCOLOR_SUCCESS="echo -en \\033[1;32m"SETCOLOR_FAILURE="echo -en \\033[1;31m"SETCOLOR_WARNING="echo -en \\033[1;33m"SETCOLOR_NORMAL="echo -en \E[0m"echo -n "$1" && $MOVE_TO_COLecho -n "["if [ $2 = "success" -o $2 = "0" ] ;then${SETCOLOR_SUCCESS}echo -n $"  OK  "    elif [ $2 = "failure" -o $2 = "1"  ] ;then${SETCOLOR_FAILURE}echo -n $"FAILED"else${SETCOLOR_WARNING}echo -n $"WARNING"fi${SETCOLOR_NORMAL}echo -n "]"echo 
}install_node_exporter () {if [ ! -f  ${NODE_EXPORTER_FILE} ] ;thenwget ${NODE_EXPORTER_URL} ||  { color "下载失败!" 1 ; exit ; }fi[ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIRtar xf ${NODE_EXPORTER_FILE} -C $INSTALL_DIRcd $INSTALL_DIR &&  ln -s node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64 node_exportermkdir -p $INSTALL_DIR/node_exporter/bincd $INSTALL_DIR/node_exporter &&  mv node_exporter bin/cat >  /etc/profile.d/node_exporter.sh <<EOF
export NODE_EXPORTER_HOME=${INSTALL_DIR}/node_exporter
export PATH=\${NODE_EXPORTER_HOME}/bin:\$PATH
EOF}node_exporter_service () {cat > /lib/systemd/system/node_exporter.service <<EOF
[Unit]
Description=Prometheus Node Exporter
After=network.target[Service]
Type=simple
ExecStart=$INSTALL_DIR/node_exporter/bin/node_exporter
Restart=on-failure[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reloadsystemctl enable --now node_exporter.service
}start_node_exporter() {systemctl is-active node_exporter.serviceif [ $?  -eq 0 ];thenecho color "node_exporter 安装完成!" 0echo "-------------------------------------------------------------------"echo -e "访问链接: \c"msg_info "http://$HOST:9100/metrics"elsecolor "node_exporter 安装失败!" 1exitfi
}install_node_exporternode_exporter_servicestart_node_exporter

3、修改配置,使得Prometheus采集node数据

修改配置文件

vim /usr/local/prometheus/conf/prometheus.yml
# my global config
global:# 默认情况下,每15s拉取一次目标采样点数据。注释后为1分钟scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.# 每15秒评估一次规则。默认值为每1分钟。evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# job名称会增加到拉取到的所有采样点上,同时还有一个instance目标服务的host:port标签也会增加到采样点上- job_name: 'prometheus'# 覆盖global的采样点,拉取时间间隔5sscrape_interval: 5sstatic_configs:- targets: ['localhost:9090']
#添加新的node节点- job_name: "node1"static_configs:- targets: - "192.168.10.110:9100"
-- 插入 --                     

检查配置文件语法是否有误:

新版本可能没有下载这个命令 promtool 可以下载一下:

promtool check config /usr/local/prometheus/conf/prometheus.yml

语法检查无误,重启Prometheus服务

systemctl restart prometheus.service 

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

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

相关文章

服务器磁盘爆满?别慌,教你轻松清理!

服务器磁盘爆满&#xff1f;别慌&#xff0c;教你轻松清理&#xff01; 简介 服务器磁盘空间告急&#xff0c;网站访问缓慢&#xff0c;甚至无法正常运行&#xff1f;别担心&#xff0c;这篇文章将为你提供一份详细的清理指南&#xff0c;帮助你快速释放服务器磁盘空间&#x…

【算法】Bellman-Ford单源最短路径算法(附动图)

目录 一、性质 二、思路 三、有边路限制的最短路 一、性质 适用于含有负权边的图&#xff08;Dijkstra不适用&#xff09; 更简单&#xff0c;但效率慢 如果对应路径存在负权回路则没有最短路径&#xff08;可用于判断图中是否存在负权回路&#xff09; 相比于spfa&#…

[分享] SQL在线编辑工具(好用)

在线SQL编写工具&#xff08;无广告&#xff09; - 在线SQL编写工具 - Web SQL - SQL在线编辑格式化 - WGCLOUD

物联网实训项目:绿色家居套件

1、基本介绍 绿色家居通过物联网技术将家中的各种设备连接到一起&#xff0c;提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。绿色家居提供全方位的信息交互功能&#xff0c;甚至为各种能源费…

solana phantom NFT图片显示不出来?

solana phantom NFT图片显示不出来&#xff1f; 问题 同样是jpeg格式图片&#xff0c;一个phatom可以显示&#xff0c;一个不可以显示为什么&#xff0c;nft图片格式大小有要求吗&#xff1f; 问题分析 Phantom 官网有一些关于 NFT 集成的文档,其中可能会有关于图片大小限制…

049_python基于Python的热门微博数据可视化分析

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

15分钟学Go 第7天:控制结构 - 条件语句

第7天&#xff1a;控制结构 - 条件语句 在Go语言中&#xff0c;控制结构是程序逻辑的重要组成部分。通过条件语句&#xff0c;我们可以根据不同的条件采取不同的行动。今天我们将详细探讨Go语言中的两种主要条件结构&#xff1a;if语句和switch语句。理解这些控制结构对于编写…

CTA-GAN:基于生成对抗网络对颈动脉和主动脉的非增强CT影像进行血管增强

写在前面 目前只分析了文章的大体内容和我个人认为的比较重要的细节&#xff0c;代码实现还没仔细看&#xff0c;后续有时间会补充代码细节部分。 文章地址&#xff1a;Generative Adversarial Network-based Noncontrast CT Angiography for Aorta and Carotid Arteries 代…

JAVA基础面试题准备

一些常见的JAVA基础题&#xff0c;面试中遇到过的会加*显示。 JAVA基础 1.Java中重载和重写的区别&#xff1f;* 2.int 和Integer类型这两个区别吗&#xff1f; 为什么需要有Integer类型&#xff1a; int和Integer类型的区别&#xff1a; 3.遍历list有那些方式吗&#xff1f;…

【Linux】进程信号(下)

目录 一、信号的阻塞 1.1 信号在内核中的保存方式 1.2 sigset_t信号集 &#xff08;1&#xff09;信号集操作 &#xff08;2&#xff09;sigprocmask函数 &#xff08;3&#xff09;sigpending函数 二、信号的处理 2.1 用户态和内核态 2.2 重谈进程地址空间 三、信号…

盘点2024年4款高清稳定的Windows10录屏工具。

Windows10电脑录屏在生活当中还是挺重要的&#xff0c;无论是教育领域的制作教程&#xff0c;还是游戏玩家记录精彩瞬间&#xff0c;亦或是商务人士进行演示&#xff0c;录屏都能发挥巨大作用。如果设备自带的一些工具无法完成录屏需求的话&#xff0c;这里帮大家找了几款好用到…

AI大模型应用(3)开源框架Vanna: 利用RAG方法做Text2SQL任务

AI大模型应用(3)开源框架Vanna: 利用RAG方法做Text2SQL任务 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;如下图所示&#xff09;检索增强生成&#xff0c;即大模型LLM在回答问题时&#xff0c;会先从大量的文档中检索出相关信息&#xff0c;然后基于这些检索出…

万家数科:零售业务信息化融合的探索|OceanBase案例

本文作者&#xff1a;马琳&#xff0c;万家数科数据库专家。 万家数科商业数据有限公司&#xff0c;作为华润万家旗下的信息技术企业&#xff0c;专注于零售行业&#xff0c;在为华润万家提供服务的同时&#xff0c;也积极面向市场&#xff0c;为零售商及其生态系统提供全面的核…

挖矿病毒来势汹汹

病毒来了, 我的个人站点使用了 wordpress, 它的不知哪个漏洞让黑客攻入了我的站点 使用 top 命令看到了有不明进程始终占据了 100% 的 CPU snapshot 1 snapshot 2 通过以下 "三板斧"可以查杀这个进程 先用 top (shiftp) 查找占据 CPU 最多的进程根据其进程号 pid 查看…

【数据结构】宜宾大学-计院-实验四

栈和队列之&#xff08;栈的基本操作&#xff09; 实验目的&#xff1a;实验内容&#xff1a;实验结果&#xff1a;实验报告:&#xff08;及时撰写实验报告&#xff09;&#xff1a;实验测试结果&#xff1a;代码实现1.0&#xff1a;&#xff08;C/C&#xff09;【含注释】代码…

QGIS之三十二DEM地形导出三维模型gltf

效果 1、准备数据 (1)dem.tif (2)dom.tif 2、qgis加载dem和dom数据 3、安装插件 插件步骤可以参考这篇文章 QGIS之二十四安装插件 安装了Qgis2threejs插件,结果

无人机之自主降落系统篇

一、定义与功能 无人机自主降落系统是指无人机在无需人工干预的情况下&#xff0c;按照预先设定好的程序或基于实时感知的环境信息&#xff0c;自主完成降落过程的技术系统。该系统能够确保无人机在完成任务后安全、准确地降落到指定位置。 二、系统组成 无人机自主降落系统主…

ELK之路第二步——可视化界面Kibana

Kibana 1.安装2.解压3.修改配置4.启动 这部分内容就比较简单了&#xff0c;水一片文章。 1.安装 需要梯子 官网下载链接&#xff1a;https://www.elastic.co/cn/downloads/past-releases/kibana-7-3-0 如果你去官网下载页面&#xff0c;点击下载是404报错&#xff0c;记得切换…

redis的zset实现下滑滚动分页查询思路

常规zset查询 我们redis的数据为 我们知道 我们常规查询的话 我们假如 zset 表中 有7个元素&#xff0c;然后我们进行分页查询的话&#xff0c;我们一次查3个元素&#xff0c;然后查出来元素 和元素的分数 我们redis的语法应该这样写 zrevrangebyscore wang 1000 0 withsc…

Flutter 12 实现双击屏幕显示点赞爱心多种动画(AnimationIcon)效果

本文主要是使用Flutter封装一个双击屏幕显示点赞爱心UI效果&#xff0c;并实现了爱心Icon 透明度、缩放、旋转、渐变等动画效果。 实现效果&#xff1a; 实现逻辑&#xff1a; 1、封装FavoriteGesture&#xff08;爱心手势&#xff09;实现双击屏幕显示爱心Icon&#xff1b; …