云原生日志Loki

news2024/11/25 20:19:57

1. Loki简介

1.1 Loki介绍

  • Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。项目受 Prometheus 启发,官方的介绍就是:Like Prometheus, but for logs,类似于 Prometheus 的日志系统。

image-20240615172128856

1.2 Loki 的主要特点

  • 水平可扩展性:Loki 能够通过增加更多的节点来扩展其处理能力,以应对不断增长的数据量。

  • 高可用性:设计上保证了系统的稳定性和可靠性,即使在部分组件发生故障时也能继续运行。

  • 多租户支持:Loki 支持在同一个实例中为不同的用户提供隔离的日志数据存储和查询服务。

  • 经济高效:与传统的日志系统相比,Loki 不会对日志内容进行全文索引,而是通过为每个日志流创建一组标签来组织数据,这大大减少了存储需求和提高了查询效率。

  • 易于操作:Loki 的设计理念是简单易用,使得用户可以快速上手并有效地管理日志数据。

2. Loki部署

主机名作用系统IPV4
master采集端CentOS 7.9192.168.110.21/24
node-01被采集端CentOS 7.9192.168.110.22/24
node-02被采集端CentOS 7.9192.168.110.23/24

2.1 Loki主要组件

Loki 作为日志聚合系统的设计理念确实非常先进和实用,它通过以下三个主要组件来实现高效的日志管理:

  • Promtail

    • Promtail 是 Loki 的日志收集器,它运行在每个主机上,负责从本地文件中收集日志数据。

    • 它使用类似于 Prometheus 的服务发现机制来动态地发现日志文件。

    • Promtail 将日志作为流发送到 Loki 服务器,这些流由一组标签定义,而不是通过全文索引。

  • Loki

    • Loki 本身是一个高效的日志存储系统,它接收来自 Promtail 的日志数据,并将其存储在后端数据库中,如 BoltDB 或 Cassandra。

    • Loki 提供了一个 RESTful API,允许用户查询和聚合日志数据。

    • 它的设计允许快速查询和聚合,因为查询是基于标签的,而不是基于文本的全文搜索。

  • Grafana

    • Grafana 是一个流行的开源数据可视化和监控平台,它与 Loki 紧密集成。

    • 用户可以通过 Grafana 来创建仪表板,实时监控和分析 Loki 中的日志数据。

    • Grafana 提供了丰富的图表和可视化选项,帮助用户更直观地理解日志数据。

image-20240615172706011

2.2 Loki主要特性

Loki 与其他日志聚合系统相比确实具有一些独特的特性,这些特性使得 Loki 成为处理大规模日志数据的理想选择,特别是在云原生和容器化环境中。它的简单性、效率和成本效益使其在日志聚合领域中独树一帜。

  • 不进行全文索引

    • Loki 不对日志内容进行全文索引,而是存储压缩的非结构化日志数据,并仅索引元数据。这种方法简化了操作,减少了存储和计算资源的需求,从而降低了成本。

  • 使用标签记录流

    • Loki 采用了与 Prometheus 类似的标签系统,通过标签来索引和分组日志流。这种方法提高了日志数据的扩展性和操作效率,使得用户可以快速地查询和聚合具有特定标签的日志。

  • 适合存储 Kubernetes Pod 日志

    • Loki 特别适合于存储和处理 Kubernetes 环境中的 Pod 日志。在 Kubernetes 中,Pod 是短暂的,而 Loki 的设计允许它高效地处理这些短暂生命周期的日志源。

    • Kubernetes Pod 的标签等元数据可以自动被 Loki 索引,这使得用户能够利用这些标签来查询特定 Pod 或命名空间的日志。

  • 水平可扩展性

    • Loki 设计为易于水平扩展,可以通过增加更多的节点来处理更多的日志数据,这使得它能够适应不断增长的数据量。

  • 多租户支持

    • Loki 支持多租户部署,允许多个团队或项目在同一个 Loki 实例上独立地存储和查询日志,而不会相互干扰。

  • 与 Grafana 的集成

    • Loki 与 Grafana 的紧密集成提供了强大的可视化和监控能力,使得用户可以轻松地创建仪表板和警报。

  • 成本效益

    • 由于 Loki 的设计减少了对存储和计算资源的需求,它提供了一种成本效益更高的日志聚合解决方案,特别是在处理大规模日志数据时。

  • 各日志收集组件简单对比

名称安装的组件优点
ELK/EFKElasticsearch, Logstash支持自定义grok正则解析复杂日志内容- Dashboard支持丰富的可视化展示
Kibana, Filebeat, Kafka/Redis
LokiGrafana, Loki, Promtail占用资源小- Grafana原生支持- 查询速度快
  • 相关资料

    • 官方地址:Grafana Loki OSS | Log aggregation system

    • 文档地址:Configure the Loki data source | Grafana documentation

    • git地址:https://github.com/grafana/loki/blob/master/docs/README.md

    • 下载地址:https://github.com/grafana/loki/releases/

2.3 安装Loki

  • Grafana Loki 是一个日志聚合工具,它是功能齐全的日志堆栈的核心。

  • Loki 是一个为有效保存日志数据而优化的数据存储。日志数据的高效索引将 Loki 与其他日志系统区分开来,

  • 与其他日志系统不同,Loki 索引是根据标签构建的,原始日志消息未编入索引。

 [root@master ~]# wget -c https://github.com/grafana/loki/releases/download/v2.9.8/loki-2.9.8.x86_64.rpm
 [root@master ~]# yum install loki-2.9.8.x86_64.rpm -y
 [root@master ~]# sed -i 's/127.0.0.1/192.168.110.21/' /etc/loki/config.yml  # 修改IP
 [root@master ~]# systemctl enable loki --now
 [root@master ~]# systemctl is-active loki.service 
 active
 [root@master ~]# ss -lnupt | egrep '3100|9096'
 tcp    LISTEN     0      128    [::]:9096               [::]:*                   users:(("loki",pid=11871,fd=9))
 tcp    LISTEN     0      128    [::]:3100               [::]:*                   users:(("loki",pid=11871,fd=8))
  • 文件介绍

 [root@master ~]# rpm -ql loki
 /etc/loki/config.yml               # 配置文件
 /etc/systemd/system/loki.service   # 系统服务文件
 /usr/bin/loki                      # 二进制文件
 ​
 [root@master ~]# cat /etc/loki/config.yml 
 auth_enabled: false     # 是否启用鉴权
 ​
 server:
   http_listen_port: 3100  # http访问端口
   grpc_listen_port: 9096  # rpc访问端口
 ​
 common:
   instance_addr: 127.0.0.1  # 修改为自己的IP或localhost
   path_prefix: /tmp/loki
   storage:
     filesystem:
       chunks_directory: /tmp/loki/chunks # 记录块存储目录,默认chunks块上的日志数量或到期后,将chunks数据打标签后存储
       rules_directory: /tmp/loki/rules
   replication_factor: 1
   ring:
     kvstore:
       store: inmemory
 ​
 query_range:            # 查询规则
   results_cache:
     cache:
       embedded_cache:
         enabled: true
         max_size_mb: 100
 ​
 schema_config:
   configs:
     - from: 2020-10-24
       store: boltdb-shipper
       object_store: filesystem
       schema: v11
       index:
         prefix: index_
         period: 24h
 ​
 ruler:
   alertmanager_url: http://localhost:9093   # 告警通知url,修改为自己的IP
   
 # By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
 # analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
 #
 # Statistics help us better understand how Loki is used, and they show us performance
 # levels for most users. This helps us prioritize features and documentation.
 # For more information on what's sent, look at
 # https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
 # Refer to the buildReport method to see what goes into a report.
 #
 # If you would like to disable reporting, uncomment the following lines:
 #analytics:
 #  reporting_enabled: false

2.4 安装Promtail

 [root@master ~]# wget -c https://github.com/grafana/loki/releases/download/v2.9.8/promtail-2.9.8.x86_64.rpm
 [root@master ~]# yum install promtail-2.9.8.x86_64.rpm -y
 [root@master ~]# setfacl -m u:promtail:r /var/log/messages  # 注意默认是没有读权限
 [root@master ~]# systemctl enable promtail --now
 [root@master ~]# systemctl is-active promtail
 active
  • 测试

    • 访问http://192.168.110.21:9080/targets

image-20240615181646630

 [root@master ~]# cat /tmp/positions.yaml 
 positions:
   /var/log/messages: "1008852"
  • 配置文件详解

 [root@master ~]# cat /etc/promtail/config.yml
 # This minimal config scrape only single log file.
 # Primarily used in rpm/deb packaging where promtail service can be started during system init process.
 # And too much scraping during init process can overload the complete system.
 # https://github.com/grafana/loki/issues/11398
 ​
 server:
   http_listen_port: 9080
   grpc_listen_port: 0
 ​
 positions:
   filename: /tmp/positions.yaml # 用于记录每次读取日志文件的索引行数,如:promtail重启后从该配置中恢复日志文件的读取位置
 ​
 clients:
 - url: http://localhost:3100/loki/api/v1/push  # 推送日志流到Loki中的api
 ​
 scrape_configs:     # 发现日志文件的位置并从中提取标签
 - job_name: system  # 任务名称
   static_configs:   # 目录配置
   - targets:        # 标签
       - localhost
     labels:
       job: varlogs  # 子任务名称,通常以项目命令
       #NOTE: Need to be modified to scrape any additional logs of the system.
       __path__: /var/log/messages  # 收集本地系统日志

2.5 安装命令行工具

 [root@master ~]# wget -c https://github.com/grafana/loki/releases/download/v2.9.8/logcli-2.9.8.x86_64.rpm
 [root@master ~]# yum install logcli-2.9.8.x86_64.rpm -y
 [root@master ~]# logcli --help
 --help:显示帮助信息。
 --version:显示应用程序版本。
 --quiet:抑制查询元数据。
 --stats:显示查询统计信息。
 --output:指定输出模式,可选 default, raw, jsonl。raw 模式会抑制日志标签和时间戳。
 --timezone:指定格式化输出时间戳时使用的时区,默认为本地时区或 UTC。
 --cpuprofile 和 --memprofile:指定 CPU 和内存分析文件的写入位置。
 --stdin:从标准输入读取日志输入。
 --addr:设置 Loki 服务器地址,默认为 http://localhost:3100。
 --username 和 --password:设置 HTTP 基本认证的用户名和密码。
 --ca-cert:设置服务器 CA 证书的路径。
 --tls-skip-verify:跳过 TLS 服务器证书验证。
 --cert 和 --key:设置客户端证书和密钥的路径。
 --org-id:添加 API 请求的租户 ID。
 --query-tags:添加 HTTP 请求头,用于跟踪查询统计。
 --bearer-token 和 --bearer-token-file:设置用于 API 请求的身份验证令牌。
 --retries:设置查询失败时的重试次数。
 --min-backoff 和 --max-backoff:设置重试之间的最小和最大回退时间。
 --auth-header:设置用于 API 请求的身份验证头部。
 --proxy-url:设置 HTTP 或 HTTPS 代理的 URL。

2.6 安装Granafa

 [root@master ~]# wget -c https://dl.grafana.com/enterprise/release/grafana-enterprise-10.0.2-1.x86_64.rpm
 [root@master ~]# yum install grafana-enterprise-10.0.2-1.x86_64.rpm -y
 [root@master ~]# systemctl enable --now grafana-server
  • 访问: http://192.168.110.21:3000

    • 用户名密码都为:admin

image-20240615182851316

  • 添加Loki数据源

Data sources ——> Add new data source ——> Loki

image-20240615183127589

image-20240615183146759

image-20240615183206340

image-20240615183616747

image-20240615183713012

image-20240615183804638

image-20240615183843065

2.7 增加一个标签

 [root@master ~]# vim /etc/promtail/config.yml
 ...
 scrape_configs:
 - job_name: system
   static_configs:
   - targets:
       - localhost
     labels:
       job: varlogs
       #NOTE: Need to be modified to scrape any additional logs of the system.
       __path__: /var/log/messages
   - targets:              # 添加一个targets
       - localhost
     labels:
       job: varlogs-02
       __path__: /var/log/secure
 ​
 [root@master ~]# setfacl -m u:promtail:r /var/log/secure 
 [root@master ~]# systemctl restart promtail.service 

image-20240615184435177

  • 添加监控指标

image-20240615184628913

image-20240615184647967

3. LogQL语法

在 Loki 中,查询日志数据时可以使用标签选择器和过滤表达式来精确地定位和检索所需的日志流。

3.1 标签选择器

  • 标签选择器用于指定一组标签,以便从 Loki 中检索匹配特定标签的日志流。

  • 选择器放在 {} 中,多个标签表达式用逗号分隔。

image-20240615185435757

3.1.1 支持的符号

  • =:表示标签的值需要完全相同。

  • !=:表示标签的值需要不平等。

  • =~:表示标签的值需要与正则表达式匹配。

  • !~:表示标签的值不能与正则表达式匹配。

3.1.2 过滤表达式

  • 在选择了日志流之后,可以使用搜索表达式进一步过滤结果。

  • 搜索表达式可以是文本或正则表达式。

3.1.3 示例

  • {job="mysql"} |= "error":选择 job 标签为 mysql 的日志流,并且日志行包含字符串 "error"

  • {name="kafka"} |~ "tsdb-ops.*io:2003":选择 name 标签为 kafka 的日志流,并且日志行匹配正则表达式 "tsdb-ops.*io:2003"

  • {instance=~"kafka-[23]",name="kafka"} != kafka.server:type=ReplicaManager:选择 instance 标签匹配正则表达式 "kafka-[23]" 并且 name 标签为 kafka 的日志流,排除包含 kafka.server:type=ReplicaManager 的行。

3.1.4 支持的操作符

  • |=:日志行包含指定的字符串。

  • !=:日志行不包含指定的字符串。

  • |~:日志行匹配指定的正则表达式。

  • !~:日志行不匹配指定的正则表达式。

3.1.5 支持多个过滤

  • 可以在同一查询中使用多个过滤条件,例如:

    • {job="mysql"} |= "error" != "timeout":选择 job 标签为 mysql 的日志流,日志行包含 "error" 但不包含 "timeout"

4. Loki收集Nginx日志

  • 为了方便grafana dashbord展示,我们把日志格式修改为json

4.1 修改Nginx配置

# 在被监控端上做
[root@node-01~]# vim /etc/nginx/nginx.conf   # 再http模块内添加
http {
...
log_format json escape=json '{'
          '"remote_addr": "$remote_addr", '
          '"request_uri": "$request_uri", '
          '"request_length": "$request_length", '
 		  '"request_time": "$request_time", '
          '"request_method": "$request_method", '
          '"status": "$status", '
          '"body_bytes_sent": "$body_bytes_sent", '
          '"http_referer": "$http_referer", '
          '"http_user_agent": "$http_user_agent", '
          '"http_x_forwarded_for": "$http_x_forwarded_for", '
          '"http_host": "$http_host", '
          '"server_name": "$server_name", '
          '"upstream": "$upstream_addr", '
          '"upstream_response_time": "$upstream_response_time", '
          '"upstream_status": "$upstream_status"'
          # '"geoip_country_code": "$geoip2_data_country_code", '
          # '"geoip_country_name": "$geoip2_data_country_name", '
          # '"geoip_city_name": "$geoip2_data_city_name"'
         '};';
access_log /var/log/nginx/json_access.log json;
}

[root@node-01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@node-01 ~]# systemctl start nginx
  • 访问Nginx

[root@node-01 ~]# tail /var/log/nginx/access.log 
192.168.110.23 - - [15/Jun/2024:19:45:37 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.23 - - [15/Jun/2024:19:45:38 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.23 - - [15/Jun/2024:19:45:38 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:42 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:42 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:44 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:44 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:44 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:45 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
192.168.110.21 - - [15/Jun/2024:19:45:45 +0800] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"

4.2 安装Promtail

4.2.1 安装

[root@node-01 ~]# yum install promtail-2.9.8.x86_64.rpm -y

4.2.2 修改targets

[root@node-01 ~]# vim /etc/promtail/config.yml 
# This minimal config scrape only single log file.
# Primarily used in rpm/deb packaging where promtail service can be started during system init process.
# And too much scraping during init process can overload the complete system.
# https://github.com/grafana/loki/issues/11398

server:
  http_listen_port: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
- url: http://192.168.110.21:3100/loki/api/v1/push    # 指定收集端

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: nginxlogs     # 修改标签
      host: 192.168.110.22
      #NOTE: Need to be modified to scrape any additional logs of the system.
      __path__: /var/log/nginx/*.log     # 采集的日志

4.2.3 授权启动

[root@node-01 ~]# setfacl -m u:promtail:r /var/log/nginx/*.log
[root@node-01 ~]# systemctl restart promtail

image-20240615195155911

4.3 Granafa采集数据

image-20240615200353449

4.4 添加Doshbarod

ID:16101

image-20240615200559256

image-20240615200631165

image-20240615200644312

image-20240615200719362

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

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

相关文章

关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法

1.配置idea的npm 2.点击运行按钮 3.结果 分析原因及问题: npm i npm run dev 由于是刚刚从gitlab新拉的前端代码,可能没有用命令install过类似于没有编译过,所以执行一下上面的命令 结果报错如下: F:\tbyf\qjyy\hip-manager-ui&…

SpringBoot整合MyBatis-Plus完整详细版(提供Gitee源码)

前言:本篇文章完整详细介绍了SpringBoot整合MyBatis-Plus的完整过程,这边我的SpringBoot版本是2.4版本、JDK1.8和Maven3.8.1版本,跟着文章一步步走就可以了,MyBatis-Plus整合非常方便,也是现在企业开发中经常会用的一个…

学习笔记第二十四天

1.exec族函数的区别 int exec l(const char *path, const char *arg, ...); int exec l p(const char *file, const char *arg, ...); int exec l e(const char *path, const char *arg,..., char * const envp[]); int exec v(const char *path, char *const argv[]); …

1011 World Cup Betting

题目 解释 题目讲的就是,给你三行数,每一行包含3个浮点小数,让你找到最大的那个小数,然后如果最后的小数是第一个,输出W,是第二个,输出T,是第三个,输出L,最后…

Day37 | 188.买卖股票的最佳时机IV 309.最佳买卖股票时机含冷冻期 714.买卖股票的最佳时机含手续费

语言 Java 188.买卖股票的最佳时机IV 买卖股票的最佳时机IV 题目 给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多…

Broken: Gallery靶机复现

靶机设置 靶机设置为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机IP为192.168.112.142 目录扫描 dirsearch 192.168.112.142 访问浏览器 发现文件页面 查看后发现都没什么用 getshell hydra -L rockyou.txt -P rockyou.txt 192.168.112.142 ssh 尝试爆破ssh账号密码…

互联网应用主流框架整合【Redis常用技术】

和其他大部分NoSQL不同,Redis是支持事务的,尽管没有数据库那么强大,但非常有用,在某些高并发但又要保证高度一致性的场景下,代替数据库事务非常有效;在Redis的机制中,允许通过流水线一次性发给R…

DATAX自定义KafkaWriter

因为datax目前不支持写入数据到kafka中,因此本文主要介绍如何基于DataX自定义KafkaWriter,用来同步数据到kafka中。本文偏向实战,datax插件开发理论宝典请参考官方文档: https://github.com/alibaba/DataX/blob/master/dataxPlug…

2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第二弹 手搓机械臂

第一弹赛题的选择与前期方案的准备 opencv调用摄像头bug的解决 机械臂的组装 采用三个舵机,组成一个三自由度的机械臂。 并且利用电磁吸盘的方式,完成对棋子的抓取工作,后面的事实证明,在预算不足的情况下,队友手搓…

顺序表的实现——数据结构

线性表 文章目录 线性表线性表的定义和基本操作线性表的定义线性表的基本操作 线性表的顺序表示顺序表的定义顺序表的实现——静态分配顺序表的实现——动态分配顺序表的特点 线性表的定义和基本操作 线性表的定义 线性表(Linear List)的定义 ​ 线性…

多进程多线程

exec 系列函数 结束代码函数 atexec 函数 结束标志,从下往上 先出2再出1 void cleanup1() {printf("clean1"); }void cleanup2() {printf("clean2"); }atexec(cleanup1) atexec(cleanup2)

28. 找出字符串中第一个匹配项的下标【 力扣(LeetCode) 】

一、题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 二、测试用例 示例 1: 输…

Cmake编译工程

Cmake目录结构:项目主目录中会放一个CmakeList.txt的文本文档,后期使用cmake指令时候,依赖的就是该文档 1.包含源文件的子文件夹包含Cmakelist.txt文件时,主目录的Cmakelists.txtx要通过add_subdirector添加子目录 2.包含源文件…

算法3:二分查找(下)

文章目录 寻找峰值寻找旋转数组最小值 寻找峰值 class Solution { public:int findPeakElement(vector<int>& nums) {int left 0, right nums.size() - 1;while(left < right){int mid left (right - left) / 2;if(nums[mid] < nums[mid 1])left mid 1;…

opencv-python图像增强三:图像清晰度增强

文章目录 一、简介&#xff1a;二、图像清晰度增强方案&#xff1a;三、算法实现步骤3.1高反差保留实现3.2. usm锐化3.3 Overlay叠加 四&#xff1a;整体代码实现五&#xff1a;效果 一、简介&#xff1a; 你是否有过这样的烦恼&#xff0c;拍出来的照片总是不够清晰&#xff…

视频汇聚/安防监控综合平台EasyCVR接入海康私有协议EHOME显示失败是什么原因?

安防监控/视频综合管理平台/视频集中存储/磁盘阵列EasyCVR视频汇聚平台&#xff0c;支持多种视频格式和编码方式&#xff08;H.264/H.265&#xff09;&#xff0c;能够轻松对接各类前端监控设备&#xff0c;实现视频流的统一接入与集中管理。安防监控EasyCVR平台支持多种流媒体…

Stable Diffusion【 ControlNet实战】OpenPose 轻松制作武侠动作

前言 hello&#xff0c;大家好** 好了&#xff0c;进入正题。如何通过Stable Diffusion ControlNet来进行姿态控制。来一起来看下老徐的简单示例&#xff1a; 老徐参数设置&#xff1a; **大模型&#xff1a;**墨幽人造人_v1080 所有的AI设计工具&#xff0c;模型和插件&…

25届秋招网络安全面试资料库

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

机器人中的wrench(力旋量)

在机器人领域&#xff0c;wrench&#xff08;力旋量&#xff09;是一个由力和力矩组成的6D空间向量&#xff0c;用于描述刚体在空间中受到的力和力矩的综合作用。具体来说&#xff0c;wrench可以看作是一个包含线性分量和旋转分量的矢量&#xff0c;其中线性分量代表作用在刚体…

时间序列+预训练大模型!最新开源成果性能暴涨42.8%

今天我们来聊一个新兴的、创新空间很大的方向&#xff1a;时间序列预训练大模型。 预训练大模型因为在大规模多领域的数据集上进行训练&#xff0c;能学习到丰富的、跨领域的时间序列表示&#xff0c;在面对新的、没见过的时间序列数据时&#xff0c;它能够表现出更强的泛化性…