深入探究分布式日志系统 Graylog:架构、部署与优化

文章目录

  • 一、Graylog简介
  • 二、Graylog原理架构
  • 三、日志系统对比
  • 四、Graylog部署
    • 传统部署
    • MongoDB部署
    • OS或者ES部署
    • Garylog部署
    • 容器化部署
  • 五、配置详情
  • 六、优化
    • 网络和 REST API
    • MongoDB
  • 七、升级
  • 八、监控
  • 九、常见问题及处理

一、Graylog简介

Graylog是一个简单易用、功能较全面的日志管理工具,Graylog也采用Elasticsearch作为存储和索引以保障性能,MongoDB用来存储少量的自身配置信息,master-node模式具有很好的扩展性,UI上自带的基础查询与分析功能比较实用且高效,支持LDAP、权限控制并有丰富的日志类型和标准(如syslog,GELF)并支持基于日志的报警。
在日志接收方面通常是网络传输,可以是TCP也可以是UDP,在实际生产环境量级较大多数采用UDP,也可以通过MQ来消费日志。

Graylog的优势

  • 部署维护简单
  • 资源占用较少
  • 查询语法简单易懂(对比ES的语法…)
  • 内置简单的告警
  • 可以将搜索结果导出为 json
  • UI 比较友好

二、Graylog原理架构

Graylog 最简单的架构就是单机部署,复杂的也是部署集群模式,架构图示如下所示。我们可以看到其中包含了三个组件,分别是 Elasticsearch、MongoDb 和 Graylog。
其中,Elasticsearch 用来持久化存储和检索日志文件数据(IO 密集),MongoDb 用来存储关于 Graylog 的相关配置信息,而 Graylog 来提供 Web 界面和对外接口(CPU 密集)。

单机版本
在这里插入图片描述
集群版本
在这里插入图片描述
数据处理流程

日志消息通过各种Input输入到Graylog中进行处理;
可以通过Extractors进行正则、Json等形式解析;
通过Streams进行规则匹配分流,对Stream可以配置Pipeline进行数据过滤,最终数据会到到不同的index中;
根据新建index时配置的策略,在elasticsearch的索引中;
告警(Alert)基于Stream进行设置。
在这里插入图片描述
为了让大家能够对graylog有一个完整的认识做了一个思维导图。
可以看出graylog的设计是非常全面的,从日志的采集、数据分类管理、数据清洗、调用第三方API都考虑到了。

组件名称功能介绍主要特点
Dashboards数据面板固定展示主要是用来保存特定搜索条件的数据面板
Search日志信息条件搜索关键字搜索、时间搜索、搜索保存、创建面板、分组查询、结果导出、查询高亮显示、自定义时间
Alerts设置告警提示方式支持邮件告警、HTTP回调和自定义脚本触发
Inputs日志数据抓取接收部署 Sidercar 主动抓取或使用其他服务被动上报
Extractors日志数据格式转换json 解析、k-v 解析、时间戳解析、正则解析
Streams日志信息分类分组设置日志分类条件并发送到不同的索引文件中去
Indices持久化数据存储设置数据存储性能
Outputs日志数据的转发解析的 Stream 发送到其他 Graylog 集群或服务
Pipelines日志数据的过滤建立数据清洗的过滤规则、字段添加删除、条件过滤、自定义函数等
Sidecar轻量级的日志采集器相当于 C/S 模式;大规模时使用
Lookup Tables服务解析基于 IP 的 Whois 查询和基于来源 IP 的情报监控
Geolocation可视化地理位置实现基于来源 IP 的情报监控

在这里插入图片描述

三、日志系统对比

对比ELKGraylog
组件ES+Logstash+KibanaES+GraylogServer+GarylogWeb
优点1、处理方式灵活:elasticsearch是实时全文索引,具有强大的搜索功能
2、配置相对简单:elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。
3、检索性能高效:基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
4、集群线性扩展:elasticsearch和logstash都可以灵活线性扩展
5、前端操作绚丽:kibana的前端设计比较绚丽,而且操作简单
1、一体化方案,安装方便,不像ELK有3个独立系统间的集成问题。
2、采集原始日志,并可以事后再添加字段,比如http_status_code,response_time等等。
3、自己开发采集日志的脚本,并用curl/nc发送到Graylog Server,发送格式是自定义的GELF,Flunted和Logstash都有相应的输出GELF消息的插件。自己开发带来很大的自由度。实际上只需要用inotify_wait监控日志的MODIFY事件,并把日志的新增行用curl/nc发送到Graylog Server就可。
4、搜索结果高亮显示,就像google一样。
5、搜索语法简单,比如: source:mongo AND reponse_time_ms:>5000 ,避免直接输入elasticsearch搜索json语法6、搜索条件可以导出为elasticsearch的搜索json文本,方便直接开发调用elasticsearch rest api的搜索脚本。
缺点1、不能处理多行日志,比如Mysql慢查询,Tomcat/Jetty应用的Java异常打印
2、不能保留原始日志,只能把原始日志分字段保存,这样搜索日志结果是一堆Json格式文本,无法阅读。
3、不复合正则表达式匹配的日志行,被全部丢弃。
1、控制台操作页面是英文的,针对国内开发使用者使用起来不方便,还得额外汉化,汉化可能失败
2、使用网络传输,可能会占用项目网络

总结:
两者之间最重要的区别在于,从一开始,Graylog就定位为强大的日志解决方案,而ELK则是大数据解决方案。Graylog可以通过网络协议直接从应用程序接收结构化日志和标准syslog。相反,ELK是使用Logstash分析已收集的纯文本日志的解决方案,然后解析并将它们传递给ElasticSearch。在ELK中,Kibana扮演仪表盘的角色并显示从Logstash收到的数据。Graylog在这点上更方便,因为它提供了单一应用程序解决方案(不包括ElasticSearch作为灵活的数据存储),具有几乎相同的功能。因此,部署所需的时间更短。此外,与ELK相比,Graylog开箱即用,且具有出色的权限系统,而Kibana则不具备此功能,Graylog具有直观的GUI,并提供警报、报告和自定义分析功能。最重要的是,它能在多个日志源和跨机房收集数TB的数据。

四、Graylog部署

各组件文件系统默认路径:
在这里插入图片描述

传统部署

Graylog 5.0 需要以下内容来保持与其软件依赖项的兼容性:
OpenJDK 17(嵌入在5.0安装文件中)
Elasticsearch 7.10.2或OpenSearch 2.x
MongoDB(5.x 或 6.x)

MongoDB部署

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-5.0.14.tgztar -xf mongodb-linux-x86_64-rhel70-5.0.14.tgz 
mv mongodb-linux-x86_64-rhel70-5.0.14 /usr/local/mongodb
mkdir -p single/logs
mkdir -p single/data/db
vim /etc/profile (添加)
export MONGODB_HOME=/usr/local/mongodb
export PATH=$MONGODB_HOME/bin:$PATH
​
source /etc/profile
​
vi /etc/mongodb.conf
#指定数据库路径
dbpath=/root/graylog/single/data
#指定MongoDB日志文件
logpath=/root/graylog/single/logs/mongodb.log
# 使用追加的方式写日志
logappend=true
#端口号
port=27017 
#方便外网访问
bind_ip=0.0.0.0
fork=true # 以守护进程的方式运行MongoDB,创建服务器进程
#auth=true #启用用户验证
#bind_ip=0.0.0.0 #绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定则默认本地所有IPmongod  -f /etc/mongodb.conf #启动mongodb

OS或者ES部署

rpm --import https://artifacts.opensearch.org/publickeys/opensearch.pgp 
#安装OS GPG密钥
wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.4.1/opensearch-2.4.1-linux-x64.tar.gz
tar -xf opensearch-2.4.1-linux-x64.tar.gz
chown -R os:os opensearch-2.4.1/
cd opensearch-2.4.1/
su os (和es一样,root启动会报错)
./opensearch-tar-install.sh 
​rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch  
#安装 ES GPG 密钥
vim  /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.10.2]
name=Elasticsearch repository for 7.10.2 packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-mdyum install elasticsearch-oss
sudo tee -a /etc/elasticsearch/elasticsearch.yml > /dev/null <<EOT
cluster.name: graylog
action.auto_create_index: false
EOT
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl restart elasticsearch.service
sudo systemctl --type=service --state=active
grep elasticsearch

Garylog部署

rpm -Uvh https://packages.graylog2.org/repo/packages/graylog-5.0-repository_latest.rpm
yum install graylog-server
阅读配置文件中的说明并根据需要进行编辑,位于/etc/graylog/server/server.conf. 另外添加password_secret和root_password_sha2因为这些是强制性的,没有它们 Graylog 将无法启动。
​
要创建您的root_password_sha2运行以下命令:
echo -n "Enter Password: " && head -1 </dev/stdin | tr -d '\n' | sha256sum | cut -d" " -f1
为了能够连接到 Graylog,您应该设置http_bind_address您可以连接到的机器的公共主机名或公共 IP 地址。
​
sudo systemctl daemon-reload
sudo systemctl enable graylog-server.service
sudo systemctl start graylog-server.service
sudo systemctl --type=service --state=active | grep graylog
​

在这里插入图片描述

容器化部署

docker-compose.yaml

version: '2'
services:# MongoDB: https://hub.docker.com/_/mongo/mongodb:container_name: mongoimage: mongo:5volumes:- mongo_data:/data/db# Elasticsearch: https://www.elastic.co/guide/en/elasticsearch/reference/6.x/docker.htmlelasticsearch:container_name: esimage: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2volumes:- es_data:/usr/share/elasticsearch/dataenvironment:- TZ=Asia/Shanghai- http.host=0.0.0.0- transport.host=localhost- network.host=0.0.0.0- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"ulimits:memlock:soft: -1hard: -1mem_limit: 4g# Graylog: https://hub.docker.com/r/graylog/graylog/graylog:container_name: graylogimage: graylog/graylog:environment:- http_bind_address = 0.0.0.0:9000  # CHANGE ME (must be at least 16 characters)!- GRAYLOG_PASSWORD_SECRET=somepasswordpepper- GRAYLOG_ROOT_USERNAME=admin# Password: admin- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918- GRAYLOG_HTTP_EXTERNAL_URI=http://192.168.3.83:9000/ #这里配置公网访问地址,可注释.- TZ=Asia/Shanghailinks:- mongodb:mongo- elasticsearchdepends_on:- mongodb- elasticsearchports:# Graylog web interface and REST API- 9000:9000# Syslog TCP- 1514:1514# Syslog UDP- 1514:1514/udp# GELF TCP- 12201:12201# GELF UDP- 12201-12205:12201-12205/udp
# Volumes for persisting data, see https://docs.docker.com/engine/admin/volumes/volumes/
volumes:mongo_data:driver: locales_data:driver: localgraylog_journal:driver: local

docker-compose up #启动 graylog 服务
docker-compose down #停止服务并删除容器
graylog 启动后,可以通过ip端口访问 ,如:http://192.168.11.127:9000
至此 graylog 环境以及搭建完毕!!
在这里插入图片描述

五、配置详情

• is_master = true
o 如果您正在运行多个Graylog服务器实例,则只需选择一个graylog-server节点作为主节点。该节点将执行从属节点不会执行的定期和维护操作。
o 每个从属节点都将像主节点一样接受消息。如果集群中已存在主节点,则节点将退回到从属模式。
• node_id_file = /etc/graylog/server/
o 自动生成的节点ID将存储在此文件中,并在重新启动后读取。如果要从初始化脚本或类似脚本启动Graylog服务器,则在此处使用绝对文件路径是个好主意。
• password_secret =
o 您必须设置一个用于密码加密和加密的秘密。如果未设置,服务器将拒绝启动。至少使用64个字符。如果您运行多个graylog-server节点,请确保password_secret对所有节点都使用相同的节点!
注意
例如产生秘密 pwgen -N 1 -s 96
• root_username = admin
o 默认的root用户名为admin。
• root_password_sha2 =
o 您将用于首次登录的密码的SHA2哈希。将此设置为生成的SHA2哈希,您将能够使用用户名admin和密码yourpassword登录Web界面。echo -n “Enter Password: " && head -1 </dev/stdin | tr -d ‘\n’ | sha256sum | cut -d” " -f1
警告
您必须为根用户指定一个哈希密码(您只需要在初始设置系统时使用,以防丢失与身份验证后端的连接)。不能使用API或通过Web界面更改此密码。如果需要更改,请在此文件中对其进行修改。
• root_email = “”
o 根用户的电子邮件地址。默认为空。
• root_timezone = UTC
o root用户的时区设置。请参阅此有效时区列表。默认为UTC。
• bin_dir = bin
o 该目录包含Graylog服务器使用的二进制文件。(相对或绝对)
• data_dir = data
o 该目录用于存储Graylog服务器状态。(相对或绝对)
• plugin_dir = plugin
o 在此处设置插件目录(相对或绝对)
Web和REST API
• http_bind_address = 127.0.0.1:9000
o Graylog HTTP接口使用的网络接口。
o 群集中的所有Graylog节点以及使用Graylog Web界面的所有客户端都必须可以访问此网络界面。
o 如果省略端口,默认情况下,Graylog将使用端口9000。
• http_publish_uri = http://
httpb​inda​ddress/o此Graylog节点的HTTPURI,用于与该群集中的其他Graylog节点以及所有使用GraylogWeb界面的客户端进行通信。oURI将在集群发现API中发布,以便其他Graylog节点将能够找到并连接到该Graylog节点。o如果此Graylog节点在 http_bind_address以外的其他网络接口上可用,则必须使用此配置设置,例如,如果计算机具有多个网络接口或在NAT网关后面
o 此配置设置不得配置为通配符地址!
o 如果http_bind_address包含通配符IPv4地址(0.0.0.0),http_publish_uri则将使用此计算机的第一个非环回IPv4地址填充。
• http_external_uri = 
httpp​ublishu​rioGraylogWeb界面将使用Graylog的公共URI与GraylogRESTAPI进行通信。o如果Graylog在反向代理或负载均衡器后面运行,则通常必须指定外部GraylogURI,并且它将用于生成在GraylogRESTAPI中寻址实体的URL(请参阅http_bind_address)
o 使用Graylog收集器时,此URI将用于接收心跳消息,并且所有收集器都必须可以访问该URI。
o 可以根据每个请求使用“ X-Graylog-Server-URL” HTTP请求标头覆盖此设置。
• http_enable_cors = true
o 为HTTP接口启用CORS标头。
o 这对于JS客户端直接访问服务器是必需的。
o 如果禁用了这些功能,现代浏览器将无法从服务器检索资源。
• http_enable_gzip = true
o 这样可以压缩API响应,因此有助于减少总体往返时间。
• http_max_header_size = 8192
o HTTP请求标头的最大大小(以字节为单位)。
• http_thread_pool_size = 16
o 专用于服务HTTP接口的线程池的大小。
• http_enable_tls = false
o 这样可以确保与具有TLS的HTTP接口的通信安全,以防止伪造和窃听请求。
• http_tls_cert_file = /path/to/graylog.crt
o PEM格式的X.509证书链文件,用于保护HTTP接口。
• http_tls_key_file = /path/to/graylog.key
o PEM格式的PKCS#8私钥文件,用于保护HTTP接口。
• http_tls_key_password = secret
o 用于解锁用于保护HTTP接口的私钥的密码。(如果密钥已加密)
• trusted_proxies = 127.0.0.1/32, 0:0:0:0:0:0:0:1/128
o 逗号分隔的受信任代理列表,允许使用X-Forwarded-For标头设置客户端地址。可能是子网,也可能是主机。
弹性搜索
• elasticsearch_hosts = http://node1:9200,http://user:password@node2:19200
o Elasticsearch主机Graylog应该连接的列表。
o 需要指定为Elasticsearch节点的http端口的有效URI的逗号分隔列表。
o 如果您的一个或多个Elasticsearch主机需要身份验证,请在每个需要身份验证的节点URI中包括凭据。
o 默认: http://127.0.0.1:9200
• elasticsearch_connect_timeout = 10s
o 等待成功连接到Elasticsearch HTTP端口的最长时间。
o 默认值:10秒
• elasticsearch_socket_timeout = 60s
o 等待从Elasticsearch服务器读回响应的最长时间。
o 默认值:60秒
• elasticsearch_idle_timeout = -1s
o Elasticsearch连接的最大空闲时间。如果超出此范围,则该连接将被断开。
o 默认值:无穷大
• elasticsearch_max_total_connections = 200
o 到Elasticsearch的最大总连接数。
o 默认值:200
• elasticsearch_max_total_connections_per_route = 20
o 每个Elasticsearch路由的最大总连接数(通常意味着每个Elasticsearch服务器)。
o 默认值:20
• elasticsearch_max_retries = 2
o Graylog将重试失败的请求到Elasticsearch的最大次数。
o 默认值:2
• elasticsearch_discovery_enabled = false
o 通过节点信息启用自动Elasticsearch节点发现,请参阅Elasticsearch参考»集群API»节点信息。
o 默认: false
警告
如果Elasticsearch需要使用Shield进行身份验证,则自动节点发现将不起作用。
警告
在AWS Elasticsearch Clusters(托管的)上,此设置必须为false,并且应谨慎使用。万一与ES的连接出现问题,这应该是第一个禁用的选项。有关更多详细信息,请参见自动节点发现。
• elasticsearch_discovery_filter = rack:42
o 根据其自定义属性过滤发现中是否包含Elasticsearch节点,请参阅《Elastic Search参考手册》»《集群API》»《节点规范》。
o 默认值:空
• elasticsearch_discovery_frequency = 30s
o Elasticsearch节点发现的频率。
o 默认值:30秒
• elasticsearch_discovery_default_scheme = http
o 连接到Elasticsearch发现的节点时,设置默认方案。(可用选项:http,https)
o 默认值:http
• elasticsearch_compression_enabled = false
o 为Elasticsearch请求启用有效负载压缩。
o 默认值:false
• elasticsearch_use_expect_continue = true
o 为Elasticsearch索引请求启用“期望:100个连续”标头。如果禁用此选项,则Graylog无法正确处理HTTP 413请求实体太大错误。
o 默认值:true
回转
注意
以下设置标识为!本节中的内容已移至Graylog 2.0中的数据库。升级时,请确保将它们设置为以前的1.x设置,以便将它们迁移到数据库!
• rotation_strategy = count !
o Graylog将使用多个索引来存储文档。您可以配置该策略来确定何时旋转当前活动的写索引。
o 它支持多种轮换策略:-count每个索引使用的消息elasticsearch_max_docs_per_index -size每个索引使用elasticsearch_max_size_per_index
o 有效值count,size并且time,默认为count。
• elasticsearch_max_docs_per_index = 20000000 !
o 在创建新索引之前,Elasticsearch索引中的(大约)最大文档数,另请参见no_retention和elasticsearch_max_number_of_indices。
o 如果您在上面使用过,请进行配置。rotation_strategy = count
• elasticsearch_max_size_per_index = 1073741824 !
o 在创建新索引之前,磁盘上每个Elasticsearch索引的(大约)最大大小(以字节为单位),另请参见no_retention和elasticsearch_max_number_of_indices。默认值为1GB。
o 如果您在上面使用过,请进行配置。rotation_strategy = size
• elasticsearch_max_time_per_index = 1d !
o (大约)在创建新的Elasticsearch索引之前的最长时间,另请参阅no_retention和elasticsearch_max_number_of_indices。默认值为1天。
o 如果您在上面使用过,请进行配置。rotation_strategy = time
o 请注意,该轮换周期不考虑接收到的消息中指定的时间,而是使用实际时钟值来决定何时轮换索引!
o 使用持续时间和后缀指定所需的时间,以指定时间:
 1w = 1周
 1d = 1天
 12h = 12小时
o 允许的后缀为:d天,h小时,m分钟,s秒。
• elasticsearch_max_number_of_indices = 20 !
o 您要保留多少个索引?
• retention_strategy = delete !
o 确定在达到最大索引数时最旧的索引会发生什么。
o 可以使用以下策略:
 delete -完全删除索引(默认)
 close-关闭索引并将其从系统隐藏。以后可以重新打开。
​
• elasticsearch_disable_version_check = true
o 禁用检查Elasticsearch版本是否与此Graylog版本兼容。
警告
在不受支持和未经测试的Elasticsearch版本中使用Graylog可能会导致数据丢失!
• no_retention = false
o 在该节点上禁用消息保留,即禁用Elasticsearch索引轮换。
​
注意
以下设置用!! 已被移至Graylog 2.2.0中的数据库。升级时,请确保将它们设置为以前的设置,以便将它们迁移到数据库。此设置在第一次启动时被读取一次,成为数据库中的初始设置。
• elasticsearch_shards = 4 !!
o 索引的分片数。一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。如果您有一个节点,请将其设置为1。
• elasticsearch_replicas = 0 !!
o 索引的副本数。一个好的设置在很大程度上取决于您的Elasticsearch集群中的节点数量。如果您有一个节点,请将其设置为0。
注意
elasticsearch_shards并且elasticsearch_replicas仅适用于新创建的索引。
• elasticsearch_index_prefix = graylog !!
o 由Graylog管理的所有Elasticsearch索引和索引别名的前缀。
• elasticsearch_template_name = graylog-internal !!
o Graylog用于应用强制索引映射的Elasticsearch索引模板的名称。
o 默认值:graylog-internal
• elasticsearch_analyzer = standard !!
o 分析器(令牌器),用于消息和full_message字段。通常,“标准”过滤器是一个好主意。
o 所有受支持的分析器为:标准,简单,空白,停止,关键字,模式,语言,雪球,自定义
o Elasticsearch文档:https : //www.elastic.co/guide/zh-CN/elasticsearch/reference/5.6/analysis.html
o 请注意,此设置仅对新创建的索引有效。
• disable_index_optimization = false !!
o 禁用索引循环后优化Elasticsearch索引。在使用大索引的频繁使用的系统上,这可能会给Elasticsearch带来一些负担,但会降低搜索性能。默认设置是优化循环索引。
• index_optimization_max_num_segments = 1 !!
o 将索引优化到<= index_optimization_max_num_segments。在具有大量索引的频繁使用的系统上,更高的数量可能会从Elasticsearch承受一些负担,但会降低搜索性能。预设值为1。
​
• allow_leading_wildcard_searches = false
o 是否要允许使用前导通配符进行搜索?这可能会非常耗费资源,因此应谨慎启用。
o 另请参阅:搜索
• allow_highlighting = false
o 是否要突出显示搜索?根据消息的大小,这可能会占用大量内存,只有在确保您的Elasticsearch群集具有足够的内存后才能启用它。
• elasticsearch_request_timeout = 1m
o 基于尽力限制Elasticsearch操作的运行时间,Elasticsearch请求的全局请求超时(例如,在搜索,索引创建或索引时间范围计算期间)。
o 默认值:1m
• elasticsearch_index_optimization_timeout = 1h
o 索引优化(强制合并)请求的全局超时。
o 默认值:1h
• elasticsearch_index_optimization_jobs = 20
o 同时运行的索引优化(强制合并)作业的最大数量。
o 如果使用大量不同的索引集,则可能需要增加该数目。
o 默认值:20
• index_ranges_cleanup_interval = 1h
o 索引范围信息清除的时间间隔。此设置定义从数据库中清除过时的索引范围信息的频率。
o 默认值:1h
• output_batch_size = 500
o Elasticsearch输出的批次大小。这是Elasticsearch输出模块将立即获得并以批处理调用方式写入Elasticsearch的最大消息数(!)。如果output_flush_interval几秒钟内未达到配置的批处理大小,则将立即刷新所有可用的内容。请记住,每个输出缓冲区处理器都管理自己的批处理并执行自己的批写调用。(outputbuffer_processors变量)
• output_flush_interval = 1
o Elasticsearch输出的刷新间隔(以秒为单位)。这是两批写入Elasticsearch的消息之间的最长时间。仅在此时间段内您的最小消息数小于时才有效。output_batch_size * outputbuffer_processors
• output_fault_count_threshold = 5
• output_fault_penalty_seconds = 30
o 由于仅按需加载流输出,因此将一遍又一遍尝试未初始化的输出。为避免这种情况,以下配置选项定义了在有多少个故障之后,在可配置的秒数内不会再次尝试输出。
• processbuffer_processors = 5
• outputbuffer_processors = 3
o 并行运行的处理器数。
o 如果缓冲区已满,请增加此数字。
• outputbuffer_processor_keep_alive_time = 5000
• outputbuffer_processor_threads_core_pool_size = 3
• outputbuffer_processor_threads_max_pool_size = 30
• udp_recvbuffer_sizes = 1048576
o 所有消息输入(例如SyslogUDPInput)的UDP接收缓冲区大小。
• processor_wait_strategy = blocking
o 等待策略,描述缓冲区处理器如何在游标序列上等待。(默认:睡眠)
o 可能的类型:
 yielding -降低性能和CPU使用率。
 sleeping-降低性能和CPU使用率。安静时段后可能会发生延迟峰值。
 blocking -高吞吐量,低延迟,更高的CPU使用率。
 busy_spinning-避免可能引起延迟抖动的系统调用。线程可以绑定到特定的CPU内核时最好。
• ring_size = 65536
o 内部环形缓冲区的大小。如果加注outputbuffer_processors不再有用,请加注。
o 为了获得最佳性能,环形缓冲区中的LogMessage对象应适合您的CPU L3高速缓存。
o 必须是2的幂。(512、1024、2048等)
• inputbuffer_ring_size = 65536
• inputbuffer_processors = 2
• inputbuffer_wait_strategy = blocking
• message_journal_enabled = true
o 启用基于磁盘的消息日志。
• message_journal_dir = data/journal
o 用于存储消息日志的目录。该目录必须由Graylog独占使用,并且不得包含除Graylog本身创建的文件以外的任何其他文件。
注意
如果为日记文件创建单独的分区,并使用文件系统在根目录中创建“ lost + found”之类的目录,则需要为日记创建子目录。否则,Graylog将记录一条错误消息,指出日志已损坏,并且Graylog无法启动。
• message_journal_max_age = 12h
• message_journal_max_size = 5gb
o 日志保留消息,然后才能将其写入Elasticsearch。
o 最长12小时或5 GB,以先到者为准。
o 在正常操作期间,轴颈将较小。
• message_journal_flush_age = 1m
o 此设置允许指定一个时间间隔,在该时间间隔我们将强制对日志数据进行fsync。例如,如果将其设置为1000,则在经过1000 ms之后将进行fsync。
• message_journal_flush_interval = 1000000
o 此设置允许指定一个时间间隔,在该时间间隔我们将强制对日志数据进行fsync。例如,如果将其设置为1,我们将在每条消息之后进行fsync;如果是5,则每隔5条消息就会进行fsync。
• message_journal_segment_age = 1h
o 此配置控制时间段,在这段时间后,即使段文件未满,Graylog也会强制日志滚动,以确保保留可以删除或压缩旧数据。
• message_journal_segment_size = 100mb
注意
当日志已满并且继续接收消息时,它将开始以FIFO队列的形式丢弃消息:第一个丢弃的消息将是第一个插入的消息,依此类推(以此类推)。
• async_eventbus_processors = 2
o 专用于调度内部事件的线程数。默认值为2。
• lb_recognition_period_seconds = 3
o 在将节点标记为DEAD以获得可能的负载平衡器与开始实际的关闭过程之间需要等待多少秒。如果前面没有状态检查负载均衡器,则设置为0。
• lb_throttle_threshold_percentage = 95
o 日志使用百分比,该百分比触发从负载均衡器请求对此服务器节点进行节流的操作。如果未设置,则该功能被禁用。
• stream_processing_timeout = 2000
• stream_processing_max_faults = 3
o 每个消息都与已配置的流匹配,并且可能发生的情况是,流包含的规则花费的运行时间非常少,例如,如果流中使用的规则表达式执行了过多的回溯操作。
o 这将影响整个服务器的处理。为了防止此类行为异常的流规则影响其他流,Graylog限制了每个流的执行时间。
o 默认值如下所示,超时以毫秒为单位。
o 如果与一个流匹配的流花费的时间超过了超时值,并且发生的时间超过了禁用该流的“ max_faults”次,并且在Web界面中显示了一条通知。
注意
从0.21开始,Graylog服务器支持可插拔输出模块。这意味着可以将一条消息写入多个输出。下一个设置定义单个输出模块的超时,包括所有消息最终到达的默认输出模块。
• output_module_timeout = 10000
o 等待所有消息输出完成编写单个消息的时间(以毫秒为单位)。
• stale_master_timeout = 2000
o 以毫秒为单位的时间,在此时间之后将在启动时重新检查检测到的陈旧主节点。
• shutdown_timeout = 30000
o Graylog等待所有线程在关闭时停止的时间(以毫秒为单位)。
MongoDB
• mongodb_uri = mongodb://…
o MongoDB连接字符串。在此处输入您的MongoDB连接和身份验证信息。
o 有关详细信息,请参见https://docs.mongodb.com/manual/reference/connection-string/。
o 请注意,+用户名或密码中的-signs必须替换为%2B。
o 例子:
 简单: mongodb://localhost/graylog
 针对MongoDB服务器进行身份验证: mongodb_uri = mongodb://grayloguser:secret@localhost:27017/graylog
 使用副本集而不是单个主机: mongodb://grayloguser:secret@localhost:27017,localhost:27018,localhost:27019/graylog?replicaSet=rs01
 DNS种子列表设置为mongodb+srv://server.example.org/graylog。
• mongodb_max_connections = 1000
o 如果遇到MongoDB连接问题,请根据您的MongoDB服务器可以从单个客户端处理的最大连接数来增加此值。
• mongodb_threads_allowed_to_block_multiplier = 5
o MongoDB连接乘数允许阻止的线程数。默认值:5
o 如果mongodb_max_connections为100,mongodb_threads_allowed_to_block_multiplier则为5,则可能会阻塞500个线程。除此之外,还会引发异常。
o http://api.mongodb.com/java/current/com/mongodb/MongoOptions.html#threadsAllowedToBlockForConnectionMultiplier
电子邮件
• transport_email_enabled = false
• transport_email_hostname = mail.example.com
• transport_email_port = 587
• transport_email_use_auth = true
• transport_email_use_tls = true
o 使用STARTTLS启用SMTP以进行加密连接。
• transport_email_use_ssl = false
o 为加密连接启用SSL上的SMTP(SMTPS)。
注意
确保仅启用这两个设置之一,因为大多数(或所有)SMTP服务仅在同一端口上支持一种加密机制。大多数SMTP服务都支持具有STARTTLS的SMTP,而大多数SMTP服务都已弃用SMTPS。false当您想通过未加密的连接发送时,需要将两者都设置为。
• transport_email_auth_username = you@example.com
• transport_email_auth_password = secret
• transport_email_subject_prefix = [graylog]
• transport_email_from_email = graylog@example.com
• transport_email_web_interface_url = https://graylog.example.com
o 指定此选项可在流警报邮件中包含流的链接。
o 这应该将完全限定的基本URL定义为您的Web界面,与用户访问该URL的方式完全相同。
HTTP
• http_connect_timeout = 5s
o 传出HTTP连接的默认连接超时。
o 值必须为正值(在转换为毫秒时,介于1和2147483647之间)。
o 默认值:5s
• http_read_timeout = 10s
o 传出HTTP连接的默认读取超时。
o 值必须为正值(在转换为毫秒时,介于1和2147483647之间)。
o 默认值:10秒
• http_write_timeout = 10s
o 传出HTTP连接的默认写超时。
o 值必须为正值(在转换为毫秒时,介于1和2147483647之间)。
o 默认值:10秒
• http_proxy_uri =
o 传出HTTP连接的HTTP代理
注意
如果您配置代理,请确保还配置“ http_non_proxy_hosts”选项,以便与其他节点的内部HTTP连接不会通过代理。
• http_non_proxy_hosts =
o 绕过配置的代理服务器应直接访问的主机列表。
o 这是用“,”分隔的模式列表。模式可以以通配符“ *”开头或结尾。
o 匹配这些模式之一的任何主机都将通过直接连接而不是通过代理访问。
处理状态
注意
通常不需要调整处理状态的设置。
• processing_status_persist_interval = 1s
o 服务器正在定期将处理状态信息写入数据库。此设置控制将数据写入数据库的频率。
o 值必须为正值,并且不能小于一秒。
o 默认值:1秒(一秒)
• processing_status_update_threshold = 1m
o 配置检测过时的处理状态记录的阈值。在配置的阈值中尚未更新的所有记录都将被忽略。
o 值必须为正值,并且不能小于一秒。
o 默认值:1m(一分钟)
• processing_status_journal_write_rate_threshold= 1
o 配置日志写速率阈值以选择处理状态记录。一分钟速率低于配置值的任何记录都将被忽略。(取决于日记中的邮件数量)
o 值必须为正值。
o 默认值:1
脚本警报通知
• integrations_web_interface_uri = https://graylog.example.com
o 指定此选项可在脚本参数或JSON中的标准中包括搜索页面链接(显示相关警报消息)。
o 这应该将完全限定的基本URL定义为您的Web界面,与用户访问该URL的方式完全相同。
o 默认值:无
• integrations_scripts_dir = /usr/share/graylog-server/scripts
o 允许从中执行脚本的绝对或相对路径。
o 如果指定,它将覆盖默认位置(请参见“文件位置”文档。
其他
• gc_warning_threshold = 1s
o 垃圾收集的阈值运行。如果GC的运行时间超过此阈值,则会生成系统通知,以警告管理员系统可能存在的问题。默认值为1秒。
• ldap_connection_timeout = 2000
o 已配置的LDAP服务器(例如ActiveDirectory)的连接超时(以毫秒为单位)。
• disable_sigar = false
o 禁止使用SIGAR收集系统统计信息。
• dashboard_widget_default_cache_time = 10s
o 仪表板小部件的默认缓存时间。(默认:10秒,最小:1秒)
• proxied_requests_thread_pool_size = 32
o 对于某些与群集相关的REST请求,该节点必须查询群集中的所有其他节点。这是可用于此目的的最大线程数。如果/cluster/*请求需要很长时间才能完成,请增加它。
o 应该是,如果你有一个高并发用户数。http_thread_pool_size * average_cluster_size
• default_events_index_prefix = gl-events
o Graylog事件的默认索引前缀。
• default_system_events_index_prefix = gl-system-events
o Graylog系统事件的默认索引前缀。
• enabled_tls_protocols = TLSv1.2,TLSv1.3
o 配置系统范围内启用的TLS协议。仅在需要支持旧系统时才进行配置。我们将维持安全的默认设置。(当前为TLS 1.2和TLS 1.3)。(注意:Web界面不支持JDK 8的TLS 1.3)
• content_packs_loader_enabled = false
o 在Graylog的第一次启动时自动将内容包加载到“ content_packs_dir”中。
• content_packs_dir = data/contentpacks
o 该目录包含应在Graylog的第一个开始处加载的内容包。
• content_packs_auto_install
o 以逗号分隔的内容包列表(“ content_packs_dir”中的文件),应在Graylog的第一个开始处应用。
o 默认值:无

六、优化

网络和 REST API

  • http_enable_gzip = true
    这会压缩 API 响应,因此有助于减少整体往返时间。
  • http_max_header_size = 8192
    HTTP 请求标头的最大大小(以字节为单位)。
  • http_thread_pool_size = 16
    专门用于为 HTTP 接口提供服务的线程池的大小。
  • http_enable_tls = false
    这通过 TLS 保护与 HTTP 接口的通信,以防止请求伪造和窃听。
    Elasticsearch
  • elasticsearch_connect_timeout = 10s
    等待成功连接到 Elasticsearch HTTP 端口的最长时间。
    默认值:10 秒
  • elasticsearch_socket_timeout = 60s
    等待从 Elasticsearch 服务器读回响应的最长时间。
    默认值:60 秒
  • elasticsearch_idle_timeout = -1s
    Elasticsearch 连接的最长空闲时间。如果超过这个值,这个连接将被断开。
    默认值:无穷大
  • elasticsearch_max_total_connections = 200
    Elasticsearch 的最大总连接数。
    默认值:200
  • elasticsearch_max_total_connections_per_route = 20
    每个 Elasticsearch 路由的最大总连接数(通常是指每个 Elasticsearch 服务器)。
    默认值:20
  • elasticsearch_max_retries = 2
    Graylog 将向 Elasticsearch 重试失败请求的最大次数。
    默认值:2
    Rotation
  • rotation_strategy = count !
    Graylog 将使用多个索引来存储文档。您可以配置它使用的策略来确定何时轮换当前活动的写入索引。

它支持多种轮换策略:-count 每个索引的消息,使用elasticsearch_max_docs_per_index - size 每个索引,使用elasticsearch_max_size_per_index
有效值为count, size, 和 time; 默认是count。

  • elasticsearch_max_docs_per_index = 20000000 !
    在创建新索引之前,Elasticsearch 索引中的(近似)最大文档数;另见 no_retention 和 elasticsearch_max_number_of_indices.
    如果您在rotation_strategy = count 上面使用过,请配置它。
  • elasticsearch_max_size_per_index = 1073741824 !
    在创建新索引之前,磁盘上每个 Elasticsearch 索引的(近似)最大大小(以字节为单位);另见no_retention 和elasticsearch_max_number_of_indices。默认为 1GB。
    如果您在rotation_strategy = size 上面使用过,请配置它。
  • elasticsearch_max_time_per_index = 1d !
    创建新 Elasticsearch 索引之前的(近似)最长时间;另见 no_retention 和elasticsearch_max_number_of_indices。默认为 1 天。
    如果您在rotation_strategy = time 上面使用过,请配置它。

请注意,这个轮转周期并不看收到的消息中指定的时间,而是使用真实的时钟值来决定何时轮转索引!
使用持续时间和表示所需单位的后缀指定时间:

  • 1w = 1 周
  • 1d = 1 天
  • 12h = 12 小时
    允许的后缀是:d 天、 h 小时、m 分钟、 s 秒。
  • elasticsearch_max_number_of_indices = 20 !
    你想保留多少索引?

MongoDB

  • mongodb_max_connections = 1000
    如果您遇到 MongoDB 连接问题,请根据您的 MongoDB 服务器可以从单个客户端处理的最大连接数增加此值。
  • mongodb_threads_allowed_to_block_multiplier = 5
    MongoDB 连接乘数允许阻塞的线程数。默认值:5
    如果mongodb_max_connections 是100,并且mongodb_threads_allowed_to_block_multiplier 是5,那么500个线程可以阻塞。不止于此,将抛出异常。

七、升级

升级 Graylog 时不要跳过主要版本。例如,要从 4.0.x 升级到 4.3.x,您必须先升级到最新的次要版本 4.0.x、4.1.x 和 4.2.x,然后再升级到 4.3.x。

server.conf在重新启动 Graylog 服务器之前,您可能还需要对 Graylog 配置文件执行手动编辑。

确保在升级 Graylog 堆栈的任何组件之前备份 MongoDB 和 Elasticsearch/OpenSearch 数据库状态以创建回滚选项。

在准备升级 Graylog 时,您必须首先满足任何软件先决条件。MongoDB 和 Elasticsearch/OpenSearch 必须至少运行您希望升级到的 Graylog 版本所需的最低要求版本。
请参考下表确定您的版本兼容性要求:
在这里插入图片描述

八、监控

使用zabbix 监控graylog,在zabbix官方网站上有graylog的监控模板,
地址:https://share.zabbix.com/templates/applications-monitoring-system-template-graylog-node-monitoring-using-zabbix/
在这里插入图片描述
监控包获取
github地址为https://github.com/bezarsnba/zabbix-graylog-monitoring
Python版本只少是大于等于python3.4版本

配置zabbix-agent

配置python

下载monitoring-graylog.py文件并将其复制到服务器上的新建的scripts文件夹:

更改monitoring-graylog.py文件中的变量,分别在15,16,23行,修改自己graylog的配置
在这里插入图片描述
通过传递lldgraylognode参数运行脚本

显示结果 :说明配置成功

在这里插入图片描述
下载user_parameter_graylog.conf并复制到/etc/zabbix/zabboix_agentd.d/下
然后编辑文件,将/usr/bin/python3.4替换为/usr/bin/python3
在这里插入图片描述
在这里插入图片描述
zabbix服务器上导入模板
在这里插入图片描述
根据实际情况,选择版本模板导入,模板上没有图形,但是有很多自动发现的监控项,自己绘制图形即可
在这里插入图片描述
然后再最新数据中,确认获取到最新数据数值,表明监控生效

在这里插入图片描述

九、常见问题及处理

1、graylog启动但是未监听到9000端口
查看日志:ERROR [VersionProbe] Unable to retrieve version from Elasticsearch node: Failed to connect to localhost/[0:0:0:0:0:0:0:1]:9200. - Connection refused.

ES服务状态查询
配置文件es配置排查

2、Graylog日志查询超过10000限制问题
在使用graylog时,默认分页查询存在限制,真实使用不能满足,需要我们手动处理。当查询超过执行长度时,会出现一下错误提示

While retrieving data for this widget, the following error(s) occurred:
Unable to perform search query: Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [10000] but was [3382050]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.].
📙Elasticsearch检索问题
📐Elasticsearch的max_result_window限制
问题描述
查询超过10000页,Elasticsearch出现异常

Elasticsearch exception [type=illegal_argument_exception, reason=Result window is too large, from + size must be less than or equal to: [10000] but was [7135950]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.].

解决方案
方案一:修改配置文件,重启Elasticsearch服务【Elasticsearch5.x版本以后不支持】
修改Elasticsearch 集群中的 配置文件 config/elasticsearch.yml
在配置文件最后增加一行,如下:

index.max_result_window: 1000000

方案二:通过接口修改具体的index
具体操作命令,如下(比如,设置可查询 1000000 条数据,其中 alarm 是index名称):
推荐使用全局修改方式。

# 修改个别索引
PUT alarm/_settings
{ "max_result_window" : 1000000
} 
# 修改全局 100W
PUT _settings
{"index": {"max_result_window": "1000000"}
}  
Curl方式
curl -H "Content-Type: application/json" -XPUT http://127.0.0.1:9200/_all/_settings -d '{ "index" : { "max_result_window" : 1000000}}'

3、Deflector exists as an index and is not an alias
官方的步骤
-停止所有Graylog节点
-(可选)如果您想保留已摄取的消息,请通过Elasticsearch reindex API将其重新索引到具有最大数量的Elasticsearch索引中,例如,如果您想修复偏转器graylog_deflector,请使用graylog_23。
-通过Elasticsearch Delete index API删除graylog_deflector索引。
-将action.auto_create_index:false添加到集群中所有Elasticsearch节点的配置文件中,并重新启动这些Elasticearch节点,有关详细信息,请参阅Elasticsearch索引API-自动创建索引和创建索引。
-启动Graylog主节点。
-手动旋转维护下拉菜单中系统/索引/索引集页面上索引集的活动写入索引。
-(可选)启动所有剩余的Graylog从属节点。

实际上我们可以不按照官方的做法,以下是一些实践(前提是现有的数据不是很重要,可以删除的)

  • 可以不用停止graylog server
  • 修改es 配置,添加action.auto_create_index: false注意需要重启es集群,理论上单台重启不会有影响的(和部署模型也有关系)
  • 删除*_deflector 索引(可以通过api以及ui)
  • 手工 rotate active write

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

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

相关文章

2024年我的技术成长之路

2024年我的技术成长之路 大家好&#xff0c;我是小寒。又到年底了&#xff0c;一年过得真快啊&#xff01;趁着这次活动的机会&#xff0c;和大家聊聊我这一年在技术上的收获和踩过的坑。 说实话&#xff0c;今年工作特别忙&#xff0c;写博客的时间比去年少了不少。不过还是…

嵌入式硬件篇---基本组合逻辑电路

文章目录 前言基本逻辑门电路1.与门&#xff08;AND Gate&#xff09;2.或门&#xff08;OR Gate&#xff09;3.非门&#xff08;NOT Gate&#xff09;4.与非门&#xff08;NAND Gate&#xff09;5.或非门&#xff08;NOR Gate&#xff09;6.异或门&#xff08;XOR Gate&#x…

数据库管理-第285期 Oracle 23ai:深入浅出向量索引(20250117)

数据库管理285期 20245-01-17 数据库管理-第285期 Oracle 23ai&#xff1a;深入浅出向量索引&#xff08;20250117&#xff09;1 HNSW事务支持解读 2 IVF分区支持解读 3 混合向量索引何时选择混合向量索引为何选择混合向量索引 总结 数据库管理-第285期 Oracle 23ai&#xff1a…

行人识别检测数据集,yolo格式,PASICAL VOC XML,COCO JSON,darknet等格式的标注都支持,准确识别率可达99.5%

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

【Spring】原型 Bean 被固定

问题描述 在定义 Bean 时&#xff0c;有时候我们会使用原型 Bean&#xff0c;例如定义如下&#xff1a; Service Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class ServiceImpl { }然后我们按照下面的方式去使用它&#xff1a; RestController public class Hello…

2024年美赛C题评委文章及O奖论文解读 | AI工具如何影响数学建模?从评委和O奖论文出发-O奖论文做对了什么?

模型假设仅仅是简单陈述吗&#xff1f;允许AI的使用是否降低了比赛难度&#xff1f;还在依赖机器学习的模型吗&#xff1f;处理题目的方法有哪些&#xff1f;O奖论文的优点在哪里&#xff1f; 本文调研了当年赛题的评委文章和O奖论文&#xff0c;这些问题都会在文章中一一解答…

PyTorch框架——基于深度学习YOLOv8神经网络学生课堂行为检测识别系统

基于YOLOv8深度学习的学生课堂行为检测识别系统&#xff0c;其能识别三种学生课堂行为&#xff1a;names: [举手, 读书, 写字] 具体图片见如下&#xff1a; 第一步&#xff1a;YOLOv8介绍 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本…

kafka学习笔记6 ACL权限 —— 筑梦之路

在Kafka中&#xff0c;ACL&#xff08;Access Control List&#xff09;是用来控制谁可以访问Kafka资源&#xff08;如主题、消费者组等&#xff09;的权限机制。ACL配置基于Kafka的kafka-acls.sh工具&#xff0c;能够管理对资源的读取、写入等操作权限。 ACL介绍 Kafka的ACL是…

领域算法 - 负载均衡算法

负载均衡算法 文章目录 负载均衡算法一&#xff1a;常规负载均衡算法二&#xff1a;Nginx负载均衡算法 一&#xff1a;常规负载均衡算法 二&#xff1a;Nginx负载均衡算法 # 定义负载均衡设备的Ip及设备状态 upstream bakend {ip_hash; server 127.0.0.1:9090 down; server…

【Unity3D】3D物体摆放、场景优化案例Demo

目录 PlaceManager.cs(放置管理类) Ground.cs(地板类) 和 GroundData.cs(地板数据类) 额外知识点说明 1、MeshFilter和MeshRenderer的Bounds区别 2、Gizmos 绘制一个平行于斜面的立方体 通过网盘分享的文件&#xff1a;PlaceGameDemo2.unitypackage 链接: https://pan.baid…

C# OpenCvSharp 部署文档矫正,包括文档扭曲/模糊/阴影等情况

目录 说明 效果 模型 项目 代码 下载 参考 C# OpenCvSharp 部署文档矫正&#xff0c;包括文档扭曲/模糊/阴影等情况 说明 地址&#xff1a;https://github.com/RapidAI/RapidUnDistort 修正文档扭曲/模糊/阴影等情况&#xff0c;使用onnx模型简单轻量部署&#xff0c…

生成树机制实验

1 实验内容 1、基于已有代码,实现生成树运行机制,对于给定拓扑(four_node_ring.py),计算输出相应状态下的生成树拓扑 2、构造一个不少于7个节点,冗余链路不少于2条的拓扑,节点和端口的命名规则可参考four_node_ring.py,使用stp程序计算输出生成树拓扑 2 实验原理 一、…

数据结构详解——堆与二叉树

​ 目录 树的概念树的表示方法二叉树的概念特殊的二叉树二叉树的性质二叉树的存储结构顺序存储链式存储 堆的概念与结构堆的性质堆的实现堆的初始化入堆堆的扩容向上调整算法出堆&#xff08;最顶端元素&#xff09;向下调整算法 二叉树的实现二叉树的创建二叉树的销毁二叉树的…

【蓝桥杯】43694.正则问题

题目描述 考虑一种简单的正则表达式&#xff1a; 只由 x ( ) | 组成的正则表达式。 小明想求出这个正则表达式能接受的最长字符串的长度。 例如 ((xx|xxx)x|(x|xx))xx 能接受的最长字符串是&#xff1a; xxxxxx&#xff0c;长度是 6。 输入描述 一个由 x()| 组成的正则表达式。…

mac m1下载maven安装并配置环境变量

下载地址&#xff1a;Download Apache Maven – Maven 解压到一个没有中文和空格的文件夹 输入pwd查看安装路径 输入cd返回根目录再输入 code .zshrc 若显示 command not found: code你可以通过以下步骤来安装和配置 code 命令&#xff1a; 1. 确保你已经安装了 Visual Studio…

移远通信多模卫星通信模组BG95-S5获得Skylo网络认证,进一步拓展全球卫星物联网市场

近日&#xff0c;全球领先的物联网整体解决方案供应商移远通信正式宣布&#xff0c;其支持“卫星蜂窝”多模式的高集成度NTN卫星通信模组BG95-S5已成功获得NTN网络运营商Skylo的网络认证。BG95-S5也成为了获得该认证的最新款移远卫星通信模组。 BG95-S5模组顺利获得Skylo认证&a…

1.3.浅层神经网络

目录 1.3.浅层神经网络 1.3.1 浅层神经网络表示 1.3.2 单个样本的向量化表示 1.3.4 激活函数的选择 1.3.5 修改激活函数 1.3.5 练习​​​​​​​ 1.3.浅层神经网络 1.3.1 浅层神经网络表示 之前已经说过神经网络的结构了&#xff0c;在这不重复叙述。假设我们有如下…

StarRocks强大的实时数据分析

代码仓库&#xff1a;https://github.com/StarRocks/starrocks?tabreadme-ov-file StarRocks | A High-Performance Analytical Database 快速开始&#xff1a;StarRocks | StarRocks StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO、智能物化…

2024年博客之星主题创作|猫头虎分享AI技术洞察:2025年AI发展趋势前瞻与展望

2025年AI发展趋势前瞻&#xff1a;猫头虎深度解析未来科技与商业机遇 摘要 2024年&#xff0c;AI技术迎来爆发式增长&#xff0c;AIGC、智能体、AIRPA、AI搜索、推理模型等技术不断突破&#xff0c;AI应用场景持续扩展。2025年&#xff0c;AI将进入全新发展阶段&#xff0c;W…

51c~ONNX~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/11608027 一、使用Pytorch进行简单的自定义图像分类 ~ONNX 推理 图像分类是计算机视觉中的一项基本任务&#xff0c;涉及训练模型将图像分类为预定义类别。本文中&#xff0c;我们将探讨如何使用 PyTorch 构建一个简单的自定…