标签: logstash-configuration

logstash检查字段是否存在

我有日志文件进入ELK堆栈.我想复制一个字段(foo)以便在其上执行各种突变,但是字段(foo)并不总是存在.

如果foo不存在,则仍会创建bar,但会为其分配文字字符串 "%{foo}"

如果字段存在,我怎样才能执行变异?

我正在尝试做这样的事情.

if ["foo"] {
  mutate {
    add_field => "bar" => "%{foo}
  }
}
Run Code Online (Sandbox Code Playgroud)

logstash logstash-configuration

38
推荐指数
4
解决办法
6万
查看次数

Logstash - 从json文件中删除深字段

我有JSON文件,我通过logstash发送给ES.我想在JSON中删除1个字段(它是深字段) - 仅当值为NULL时才会删除.

JSON的一部分是:

"input": {
        "startDate": "2015-05-27",
        "numberOfGuests": 1,
        "fileName": "null",
        "existingSessionId": "XXXXXXXXXXXXX",
        **"radius": "null",**
        "nextItemReference": "51",
        "longitude": -99.12,
        "endDate": "2015-05-29",
        "thumbnailHeight": 200,
        "thumbnailWidth": 300,
        "latitude": 19.42,
        "numOfRooms": "1"
    },
Run Code Online (Sandbox Code Playgroud)

logstash.conf文件的一部分是:

if [input.radius] == "null" {
                mutate {
                        remove_field => [ "input.radius" ]
                }
        }
Run Code Online (Sandbox Code Playgroud)

当然这是在过滤器内部.

如果值为null,如何删除此字段?

logstash logstash-grok logstash-configuration

16
推荐指数
1
解决办法
9141
查看次数

Logstash configtest

我运行了服务logstash configtest,但给出的错误是:

logstash:无法识别的服务

我能够单独运行logstash服务,但不能运行"configtest".在etc/logstash/conf.d /我创建了logstash.conf文件,其中包含如下所示的代码: -

附加信息:-

service logstash status
? logstash.service - logstash
   Loaded: loaded (/etc/systemd/system/logstash.service; disabled)
   Active: active (running) since Mon 2016-12-26 12:40:58 PST; 6s ago
 Main PID: 3512 (java)
   CGroup: /system.slice/logstash.service
           ??3512 /usr/bin/java -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX...

Dec 26 12:40:58 Mr systemd[1]: Started logstash.
Run Code Online (Sandbox Code Playgroud)

使用configtest运行时的服务: -

root@Mr:/# service logstash configtest
logstash: unrecognized service
Run Code Online (Sandbox Code Playgroud)

我在debian8机器上运行这个,希望我能从你们那里得到一个很好的解决方案.

# This input block will listen on port 10514 for logs to come in.
# host should be an IP on the …
Run Code Online (Sandbox Code Playgroud)

logstash logstash-configuration

15
推荐指数
4
解决办法
5万
查看次数

logstash jdbc上的多个输入

我正在使用logstash jdbc来保持mysql和elasticsearch之间的同步.它适用于一张桌子.但是现在我想为多个表做这件事.我需要在终端中打开多个

logstash  agent -f /Users/logstash/logstash-jdbc.conf 
Run Code Online (Sandbox Code Playgroud)

每个都有一个选择查询或我们有更好的方法这样做,所以我们可以有多个表更新.

我的配置文件

input {
  jdbc {
    jdbc_driver_library => "/Users/logstash/mysql-connector-java-5.1.39-bin.jar"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://localhost:3306/database_name"
    jdbc_user => "root"
    jdbc_password => "password"
    schedule => "* * * * *"
    statement => "select * from table1"
  }
}
output {
    elasticsearch {
        index => "testdb"
        document_type => "table1"
        document_id => "%{table_id}"
        hosts => "localhost:9200"
    }
}
Run Code Online (Sandbox Code Playgroud)

jdbc elasticsearch logstash logstash-configuration

14
推荐指数
2
解决办法
1万
查看次数

Logstash SQL Server数据导入

input {
  jdbc {
    jdbc_driver_library => "sqljdbc4.jar"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://192.168.2.126\\SQLEXPRESS2014:1433;databaseName=test
	jdbc_password => "sa@sa2015"
    schedule => "0 0-59 0-23 * * *"
    statement => "SELECT ID , Name, City, State,ShopName FROM dbo.Shops"
	jdbc_paging_enabled => "true"
    jdbc_page_size => "50000"
  }
}
filter {
}
output {
  stdout { codec => rubydebug }
    elasticsearch { 
        protocol => "http"
		index => "shops"
		document_id => "%{id}"
    }
}
Run Code Online (Sandbox Code Playgroud)

我想使用JDBC SQL Server作为输入使用Logstash导入ElasticSearch中的数据,但我得到的错误类路径不正确.

任何人都知道如何使用Logstash连接sqljdbc FILE WITH CONFIG FILE的正确位置

logstash logstash-configuration

10
推荐指数
1
解决办法
2万
查看次数

Logstash的Java过滤器

你知道如何使用Logstash的Ruby过滤器,这使我能够在Ruby中编写代码,它通常包含在配置文件中,如下所示

filter {
      ruby {
           code => "...."
      }
}
Run Code Online (Sandbox Code Playgroud)

现在我有两个Jar文件,我想包含在我的过滤器中,以便我可以根据我在这些Jar文件中的操作处理我的输入.但是,我不能(显然)在ruby代码中包含Jar文件.我一直在寻找解决方案.

ruby java logstash logstash-file logstash-configuration

10
推荐指数
1
解决办法
1332
查看次数

除了指定的字段列表之外的所有字段的Logstash过滤器remove_field

我正在将一组数据解析为ELK堆栈,供一些非技术人员查看.作为其中的一部分,我想在发送到ElasticSearch之前从事件中删除除特定已知字段子集之外的所有字段.

我可以明确指定每个字段放入mutate过滤器,如下所示:

filter {
    mutate {
        remove_field => [ "throw_away_field1", "throw_away_field2" ]
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,无论何时将新字段添加到输入数据(这可能经常发生,因为数据是从队列中提取并由多个系统用于多种目的),它将需要更新过滤,这是额外的开销.不需要.更不用说在输入流更新和更新过滤之间是否有一些敏感数据通过,这可能是不好的.

有没有办法使用logstash过滤器迭代对象的每个字段,如果它不在提供的字段名称列表中,则删除remove_field?或者我是否必须编写自定义过滤器来执行此操作?基本上,对于每个单个对象,我只想保留8个特定字段,并且绝对抛弃其他所有字段.

看起来if ![field] =~ /^value$/logstash.conf文件中提供了非常小的类型逻辑,但我没有看到任何示例会在for each样式中迭代字段本身并将字段名称与值列表进行比较.

回答:

在将logstash升级到1.5.0以便能够使用诸如prune之类的插件扩展之后,解决方案最终看起来像这样:

filter {
    prune {
        interpolate => true
        whitelist_names => ["fieldtokeep1","fieldtokeep2"]
    }
}
Run Code Online (Sandbox Code Playgroud)

logstash logstash-configuration

10
推荐指数
2
解决办法
9948
查看次数

在使用带有Elasticsearch输出的Logstash时,.raw字段来自何处?

当同时使用Logstash和Elasticsearch时,.raw为分析的字段附加字段,以便在使用像Kibana这样的工具查询Elasticsearch时,可以按原样使用字段的值而不进行单字分割,什么不可以.

我使用最新版本的所有内容构建了一个新的ELK堆栈安装,并注意到我的.raw字段不再像旧版本的堆栈那样被创建.有很多人发布了在Elasticsearch上创建模板的解决方案,但是我还没有找到很多关于为什么修复这些问题的信息.为了更好地理解更广泛的问题,我问这个具体问题:

.raw字段来自哪里?

我假设Logstash在插入文档时使用字符串as-analyze和字符串as-raw填充Elasticsearch,但考虑到修复位于Elasticsearch模板中的事实,我怀疑我的假设是否正确.

elasticsearch logstash logstash-configuration

9
推荐指数
1
解决办法
6046
查看次数

9
推荐指数
1
解决办法
588
查看次数

通过配置日志记录驱动程序将Docker容器日志发送到ELK Stack - Easy Method

我通常将应用程序作为docker容器运行,因为它具有很高的灵活性和可用性 有没有办法将容器日志放入我的logstash服务器.

logging syslog docker logstash-configuration elastic-stack

9
推荐指数
1
解决办法
7036
查看次数