作者:or70woo | 来源:互联网 | 2023-02-12 10:39
使用logstash,可以将程序运行日志,索引到elasticsearch中,然后使用kibana,可以方便查看日志。不再需要手工登陆到远程服务器上查看日志文件。而且kibana提供搜索功能,可以根据关键词,还有时间范围等,查看某时间范围内的日志。
logstash,不仅仅可以将文件数据,导入到elasticsearch中,还可以在elasticsearch与elasticsearch之间同步数据。logstash会一直“监听”input的变化,将数据实时导入(索引)到目标elasticsearch中。
对于docker集群,如果想将部署到docker中的应用日志,保存于elasticsearch中,目前还没有具体尝试。看到有这种思路:将docker容器中应用日志,输出到宿主机上,这一步骤,docker完成。完成利用logstash,可以将宿主机上的日志文件,保存到elasticsearch中。
vim log.conf
input {
file {
start_position => end ### 读文件的位子
path => "/root/projects/fp-api/log/fp-api.log"
type => "type1" ### 用去输出到es时判断存入哪个索引
codec => multiline {
negate => true ### 是否匹配到
pattern => "(?d{4}-d{2}-d{2}sd{2}:d{2}:d{2}.d{3}) INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS}s*: %{SYSLOG5424SD:module}s*%{GREEDYDATA:msg}" ### 匹配的正则
what => "previous" ###将没匹配到的合并到上一条,可选previous或next, previous是合并到匹配的上一行末尾
max_lines => 1000 ### 最大允许的行
max_bytes => "10MiB" ### 允许的大小
auto_flush_interval => 30 ### 如果在规定时候内没有新的日志事件就不等待后面的日志事件
}
}
file {
start_position => end
path => "/root/projects/fp-acq/log/fp-acq.log"
type => "type2"
codec => multiline {
pattern => "(?d{4}-d{2}-d{2}sd{2}:d{2}:d{2}.d{3}) INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS}s*: %{SYSLOG5424SD:module}s*%{GREEDYDATA:msg}"
negate => true
what => "previous"
}
}
}
filter{
grok{
match => {
"message" => "(?d{4}-d{2}-d{2}sd{2}:d{2}:d{2}.d{3}) INFO %{NUMBER:thread} --- %{SYSLOG5424SD:task} %{JAVACLASS:javaclass}s*: %{SYSLOG5424SD:module}s*%{GREEDYDATA:msg}"
}
} ### 通过grok匹配内容并将
date{
match => ["datetime","yyyy-MM-dd HH:mm:ss.SSS","yyyy-MM-dd HH:mm:ss.SSSZ"]
target => "@timestamp"
} ### 处理时间
}
output {
if [type] == "type1" {
elasticsearch {
hosts => "192.168.1.158"
index => "fp_log_type1"
}
}
if [type] == "type2" {
elasticsearch {
hosts => "192.168.1.158"
index => "fp_log_typr2"
}
}
}
pattern 用于 需要匹配的日志每一行的格式
在java服务中,日志将会产生在一个特定目录下,使用logstash,可以将这些日志,实时索引到es中,然后在kibana中查看、搜索,方便日志的查询。
参考文章:
1.https://blog.csdn.net/ka3p06/article/details/84784747