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

ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍

文章目录

  • 1. grok (正则捕获插件)
    • 1.1 作用
    • 1.2 正则表达式的类型
      • 1.2.1 内置正则表达式
      • 1.2.2 自定义正则表达式
  • 2. mutate (数据修改插件)
    • 2.1 作用
    • 2.2 常见配置选项
    • 2.3 应用实例
  • 3. multiline (多行合并插件)
    • 3.1 作用
    • 3.2 常用配置项及示例
      • 3.2.1 pattern
      • 3.2.2 negate
      • 3.2.3 what
    • 3.3 插件的安装及应用
      • 3.3.1 插件的安装
    • 3.4 插件的使用过程
  • 4. date (时间处理插件)
    • 4.1 作用
    • 4.2 常用的配置项
      • 4.2.1 match
      • 4.2.2 target
      • 4.2.3 timezone
    • 4.3 应用实例

1. grok (正则捕获插件)

1.1 作用

使用文本片段切分的方式来切分日志事件

即:将大文本字段分片成若干个小字段。

1.2 正则表达式的类型

  • 内置正则表达式
  • 自定义正则表达式

1.2.1 内置正则表达式

#基本格式
%{内置正则表达式:小字段名}%{SYNTAX:SEMANTIC}●SYNTAX代表匹配值的类型,例如,0.11可以NUMBER类型所匹配,10.222.22.25可以使用IP匹配。●SEMANTIC表示存储该值的一个变量声明,它会存储在elasticsearch当中方便kibana做字段搜索和统计,你可以将一个IP定义为客户端IP地址client_ip_address,如%{IP:client_ip_address},所匹配到的值就会存储到client_ip_address这个字段里边,类似数据库的列名,也可以把 event log 中的数字当成数字类型存储在一个指定的变量当中,比如响应时间http_response_time,假设event log record如下:
#示例
#用内置正则匹配消息记录192.168.67.100 GET /index.html 15824 0.043%{IP:client_id_address} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:http_response_time}
登录kibana,进入Grok Debugger界面

在这里插入图片描述

#官方网址
https://github.com/logstash-plugins/logstash-patterns-core/blob/main/patterns/ecs-v1/grok-patterns
#官方提供的一些常量
USERNAME [a-zA-Z0-9._-]+
USER %{USERNAME}
EMAILLOCALPART [a-zA-Z][a-zA-Z0-9_.+-=:]+
EMAILADDRESS %{EMAILLOCALPART}@%{HOSTNAME}
INT (?:[+-]?(?:[0-9]+))
BASE10NUM (?<![0-9.+-])(?>[+-]?(?:(?:[0-9]+(?:\.[0-9]+)?)|(?:\.[0-9]+)))
NUMBER (?:%{BASE10NUM})
BASE16NUM (?<![0-9A-Fa-f])(?:[+-]?(?:0x)?(?:[0-9A-Fa-f]+))
BASE16FLOAT \b(?<![0-9A-Fa-f.])(?:[+-]?(?:0x)?(?:(?:[0-9A-Fa-f]+(?:\.[0-9A-Fa-f]*)?)|(?:\.[0-9A-Fa-f]+)))\bPOSINT \b(?:[1-9][0-9]*)\b
NONNEGINT \b(?:[0-9]+)\b
WORD \b\w+\b
NOTSPACE \S+
SPACE \s*
DATA .*?
GREEDYDATA .*
QUOTEDSTRING (?>(?<!\\)(?>"(?>\\.|[^\\"]+)+"|""|(?>'(?>\\.|[^\\']+)+')|''|(?>(?>\\.|[^\\]+)+)|))
UUID [A-Fa-f0-9]{8}-(?:[A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12}
# URN, allowing use of RFC 2141 section 2.3 reserved characters
URN urn:[0-9A-Za-z][0-9A-Za-z-]{0,31}:(?:%[0-9a-fA-F]{2}|[0-9A-Za-z()+,.:=@;$_!*'/?#-])+# Networking
MAC (?:%{CISCOMAC}|%{WINDOWSMAC}|%{COMMONMAC})
CISCOMAC (?:(?:[A-Fa-f0-9]{4}\.){2}[A-Fa-f0-9]{4})
WINDOWSMAC (?:(?:[A-Fa-f0-9]{2}-){5}[A-Fa-f0-9]{2})
COMMONMAC (?:(?:[A-Fa-f0-9]{2}:){5}[A-Fa-f0-9]{2})
IPV6 ((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?
IPV4 (?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])
IP (?:%{IPV6}|%{IPV4})
HOSTNAME \b(?:[0-9A-Za-z][0-9A-Za-z-]{0,62})(?:\.(?:[0-9A-Za-z][0-9A-Za-z-]{0,62}))*(\.?|\b)
IPORHOST (?:%{IP}|%{HOSTNAME})
HOSTPORT %{IPORHOST}:%{POSINT}# paths
PATH (?:%{UNIXPATH}|%{WINPATH})
UNIXPATH (/([\w_%!$@:.,+~-]+|\\.)*)+
TTY (?:/dev/(pts|tty([pq])?)(\w+)?/?(?:[0-9]+))
WINPATH (?>[A-Za-z]+:|\\)(?:\\[^\\?*]*)+
URIPROTO [A-Za-z]([A-Za-z0-9+\-.]+)+
URIHOST %{IPORHOST}(?::%{POSINT:port})?
# uripath comes loosely from RFC1738, but mostly from what Firefox
# doesn't turn into %XX
URIPATH (?:/[A-Za-z0-9$.+!*'(){},~:;=@#%&_\-]*)+
#URIPARAM \?(?:[A-Za-z0-9]+(?:=(?:[^&]*))?(?:&(?:[A-Za-z0-9]+(?:=(?:[^&]*))?)?)*)?
URIPARAM \?[A-Za-z0-9$.+!*'|(){},~@#%&/=:;_?\-\[\]<>]*
URIPATHPARAM %{URIPATH}(?:%{URIPARAM})?
URI %{URIPROTO}://(?:%{USER}(?::[^@]*)?@)?(?:%{URIHOST})?(?:%{URIPATHPARAM})?# Months: January, Feb, 3, 03, 12, December
MONTH \b(?:[Jj]an(?:uary|uar)?|[Ff]eb(?:ruary|ruar)?|[Mm](?:a|ä)?r(?:ch|z)?|[Aa]pr(?:il)?|[Mm]a(?:y|i)?|[Jj]un(?:e|i)?|[Jj]ul(?:y)?|[Aa]ug(?:ust)?|[Ss]ep(?:tember)?|[Oo](?:c|k)?t(?:ober)?|[Nn]ov(?:ember)?|[Dd]e(?:c|z)(?:ember)?)\b
MONTHNUM (?:0?[1-9]|1[0-2])
MONTHNUM2 (?:0[1-9]|1[0-2])
MONTHDAY (?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])# Days: Monday, Tue, Thu, etc...
DAY (?:Mon(?:day)?|Tue(?:sday)?|Wed(?:nesday)?|Thu(?:rsday)?|Fri(?:day)?|Sat(?:urday)?|Sun(?:day)?)# Years?
YEAR (?>\d\d){1,2}
HOUR (?:2[0123]|[01]?[0-9])
MINUTE (?:[0-5][0-9])
# '60' is a leap second in most time standards and thus is valid.
SECOND (?:(?:[0-5]?[0-9]|60)(?:[:.,][0-9]+)?)
TIME (?!<[0-9])%{HOUR}:%{MINUTE}(?::%{SECOND})(?![0-9])
# datestamp is YYYY/MM/DD-HH:MM:SS.UUUU (or something like it)
DATE_US %{MONTHNUM}[/-]%{MONTHDAY}[/-]%{YEAR}
DATE_EU %{MONTHDAY}[./-]%{MONTHNUM}[./-]%{YEAR}
ISO8601_TIMEZONE (?:Z|[+-]%{HOUR}(?::?%{MINUTE}))
ISO8601_SECOND (?:%{SECOND}|60)
TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
DATE %{DATE_US}|%{DATE_EU}
DATESTAMP %{DATE}[- ]%{TIME}
TZ (?:[APMCE][SD]T|UTC)
DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}# Syslog Dates: Month Day HH:MM:SS
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
PROG [\x21-\x5a\x5c\x5e-\x7e]+
SYSLOGPROG %{PROG:program}(?:\[%{POSINT:pid}\])?
SYSLOGHOST %{IPORHOST}
SYSLOGFACILITY <%{NONNEGINT:facility}.%{NONNEGINT:priority}>
HTTPDATE %{MONTHDAY}/%{MONTH}/%{YEAR}:%{TIME} %{INT}# Shortcuts
QS %{QUOTEDSTRING}# Log formats
SYSLOGBASE %{SYSLOGTIMESTAMP:timestamp} (?:%{SYSLOGFACILITY} )?%{SYSLOGHOST:logsource} %{SYSLOGPROG}:# Log Levels
LOGLEVEL ([Aa]lert|ALERT|[Tt]race|TRACE|[Dd]ebug|DEBUG|[Nn]otice|NOTICE|[Ii]nfo|INFO|[Ww]arn?(?:ing)?|WARN?(?:ING)?|[Ee]rr?(?:or)?|ERR?(?:OR)?|[Cc]rit?(?:ical)?|CRIT?(?:ICAL)?|[Ff]atal|FATAL|[Ss]evere|SEVERE|EMERG(?:ENCY)?|[Ee]merg(?:ency)?)

1.2.2 自定义正则表达式

#自定义正则格式:
(?<小字段名>自定义正则表达式)
#示例
#目标消息记录
192.168.67.100 - - [14/Oct/2023:11:53:02 +0800] "GET /jxl.html HTTP/1.1" 200 17 "-" "curl/7.29.0" "-"#按照以下格式显示"remote_addr": "response_code": "http_method": "refer_url": "http_version": "request_uri": "user_agent": "access_time": #使用的正则表达式
%{IP:remote_addr} - - \[(?<access_time>.+)\] \"%{WORD:http_method} %{URIPATHPARAM:request_uri} (?<http_version>.+)\" %{NUMBER:response_code} [0-9]+ \"(?<refer_url>.+)\" \"(?<user_agent>.+)\" .*

在这里插入图片描述

2. mutate (数据修改插件)

2.1 作用

对Logstash收集的日志事件字段进行格式化处理

2.2 常见配置选项

配置选项功能
rename重命名字段名
add_field添加字段
remove_field删除字段
replace替换字段的值
gsub修改字段值的字符
convert修改字段值的数据类型

2.3 应用实例

#将字段old_field重命名为new_field
filter {mutate {#写法1,使用中括号括起来rename => ["old_field" => "new_field"]#写法2,使用大括号{}括起来rename => { "old_field" => "new_field" }		}
}

#添加字段
filter {mutate {add_field => {"f1" => "field1""f2" => "field2"}}
}
#将字段删除
filter {mutate {remove_field  =>  ["message", "@version", "tags"]}
}
#将filedName1字段数据类型转换成string类型,filedName2字段数据类型转换成float类型
filter {mutate {#写法1,使用中括号括起来convert  =>  ["filedName1", "string"]#写法2,使用大括号{}括起来convert => { "filedName2" => "float" }}
}~~~bash
#将filedName字段中所有"/“字符替换为”_"
filter {mutate {gsub => ["filedName", "/" , "_"]}
}
#将filedName字段中所有",“字符后面添加空格
filter {mutate {gsub => ["filedName", "," , ", "]}
}
#将filedName字段以"|"为分割符拆分数据成为数组
filter {mutate {split => ["filedName", "|"]}
}
~~~bash#合并 “filedName1” 和 “ filedName2” 两个字段
filter {merge  { "filedName2" => "filedName1" }
}
#用新值替换filedName字段的值
filter {mutate {replace => { "filedName" => "new_value" }}
}
#添加字段first,值为message数组的第一个元素的值
filter {mutate {split => ["message", "|"]add_field => {"first" => "%{[message][0]}"    } }
}
#有条件的添加标签
filter {#在日志文件路径包含 access 的条件下添加标签内容if [path] =~ "access" {mutate {add_tag => ["Nginx Access Log"]}}
    #在日志文件路径是 /var/log/nginx/error.log 的条件下添加标签内容if [path] == "/var/log/nginx/error.log" {mutate {add_tag => ["Nginx Error Log"]}}
}

3. multiline (多行合并插件)

3.1 作用

将多行日志内容合并成一整行。

3.2 常用配置项及示例

3.2.1 pattern

通过正则表达式匹配行内容

#示例
pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"

3.2.2 negate

false:不取反,表示正则匹配的行做合并操作。

true:取反,表示正则不匹配的行做合并操作。

#示例
negate => true
表示取反negate => false
表示不取反

3.2.3 what

previous表示向上合并。

next表示向下合并。

#示例
what => "previous"
向上合并what => "next"
向下合并

3.3 插件的安装及应用

3.3.1 插件的安装

#方式1:在线安装cd /usr/share/logstashbin/logstash-plugin install logstash-filter-multiline
#方式2:离线安装
#注:要先在有网的机器上在线安装插件,然后打包,拷贝到服务器,执行安装命令。bin/logstash-plugin prepare-offline-pack --overwrite --output logstash-filter-multiline.zip logstash-filter-multilinebin/logstash-plugin install file:///usr/share/logstash/logstash-filter-multiline.zip

3.4 插件的使用过程

  1. 每一条日志的第一行开头都是一个时间,可以用时间的正则表达式匹配到第一行;

  2. 然后将后面每一行的日志与第一行合并;

  3. 当遇到某一行的开头是可以匹配正则表达式的时间的,就停止第一条日志的合并,开始合并第二条日志;

  4. 重复第二步和第三步。

filter {multiline {pattern => "^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}.\d{3}"negate => truewhat => "previous"}
}

4. date (时间处理插件)

4.1 作用

将Logstash收集的日志事件时间@timestamp日志实际的时间进行格式统一。

需要先配置grok插件模块获取日志时间的小字段。

4.2 常用的配置项

4.2.1 match

#示例
match => ["access_time", "dd/MMM/YYYY:HH:mm:ss Z", "UNIX", "yyyy-MM-dd HH:mm:ss", "dd-MMM-yyyy HH:mm:ss"]

用于配置具体的匹配内容规则

前半部分内容表示匹配实际日志当中的时间戳的名称,后半部分则用于匹配实际日志当中的时间戳格式

这个地方是整条配置的核心内容,如果此处规则匹配是无效的,则生成后的日志时间戳将会被input插件读取的时间替代。

如果时间格式匹配失败,会生成一个tags字段,字段值为 _dateparsefailure,需要重新检查上边的match配置解析是否正确。

4.2.2 target

将匹配的时间戳存储到给定的目标字段中。

如果未提供,则默认更新事件的@timestamp字段。

#示例
target => "@timestamp"

4.2.3 timezone

当需要配置的date里面没有时区信息,而且不是UTC时间,需要设置timezone参数

timezone => "Asia/Shanghai"
设置时区为上海

4.3 应用实例

#新建子配置文件,用于测试
vim  /etc/logstash/conf.d/test.conf#在filter块中,启用date插件
filter {date {match => ["access_time", "dd/MMM/YYYY:HH:mm:ss Z", "UNIX", "yyyy-MM-dd HH:mm:ss", "dd-MMM-yyyy HH:mm:ss"]target => "@timestamp"timezone => "Asia/Shanghai"}
#运行配置文件
#还需要启动filebeat收集日志,这里不再赘述
logstash -f test.conf然后登录到kibana,查看视图的变化

相关文章:

ELK架构Logstash的相关插件:grok、multiline、mutate、date的详细介绍

文章目录 1. grok (正则捕获插件)1.1 作用1.2 正则表达式的类型1.2.1 内置正则表达式1.2.2 自定义正则表达式 2. mutate (数据修改插件&#xff09;2.1 作用2.2 常见配置选项2.3 应用实例 3. multiline &#xff08;多行合并插件&#xff09;3.1 作用3.2 常用配置项及示例3.2.1…...

linux 防火墙介绍以及iptables的使用

背景介绍 在前几天&#xff0c;于工发现我们内部的150服务器7554端口被外网访问了。该应用提供着内部的摄像头资源。为了避免被入侵&#xff0c;于是我添加了一些iptables规则&#xff0c;防止外网的访问。 解决方式 解决方式有两种&#xff1a; 关闭公司公网路由器对150服务…...

原码、反码、补码在汇编中的应用

原文章&#xff1a;知乎 原码和二进制类似&#xff0c;不过它有符号位。正数符号位为0&#xff0c;负数为1 。 例&#xff1a;40000 0100 &#xff0c;-41000 0100 原码是人脑最容易理解和计算的表示方式。 但是这在计算机中计算就出了问题&#xff0c;这两个&#xff08;4…...

【红日靶场】vulnstack5-完整渗透过程

系列文章目录 【红日靶场】vulnstack1-完整渗透过程 【红日靶场】vulnstack2-完整渗透过程 【红日靶场】vulnstack3-完整渗透过程 【红日靶场】vulnstack4-完整渗透过程 文章目录 系列文章目录描述虚拟机密码红队思路 一、环境初始化二、开始渗透外网打点上线cs权限提升域信息…...

嵌入式平台的电源总结

本文引注: https://mp.weixin.qq.com/s/PuSxHDFbJjjHEReukLSvyg 1.AC的定义 Alternating Current&#xff08;交流&#xff09;的首字母缩写。AC是大小和极性&#xff08;方向&#xff09;随时间呈周期性变化的电流。电流极性在1秒内的变化次数被称为频率&#xff0c;以Hz为单位…...

@Binds methods must be abstract 报错指南

bindings方法必须是抽象的 Binds使用错误...

自定义反序列化类将LocalDate时间格式转为 LocalDateTime

从前端接收数据反序列化成类,如果时间格式不一致可能会反序列化失败 public class StorageDTO implements Serializable {private static final long serialVersionUID 1L;......//实体类中格式为JsonFormat(pattern "yyyy-MM-dd")JsonDeserialize(using CustomL…...

MySQL JSON_TABLE() 函数

JSON_TABLE()函数从一个指定的JSON文档中提取数据并返回一个具有指定列的关系表。 应用&#xff1a;数据库字段以JSON 存储后&#xff0c;实际应用需要对其中一个字段进行查询 语法 JSON_TABLE(json,path COLUMNS(column[,column[,...]]))column:name参数 json必需的。一个 …...

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型

【MATLAB第80期】基于MATLAB的结构核岭回归SKRR多输入单输出回归预测及分类预测模型 SKRR这是Gustau Camps-Valls等人在“用深度结构核回归检索物理参数”中提出的结构核岭回归&#xff08;SKRR&#xff09;方法。 参考文献&#xff1a; Camps-Valls,Retrieval of Physical Pa…...

Qt消息对话框的使用

本文介绍Qt消息对话框的使用。 QMessageBox类是Qt编程中常用到的一个类&#xff0c;主要用来进行一些简单的消息提示&#xff0c;比如&#xff1a;问题对话框&#xff0c;信息对话框等&#xff0c;这些对话框都属于QMessageBox类的静态方法&#xff0c;使用起来比较简单&#…...

spring的Ioc、DI以及Bean的理解

文章目录 什么是Ioc&#xff1f;Spring和这有什么关系Spring是怎么做的&#xff1f;如果service层对dao层有依赖该怎么办&#xff1f;什么叫做依赖注入Spring这样做的目的是什么参考文献 什么是Ioc&#xff1f; Ioc(Inversion of Control) 控制反转&#xff0c;就是使用对象时…...

倒计时 天时分秒

shijian() {const EndTIME new Date(开始时间变量); // 截止时间const NowTime new Date(); // 开始时间const usedTime EndTIME - NowTime; // 相差的毫秒数const days Math.floor(usedTime / (24 * 3600 * 1000)); // 计算出天数const leavel usedTime % (24 * 3600 * 1…...

Spring篇---第六篇

系列文章目录 文章目录 系列文章目录一、Spring 框架中的单例 Bean 是线程安全的么?二、Spring 是怎么解决循环依赖的?三、说说事务的隔离级别一、Spring 框架中的单例 Bean 是线程安全的么? Spring 框架并没有对单例 Bean 进行任何多线程的封装处理。 关于单例 Bean 的线程…...

【unity小技巧】适用于任何 2d 游戏的钥匙门系统和buff系统——UnityEvent的使用

文章目录 每篇一句前言开启配置门的开启动画代码调用&#xff0c;控制开启门动画 新增CollisionDetector 脚本&#xff0c;使用UnityEvent &#xff0c;控制钥匙和门的绑定多把钥匙控制多个门一把钥匙控制多个门 BUFF系统扩展参考源码完结 每篇一句 人总是害怕去追求自己最重要…...

爬虫ip如何加入到代码里实现自动化数据抓取

以下是一个使用HTTP:Tiny和www.weibo.com的音频爬虫程序的示例。这个示例使用了https://www.duoip.cn/get_proxy来获取爬虫IP。请注意&#xff0c;这个示例可能需要根据你的实际需求进行调整。 #!/usr/bin/perluse strict; use warnings; use HTTP::Tiny; use LWP::UserAgent; …...

在win10上安装配置Hadoop的环境变量

一、背景 在windows10系统中运行seatunnel 二、安装部署 2.1. 下载 Hadoop包 从 Apache Hadoop 官网下载最新版本的 Hadoop&#xff0c;版本号保持与服务端的Hadoop版本一致。 https://hadoop.apache.org/releases.htmlIndex of /apache/hadoop/core/hadoop-3.2.3/ 2.2. 解…...

MAX插件CG Magic怎么云渲染?操作方法已整起!

小编这里会收到不少网友的反馈是关于3ds max插件CG Magic怎么云渲染&#xff1f; 3d max的这款插件CG MAGIC的出现就是为了设计师使用过程中&#xff0c;可以省时又省心的完成工作。 同时&#xff0c;大家要了键下&#xff0c;现阶段CG MAGIC有18个板块&#xff0c;118个模块…...

尝试使用jmeter-maven-plugin

前提准备 1、maven项目 2、已安装JMeter、Jenkins、maven、jdk 环境要求&#xff1a; jmeter>5.6.2 maven >3.9 jdk>1.8 Jenkins ? 备注&#xff1a;jmeter-maven-plugin 无需下载&#xff0c;可查阅相关地址&#xff1a;GitHub - jmeter-maven-plugin/jmete…...

navigator.userAgent.toLowerCase区分设备,浏览器

navigator.userAgent.toLowerCase区分设备&#xff0c;浏览器 navigator.userAgent.toLowerCase(&#xff09;区分设备是pc还是移动端在确认是移动端的基础上&#xff0c;判断是Android、ipad、iphone内置的浏览器&#xff0c;比如新浪微博、腾讯QQ&#xff08;非QQ浏览器&…...

防火墙操作:开放端口ICMP时间戳请求漏洞修复

响应ICMP时间戳请求漏洞修复 firewall-cmd --permanent --zonepublic --add-icmp-blocktimestamp-reply firewall-cmd --permanent --zonepublic --add-icmp-blocktimestamp-request firewall-cmd --reload --防火墙状态 systemctl status firewalld --打开防火墙 systemctl …...

顺丰突然重仓2亿美元:机器人开始“取代”分拣工了?

2026年4月27日&#xff0c;星动纪元宣布完成超2亿美元新一轮融资。2026年4月27日&#xff0c;具身智能赛道在同一日内落下两枚重磅炸弹。星动纪元宣布完成超2亿美元新一轮融资&#xff0c;无界动力同步官宣天使轮累计融资超2亿美元。最引人注目的是&#xff0c;星动纪元的融资消…...

3个关键步骤解决Firefox中GM_addElement脚本兼容性问题

3个关键步骤解决Firefox中GM_addElement脚本兼容性问题 【免费下载链接】scriptcat ScriptCat, a browser extension that can execute userscript; 脚本猫&#xff0c;一个可以执行用户脚本的浏览器扩展 项目地址: https://gitcode.com/gh_mirrors/sc/scriptcat Script…...

如何用The Super Tiny Compiler掌握作用域与符号表管理:完整指南

如何用The Super Tiny Compiler掌握作用域与符号表管理&#xff1a;完整指南 【免费下载链接】the-super-tiny-compiler :snowman: Possibly the smallest compiler ever 项目地址: https://gitcode.com/gh_mirrors/th/the-super-tiny-compiler The Super Tiny Compiler…...

OpCore Simplify:告别黑苹果配置难题,四步构建完美EFI

OpCore Simplify&#xff1a;告别黑苹果配置难题&#xff0c;四步构建完美EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果复杂的Open…...

ComfyUI-Impact-Pack V8终极指南:AI图像细节增强与语义分割完整教程

ComfyUI-Impact-Pack V8终极指南&#xff1a;AI图像细节增强与语义分割完整教程 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, and more. 项目地…...

Dify工作流实战指南:从场景驱动到生产部署的技术演进

Dify工作流实战指南&#xff1a;从场景驱动到生产部署的技术演进 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/aw/Awesome-Dify-W…...

深入解析自动化任务执行框架:从核心原理到生产实践

1. 项目概述&#xff1a;一个多功能的自动化任务执行框架最近在梳理手头的一些重复性工作流时&#xff0c;发现很多任务虽然逻辑简单&#xff0c;但步骤繁琐&#xff0c;涉及多个工具和平台的切换。比如&#xff0c;我需要定期从几个不同的数据源抓取信息&#xff0c;进行初步清…...

测绘工程就业有哪些坑?如何避开?

测绘工程专业&#xff0c;目前招聘市场上的岗位&#xff0c;目前主要分为测绘内业和外业。1、测绘外业外业需要外出&#xff0c;条件艰苦&#xff0c;如果在城郊还好一点&#xff0c;大部分时间是要去穷乡僻壤、高山、沼泽、沙漠、铁路、工地等......很多学测绘专业的同学不想干…...

AI Agent在量化交易中的策略优化

AI Agent在量化交易中的策略优化:从原理到落地的全指南 引言 痛点引入 2024年国内量化私募管理规模正式突破1.5万亿,行业渗透率超过30%,但高速扩张的背后是全行业的策略同质化危机:传统多因子策略因子拥挤度超过60%,CTA策略2023年平均收益不足3%,指增产品超额回撤中位…...

星动纪元宣布融资2亿美元:顺丰领投 红杉IDG加持

雷递网 乐天 4月27日星动纪元今日宣布融资超过2亿美元&#xff0c;本轮融资由顺丰集团领投&#xff1b;红杉中国、IDG资本、中金资本、京铭资本、朝希资本、鲁信创投、聚合资本、隆启投资等财务机构联合注资&#xff1b;科捷智能、东风产投、工银资本、联通旗下基金等多家头部产…...