?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
  
logstash安装与配置-对接elasticsearch
 
 
#1. 下载
[root@10-10-10-100 logstash] wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.0.tar.gz
 
 
#2. 解压
[root@10-10-10-100 logstash] tar -zxvf logstash-6.3.0.tar.gz
 
 
#3. 启动logstash并指定配置文件
[root@10-10-10-100 logstash] ./bin/logstash -f ./nginx/json.conf
 
 
******************************** logstash 配置文件内容参考 *****************************
#1. 配置解析nginx 默认格式日志
[root@10-10-10-100 logstash] mkdir ./nginx
[root@10-10-10-100 logstash] vim json.conf
//---------------------------------文件内容如下   begin--------------------------------
input {
    file {
        path => "/var/log/nginx/*.log"
        start_position => beginning
    }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG} %{QS:x_forwarded_for}"}
    }
    date {
        match => [ "timestamp" "dd/MMM/YYYY:HH:mm:ss Z" ]
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => "127.0.0.1:9200"
        index => "logstash-%{+YYYY.MM.dd}"
    }
    stdout { codec => rubydebug }
}
# ./bin/logstash -f /./nginx/test.conf
//---------------------------------文件内容如下   end--------------------------------
 
#2. 配置解析nginx json格式日志
//-----------------------------------------文件内容
[root@10-10-10-100 logstash] mkdir ./nginx
[root@10-10-10-100 logstash] vim json.conf
//---------------------------------文件内容如下   begin--------------------------------
input {
    file {
        path => "/var/log/nginx/access-*.log"
        start_position => beginning
        codec => json
    }
}
filter {
    grok {
        match => { "message" => "%{TIMESTAMP_ISO8601:locals}" }
    }
    date {
        locale => "en"
        match => [ "locals""ISO8601"]
    }
    geoip {
        source => "clientip"
    }
    if [type] == "voip_feedback" {
        json {
            source => "message"
                #target => "doc"
                #remove_field => ["message"]
        }
    }
}
output {
        #无法解析的json不记录到elasticsearch中
        if "_jsonparsefailure" not in [tags] {
            elasticsearch {
                hosts => "10.11.111.111:9200"
                    index => "production-logstash-%{+YYYY.MM.dd}"
             }
       }
 
    stdout { codec => rubydebug }
}
 
# ./bin/logstash -f ./nginx/json.conf
//---------------------------------文件内容如下   end--------------------------------
 
 
另. 问题补充
 
启动logstash 时 提示java版本太低问题
 
# 1.下载最新版本java,解压至至目录 /usr/local/java1.8/jre1.8.0_171/
 
# 2. 编辑文件
[root@web /logstash-6.3.0/bin] vim /logstash-6.3.0/bin/logstash.lib.sh
//------------------------------文件开头加入以下内容  begin
export JAVA_CMD="/usr/local/java1.8/jre1.8.0_171/bin"
export JAVA_HOME="/usr/local/java1.8/jre1.8.0_171/"
//------------------------------文件开头加入以下内容  end
 
 
#监控logstash是否停止,如果停止则重新启服务 sh脚本
# 1. 计划任务加入以下内容
*/2 * * * * /data/logstash/monitor.sh >> /dev/null 2>&1
 
#创建脚本 monitor.sh
//--------------------------------------------脚本内容   begin
#!/bin/bash
 
TIME=`date +"%Y-%m-%d %H:%M:%S"`
LOGSTASH=`exec ps -ef | grep logstash-core | grep -v grep | awk '{print $2}'`
 
if "$LOGSTASH"x = ""x ]; then
/data/logstash/bin/logstash -f /data/logstash/nginx/json.conf &
disown
export LOGFILE="/var/log/logstash.log"
echo -e "${TIME} - ${LOGSTASH} - start" >> $LOGFILE
else
export LOGFILE="/var/log/logstash.log"
echo -e "${TIME} - ${LOGSTASH}" >> $LOGFILE
fi
//--------------------------------------------sh 脚本内容   end
 
  


---------------------------------------------------------------------------------------------
不忘初心 方得始终!

唯有志存高远,方能风行天下。

道之所存,虽千万人吾往矣! 情之所钟,虽千万里吾念矣~

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。