社区首页 >问答首页 >logstash配置中的负正则表达式

logstash配置中的负正则表达式
EN

Stack Overflow用户
提问于 2014-02-25 21:44:09
回答 2查看 9.2K关注 0票数 4

我无法获得在LogStash中工作的负regexp表达式(如医生们中所述)

考虑以下正正则表达式,它可以正确地检测已分配值的字段:

代码语言:javascript
代码运行次数:0
复制
if [remote_ip] =~ /(.+)/ {
    mutate { add_tag => ["ip"] }
}

但是,即使字段为空,否定式表达式似乎也返回false:

代码语言:javascript
代码运行次数:0
复制
if [remote_ip] !~ /(.+)/ {
    mutate { add_tag => ["no_ip"] }
}

我是不是误解了用法?

更新--这是我模糊的想法。我的配置文件有问题。如果您的配置文件的其余部分是正常的,那么上面的内容应该可以工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 17:45:06

这对我来说是模糊的想法--我的配置文件的其余部分都有问题。

基于Ben的例子,我想出了一个更容易测试的输入:

代码语言:javascript
代码运行次数:0
复制
input {
    stdin { }
}

filter {
    if [message] !~ /(.+)/ {
         mutate { add_tag => ["blank_message"] }
    }
    if [noexist] !~ /(.+)/ {
         mutate { add_tag => ["tag_does_not_exist"] }
    }
}

output {
    stdout {debug => true}
}

空白消息的输出为:

代码语言:javascript
代码运行次数:0
复制
{
       "message" => "",
      "@version" => "1",
    "@timestamp" => "2014-02-27T01:33:19.285Z",
          "host" => "benchmark.example.com",
          "tags" => [
        [0] "blank_message",
        [1] "tag_does_not_exist"
    ]
}

具有“测试消息”内容的消息的输出是:

代码语言:javascript
代码运行次数:0
复制
test message
{
       "message" => "test message",
      "@version" => "1",
    "@timestamp" => "2014-02-27T01:33:25.059Z",
          "host" => "benchmark.example.com",
          "tags" => [
        [0] "tag_does_not_exist"
    ]
}

因此,只有当字段为空或字段不存在时,“负正则表达式”/(.+)/ 才返回true。

负正则表达式/(.*)/只在字段不存在时才返回true。如果字段存在(无论是空的还是带有值的),则返回值将为false。

票数 3
EN

Stack Overflow用户

发布于 2014-02-26 02:27:23

下面是我的配置。类型字段不存在,因此,负表达式返回true。

代码语言:javascript
代码运行次数:0
复制
input {
    stdin {
    }
}

filter {
    if [type] !~ /(.+)/ {
         mutate { add_tag => ["aa"] }
    }
}

output {
    stdout {debug => true}
}

regexp /(.+)/表示它接受一切,包括空白。因此,当"type“字段存在时,即使字段值为空,它也会满足regexp。因此,在您的示例中,如果存在remote_ip字段,则“负表达式”将始终返回false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22032818

复制
相关文章
logstash 配置
https://github.com/chudaozhe/efk/tree/master/logstash
崔哥
2022/05/25
5140
LogStash的配置详解
Logstash用{}来定义区域。区域内可以包括插件去预定义,可以在一个区域内定义多个插件。插件区域则可以定义键值对来设置。示例:
趣学程序-shaofeer
2023/09/09
1.5K0
关于Logstash中grok插件的正则表达式例子
近期需要对Nginx产生的日志进行采集,问了下度娘,业内最著名的解决方案非ELK(Elasticsearch, Logstash, Kibana)莫属。
石瞳禅
2018/09/18
1.8K0
logstash6配置语法中的条件判断
有时您只想在特定条件下过滤或输出事件。为此,您可以使用条件(conditional)。比如在elk系统中想要添加一个type类型的关键字来根据不同的条件赋值,最后好做统计。
WindCoder
2018/09/19
10.3K0
Logstash配置详解
node.name: logstash-102 #节点名称,一般为机器的hostname path.data: /var/lib/logstash #logstash存储插件等数据目录 pipeline.workers: 2 #进程数量 pipeline.output.workers: 1 #每个输出插件进程数量 pipeline.batch.size: 125 #单个工作线程将从输入中收集到的最大事件数量 pipeline.batch.delay: 5 #分发延迟时间 pipeli
苦咖啡
2018/04/28
3.7K0
Logstash6中grok插件的常用正则表达式
Logstash 内置了120种默认表达式,可以查看patterns,里面对表达式做了分组,每个文件为一组,文件内部有对应的表达式模式。下面只是部分常用的。
WindCoder
2018/09/19
5.3K0
logstash配置文件--logstash.conf
该文件定义了logstash从哪里获取输入,然后输出到哪里 #从Beats输入,以json格式输出到Elasticsearch input { beats { port => 5044 codec => 'json' } } output { elasticsearch { #elasticsearch地址,多个以','隔开 hosts => ["http://localhost:9200"] #创建的elasticsearch索引名,可以自定义也可以使用
陈不成i
2021/07/06
6570
logstash配置文件--logstash.yml
logstash.yml # ------------ Node identity ------------ #节点名称,默认主机名 node.name: test # ------------ Data path ------------------ #数据存储路径,默认LOGSTASH_HOME/data path.data: # ------------ Pipeline Settings -------------- #pipeline ID,默认main pipeline.id: main #输
陈不成i
2021/07/06
2K0
Logstash 配置 Grok 语法
Grok 是一种采用组合多个预定义的正则表达式。用来匹配分割文本,并且映射到关键字的工具。主要用来对日志数据进行预处理。Logstash 的 filter 模块中 grok 插件就是其应用。其实主要思想就是用正则的方式匹配出字段,然后映射成某个字段。
王小明_HIT
2019/09/06
9.2K0
Logstash 配置 Grok 语法
logstash grok配置规则
这里主要需要配置grok match,把日志信息切分成索引数据(match本质是一个正则匹配)
李国宝
2020/01/02
1.8K0
filebeat及logstash配置
在 Filebeat 的配置文件中,fields 配置项允许你添加自定义字段,以便更好地描述、分类或标记日志事件。
章工运维
2023/05/19
6250
双塔模型中的负采样
推荐模型中双塔模型早已经普及.一个塔学用户表达.一个塔学item表达.很多双塔模型用各种各样的in-batch负采样策略.十方也是如此.往往使用比较大的batchsize,效果会比较好,但是由于内存限制,训练效率会比较低.这篇论文《Cross-Batch Negative Sampling for Training Two-Tower Recommenders》发现encoder的输出在warming up的训练过程后就比较稳定了,基于此提出一个高效负采样的方法Cross Batch Negative Sampling (CBNS),该方法充分使用了最近编码过的item embedding来加速训练过程.
炼丹笔记
2021/09/02
1.8K0
logstash配置output到exec
场景 监控文件内容发送告警 配置 input { stdin { type => 'demo-stdin' add_field => {"test" => "hello"} codec => "plain" tags => ["stdin-test"] } } output { exec { command => "/usr/bin/php /data/test/test/test.p
苦咖啡
2018/04/28
1.6K0
logstash配置output到redis
input { stdin { type => 'demo-stdin' add_field => {"test" => "hello"} codec => "plain" tags => ["stdin-test"] } } output { redis { data_type => "list" key => "logstash-demo" host => "127.
苦咖啡
2018/04/28
1.9K0
logstash配置output到Elasticsearch
input { file { path => ["/data/logs/nginx/201/*.log"] type => "test-log" start_position => "beginning" codec => "json" } } output { elasticsearch { hosts => "192.168.56.201:9200" index => "nginx-201" } } 更多参考:https://www.e
苦咖啡
2018/04/28
1.9K0
Logstash配置文件简述
官方说明请参考 https://www.elastic.co/guide/en/logstash/5.4/configuration-file-structure.html
日薪月亿
2019/05/14
2.4K0
logstash线上配置文件
线上logstash配置文件,特此记录。 # pipelines.yml 文件 $ egrep -v '^$|^#' pipelines.yml - pipeline.id: feature path.config: "/data/elk/logstash-7.5.0/conf.d/kafka-feature.conf" - pipeline.id: feature-log path.config: "/data/elk/logstash-7.5.0/conf.d/kafka-featur
章工运维
2023/05/19
2370
迁移学习中的负迁移:综述
迁移移学习(TL)试图利用来自一个或多个源域的数据或知识来促进目标域的学习。由于标记成本、隐私问题等原因,当目标域只有很少或没有标记数据时,它特别有用。
脑机接口社区
2020/11/11
2.3K0
迁移学习中的负迁移:综述
(elasticsearch配置)实战Elasticseartch、Logstash、Kibana
elasticsearch优化 shard数量 节点数量 索引操作 磁盘IO次数及速度 ;
用户5760343
2022/05/19
2030
(elasticsearch配置)实战Elasticseartch、Logstash、Kibana
点击加载更多

相似问题

从List<string>创建List<CustomObject>

31

在列表视图中显示list<T>

23

如何在Javascript Metro应用程序中检测列表视图中项目的右键单击

20

在列表视图中显示项目

13

JavaFX计数ObservableList<CustomObject>中的项目

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文