我是LogStash的新手.我在Log4J中有一些从Java应用程序编写的日志.我正在尝试将这些日志放入ElasticSearch.对于我的生活,我似乎无法让它始终如一地运作.目前,我正在使用以下logstash配置:
input {
file {
type => "log4j"
path => "/home/ubuntu/logs/application.log"
}
}
filter {
grok {
type => "log4j"
add_tag => [ "ApplicationName" ]
match => [ "message", "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level}" ]
}
}
output {
elasticsearch {
protocol => "http"
codec => "plain"
host => "[myIpAddress]"
port => "[myPort]"
}
}
Run Code Online (Sandbox Code Playgroud)
这种配置似乎很受欢迎.我不知道为什么.例如,我有两条消息.一个工作,另一个抛出解析失败.然而,我不确定为什么.以下是消息及其各自的结果:
Tags Message
------ -------
["_grokparsefailure"] 2014-04-04 20:14:11,613 TRACE c.g.w.MyJavaClass [pool-2-
thread-6] message was null from https://domain.com/id-1/env-
MethodName
["ApplicationName"] 2014-04-04 20:14:11,960 TRACE c.g.w.MyJavaClass [pool-2-
thread-4] message was null …Run Code Online (Sandbox Code Playgroud) 我正在尝试了解ELK堆栈(ElasticSearch,Logstash和Kibana).为了开始,我一直在浏览http://logstash.net/docs/1.4.0/tutorials/getting-started-with-logstash上的"入门指南" .我一直在Mac OS X Mavericks安装上执行这些步骤.不过,我确实做了一件不同的事情.
下载Logstash和Elasticsearch tarball后,我将其内容复制到以下位置:
然后,我使用终端中的以下命令启动Elasticsearch:
sudo /Applications/dev/Elasticsearch/1.1.0/bin/elasticsearch
Run Code Online (Sandbox Code Playgroud)
然后我开始一个新的终端窗口.在新的终端窗口中,我使用以下命令启动Logstash:
sudo /Applications/dev/logstash/1.4.0/bin/logstash -e 'input { stdin { } } output { elasticsearch { host => localhost } } '
Run Code Online (Sandbox Code Playgroud)
Logstash似乎开始很好.如果我在入门指南中输入"你知道,对于日志",我可以使用POSTMAN查看结果.但是,我被困在Kibana身上.
我使用以下命令下载了Kibana:
git clone https://github.com/elasticsearch/kibana.git kibana
Run Code Online (Sandbox Code Playgroud)
我已将下载的文件放入/Applications/dev/kibana/3.0.0.我现在仍然坚持如何在网络浏览器中实际使用Kibana.我知道我需要提供这些文件.我看到这个示例中的服务器内容.但是,我不确定是否
谢谢!
我有一个JSON数组,其一般结构如下:
var json = [
{ key: 'firstName', value: 'Bill' },
{ key: 'lastName', value: 'Mans' },
{ key: 'phone', value: '123.456.7890' }
];
Run Code Online (Sandbox Code Playgroud)
实际上,会有更多的键/值对.无论哪种方式,我都试图使用Lodash按键值对此数组进行排序.目前,我正在尝试以下方法:
_.map(_.sortBy(json, key), _.values);
Run Code Online (Sandbox Code Playgroud)
但是,这会导致错误,指出:
[ReferenceError: key is not defined]
Run Code Online (Sandbox Code Playgroud)
我怀疑它是因为密钥没有用引号括起来,如文档中所示.不幸的是,我实际上并没有控制json的格式.实际上它被其他开发者使用,我是最后一个使用它.有没有办法让我使用lodash按键名对json数组进行排序?如果是这样,怎么样?
谢谢
我有一些Log4J2生成的日志文件.我正在使用log4j2.xml配置文件中的JSONLayout将日志输出到.json文件中.我的JSONLayout定义如下:
<JSONLayout complete="false"></JSONLayout>
Run Code Online (Sandbox Code Playgroud)
当日志输入到我的机器上的日志文件中时,它们会一个接一个地附加,并在logs.log中看起来像这样:
{
"logger":"com.mycompany.myLogger",
"timestamp":"1396792374326",
"level":"ERROR",
"thread":"pool-2-thread-2",
"message":"System: unable to perform action",
"throwable":"java.lang.NullPointerException\\n\tat com.myCompany.MyClass $.java:432)\\n\tat java.lang.Thread.run(Thread.java:744)\\n"
},
Run Code Online (Sandbox Code Playgroud)
我正在尝试构造此JSON,以便我可以从ElasticSearch查询它.在此过程中,我正在尝试向所有记录添加自定义字段.为此,我使用以下内容:
input {
file {
type => "json"
path => "/var/logs/myApp/logs.log"
}
}
filter {
json {
add_tag => [ "HardcodedTagName"]
source => "message"
}
}
output {
elasticsearch {
protocol => "http"
codec => "json"
host => "[myServerAddress]"
port => "9200"
}
}
Run Code Online (Sandbox Code Playgroud)
奇怪的是,我的自定义标签似乎没有被添加.与此同时,我真的想将我的JSON分解为我可以在ElasticSearch中查询的字段.我想查询的内容清晰可见.他们是:
然而,我似乎无法获得这些信息.当我在Kibana中看到JSON记录时,我只看到如下内容:
{
"_index": "logstash-2014.04.07",
"_type": "json",
"_id": "tG-s6-5pSnq5HZwLhM6Dxg",
"_score": null,
"_source": …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行两个Lucene查询.第一个有效.第二个没有.我的第一个查询看起来像这样:
level:"dangerous"
Run Code Online (Sandbox Code Playgroud)
我的第二个查询看起来像这样:
IP address:"11.22.333.444"
Run Code Online (Sandbox Code Playgroud)
我没有收到查询错误.但是,我知道有匹配IP地址的文档.出于这个原因,我怀疑"IP"和"地址"之间的空间是导致问题的原因.但是,我不是Lucene的专家.所以,我不确定我是否正确.
当我使用PostMan查看我的结果集时,我可以看到一个包含如下字段的文档:
"IP address": "11.22.333.444"
Run Code Online (Sandbox Code Playgroud)
如果我的查询是正确的,有人可以告诉我吗?或者,如果我遗失了什么?
谢谢!