我想知道如何为抓取到logstash
的不同日志创建分离的索引(后来传递到elasticsearch
),以便在kibana
中,我可以为它们定义两个索引并发现它们。
就我而言,我有一些客户端服务器(每个服务器都安装有filebeat
)和一个集中式日志服务器(ELK
)。每个客户端服务器具有不同种类的日志,例如redis.log
,python
日志,mongodb
日志,我希望将它们分类到不同的索引中并存储在elasticsearch
中。
每个客户端服务器也有不同的用途,例如:数据库,UI,应用程序。因此我也想给它们不同的索引名称(通过更改filebeat.yml
中的输出索引?)。
答案 0 :(得分:7)
在Filebeat配置中,您可以使用document_type
来标识您拥有的不同日志。然后在Logstash中,您可以设置casper.clickWhileSelector = function(selector, i) {
return this.then(function() {
i = i || 1;
selectorNth = selector+':nth-child(' + i + ')';
if (this.exists(selectorNth)) {
this.echo('found link: '+this.getElementInfo(selectorNth).tag);
this.click(selectorNth);
return this.clickWhileSelector(selector, i+1);
}
return this.echo('Done.').exit();
});
}
字段的值来控制目标索引。
但是,在将日志分成不同的索引之前,应考虑将它们保留在单个索引中,并使用type
或某些custom field来区分日志类型。请参阅index vs type。
示例Filebeat prospector config:
type
Logstash配置示例:
filebeat:
prospectors:
- paths:
- /var/log/redis/*.log
document_type: redis
- paths:
- /var/log/python/*.log
document_type: python
- paths:
- /var/log/mongodb/*.log
document_type: mongodb
答案 1 :(得分:2)
在logstash中,您可以借助标记定义多个输入,过滤或输出插件:
input {
file {
type => "redis"
path => "/home/redis/log"
}
file {
type => "python"
path => "/home/python/log"
}
}
filter {
if [type] == "redis" {
# processing .......
}
if [type] == "python" {
# processing .......
}
}
output {
if [type] == "redis" {
# output to elasticsearch redis
index => "redis"
}
if [type] == "python" {
# output to elasticsearch python
index => "python"
}
}
答案 2 :(得分:1)
filebeat.yml
filebeat.prospectors:
- input_type: log
paths:
- /var/log/*.log
fields: {log_type: toolsmessage}
- input_type: log
paths:
- /etc/httpd/logs/ssl_access_*
fields: {log_type: toolsaccess}
在logstash.conf中。
input {
beats {
port => "5043"
}
}
filter {
if ([fields][log_type] == "toolsmessage") {
mutate {
replace => {
"[type]" => "toolsmessage"
}
}
}
else if ([fields][log_type] == "toolsaccess") {
mutate {
replace => {
"[type]" => "toolsaccess"
}
}
}
}
output {
elasticsearch {
hosts => ["10.111.119.211:9200"]
index => "%{type}_index"
}
#stdout { codec => rubydebug }
}
答案 3 :(得分:0)
我已阅读以上所有内容。 找出我的方式。
requests