首页 > 主页 > 鬼谷子叔叔
日志:116 评论:13
北京, 西城
【LogStash】LogStash学习笔记

介绍

介绍

Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。

由于Logstash基于JAVA,JAVA是出了名的吃内存,所以我们尽量只部署一个Logstash环境,收集工作就交给Filebeat来负责。

安装

下载

logstash

下载页面

https://www.elastic.co/cn/downloads/logstash

下载软件

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.2.0.tar.gz

JDK

必须通过网页下载,需要勾选“接受协议”,所以不能用wget直接下载了!

网页地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装

JDK

tar -xzvf jdk-8u192-linux-x64.tar.gz -C /tongfu.net/env/

logstash

直接解压缩即可

tar -xzvf logstash-7.2.0.tar.gz -C /tongfu.net/env/

配置

配置JDK

echo "export JAVA_HOME=/tongfu.net/env/jdk1.8.0_192" >> /etc/profile
echo "export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar" >> /etc/profile
source /etc/profile

设置JVM参数

[root@tongfunet]# vi ./config/jvm.options
-Xms256m
-Xmx256m

使用

收集Nginx的日志

我们需要把nginx的日志改成json格式

log_format  json  '{"@timestamp":"$time_iso8601",'
                      '"host":"$server_addr",'
                      '"clientip":"$remote_addr",'
                      '"remote_user":"$remote_user",'
                      '"request":"$request",'
                      '"http_user_agent":"$http_user_agent",'
                      '"size":$body_bytes_sent,'
                      '"responsetime":$request_time,'
                      '"upstreamtime":"$upstream_response_time",'
                      '"upstreamhost":"$upstream_addr",'
                      '"http_host":"$host",'
                      '"url":"$uri",'
                      '"domain":"$host",'
                      '"xff":"$http_x_forwarded_for",'
                      '"referer":"$http_referer",'
                      '"status":"$status",'
                      '"ss":"$upstream_status"}';

修改access.log的日志格式为json

access_log  logs/access.log json;

重新加载nginx

sbin/nginx -s reload

设置Nginx的Logstash配置文件

我们在 config 目录下建立配置文件 nginx.conf  

[root@tongfunet]# vi ./config/nginx.conf
input {
    file {
        path => "/tongfu.net/logs/nginx-1.12.2/logs/access.log"
        codec => json
    }
}
output {
    elasticsearch {
        hosts => ["http://es_server:9200"]
        index => "nginx_logs_access"
    }
}

启动

我们通过下面的命令启动logstash

参数config.reload.automatic用来启动自动配置文件重新加载,因为logstash启动过程非常的慢,所以每次修改配置文件后让logstash自己重新加载配置文件,这样可以节省很多时间

cd /tongfu.net/env/logstash-7.2.0/
./bin/logstash -f ./config/nginx.conf --config.reload.automatic

Grok

Mutate

add_field

添加新字段到结果数据

add_field => {
    "new_field" => "%{[some_field]}"
    "new_field2" => "%{[some_parent_field][some_child_field]}"
}

remove_field

删除结果数据的现有字段

remove_field => ["agent", "input"]

if

使用条件语句

if [host] == "apache2" {
    file {
        path => "/var/log/apache2.log"
    }
}
if [host] == "nginx" {
    file {
        path => "/var/log/nginx.log"
    }
}

使用 in 语法

if "access.log" in [log][file] {
    file {
        path => "/var/log/access.log"
    }
}

GeoIP

安装GeoIP

安装软件

yum -y install geoip

下载数据库

wget https://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

安装数据库

tar -xzvf GeoLite2-City.tar.gz
cp GeoLite2-City_20190723/GeoLite2-City.mmdb /usr/share/GeoIP/

更新数据库

geoipupdate

其他