我有一个正在运行的Java应用程序,它将根据本教程http://www.andrew-programming.com/2018/09/18/integrate-springboot-application-with-elk-and-filebeat/
将其日志发送到logstash。我的问题是,是否要将日志与不同的应用程序分开,我想为每个应用程序使用不同的索引模式,而不是将它们全部放在同一应用程序中。
这是我的logstash配置文件,其中index =>“ app-%{+ YYYY.MM.dd}”是模式的名称。
我尝试了诸如%{type}%{tags} [tags] [type]之类的东西,但是它们都不打印与应用程序相关的任何变量。我可以在索引模式中使用host,但不希望使用ip可能会改变索引的位置。
input {
tcp {
port => 4560
codec => json_lines
}
beats {
host => "127.0.0.1"
port => "5044"
}
}
output{
stdout { codec => rubydebug }
elasticsearch {
hosts => ["localhost:9200"]
index => "app-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
答案 0 :(得分:0)
将以下内容添加到logback.spring.xml
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"auxiliary-service-application"}</customFields>
</encoder>
在logstash.conf文件中使用了该参数。
output{
stdout { codec => rubydebug }
elasticsearch {
hosts => ["localhost:9200"]
index => "%{appname}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
答案 1 :(得分:0)
我认为这会有所帮助
例如:
result = sorted(my_dict.items(), key=itemgetter(1), reverse=True)
for item in result[:self.top]:
# How wide I want my spacing
total_space = 50
# the length of the key
x_space = len(item[0])
# the length of the value, string first so I can count how many digits
y_space = len(str(item[1]))
# The space left over
remaining_space = total_space - x_space - y_space
# the character to fill the space, could use - or . or _
gap = ' ' * remaining_space
print(f'{item[0]}{gap}{item[1]}')
# Output
.py 2
.csv 1