ELK是Elasticsearch、Logstash、Kibana开源软件的集合,对外是作为一个日志管理系统的开源方案,它可以从任何来源、任何格式进行日志搜索、分析与可视化展示。

基本组成软件:

1、Filebeat:监控日志文件,获取服务器上指定路径的日志文件,并将这些日志转发到Logstash实例以进行处理。Filebeat的设计是为了可靠性和低延迟。Filebeat在主机上占用的资源很少,而Beats input插件将对Logstash实例的资源需求降到最低。
2、Logstash:它是一个服务端的数据处理管道,可以从多个源中提取数据,对其进行转换,然后将其存储到Elasticsearch中。简单来说就是日志的收集、分析、过滤工具。
3、Kibana:它是一个基于web的图形界面,用于搜索、分析和可视化存储在Elasticsearch中的日志数据。
4、Elasticsearch:它是一个开源分布式搜索引擎,提供收集、分析、存储数据三大功能。

Filebeat安装

1、从Filebeat官网选择你所需的版本,本次安装以Ubuntu为例。

elk日志收集 nginx elk日志采集_elk日志收集 nginx


2、右键选择复制链接地址使用wget下载Filebeat.tar.gz压缩包。

elk日志收集 nginx elk日志采集_elk日志收集 nginx_02


3、使用tar -zxf命令解压。

hsl@iZ282hpfj1mZ:~$ tar -zxf filebeat-6.4.0-linux-x86_64.tar.gz

4、编辑filebeat.yml配置文件
配置文件中有各种输入以及输出,根据自己的需求正确配置。

Logstash安装

logstash需要Java环境,JDK版本不低于1.8,检查你的环Java环境:

java -vsersion

如果Java已经安装,此命令将输出类似于以下内容:

java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

如果Logstash在包安装期间无法找到JAVA_HOME环境变量,您可能会收到一个错误消息,软件无法正常启动。

1、从Logstash官网选择你所需的版本,本次安装以Ubuntu为例。

elk日志收集 nginx elk日志采集_配置文件_03


2、右键选择复制链接地址使用wget下载tar.gz压缩包。

hsl@iZ282hpfj1mZ:~$ wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.0.tar.gz

3、使用tar -zxf命令解压。

hsl@iZ282hpfj1mZ:~$ tar -zxf logstash-6.4.0.tar.gz

4、配置logstash,我们需要创建一个配置文件,并指定要使用的插件和每个插件的设置。我们创建名为logstash-simple.conf的文件并将其保存在与Logstash相同的目录中。

hsl@iZ282hpfj1mZ:~$ cd logstash-6.4.0/
hsl@iZ282hpfj1mZ:~/logstash-6.4.0$ vi logstash-simple.conf

在logstash-simple.conf中输入以下内容

input { stdin { } }
output {
  stdout { codec => rubydebug }
}
5、启动Logstash
hsl@iZ282hpfj1mZ:~/logstash-6.4.0$bin/logstash -f logstash-simple.conf

Elasticsearch安装

1、从ELasticsearch官网选择你所需的版本,本次安装以Ubuntu为例。

elk日志收集 nginx elk日志采集_Elastic_04


2、右键选择复制链接地址使用wget下载tar.gz压缩包。

hsl@iZ282hpfj1mZ:~$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.tar.gz

3、使用tar -zxf命令解压。

hsl@iZ282hpfj1mZ:~$ tar -zxf elasticsearch-6.4.0.tar.gz

4、启动

hsl@iZ282hpfj1mZ:~$ cd elasticsearch-6.4.0/
hsl@iZ282hpfj1mZ:~/elasticsearch-6.4.0$ bin/elasticsearch

5、检验是否启动

hsl@iZ282hpfj1mZ:~/elasticsearch-6.4.0$ curl http://localhost:9200/

elk日志收集 nginx elk日志采集_elasticsearch_05


上图表示Elasticsearch正常启动。

6、注意,正式服务器上需要更改配置文件elasticsearch.yml,具体配置项可以对照官网。

Kibana安装

Filebeat + Logstash + Elasticsearch 简单使用示例

1、下载示例数据

wget https://download.elastic.co/demos/logstash/gettingstarted/logstash-tutorial.log.gz
gunzip logstash-tutorial.log.gz  # 解压

2、配置filebeat.yml文件

hsl@iZ282hpfj1mZ:~$ cd filebeat-6.4.0-linux-x86_64/
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$ cp filebeat.yml filebeat.yml.bck  # 备份配置文件
hsl@iZ282hpfj1mZ:~/filebeat-6.4.0-linux-x86_64$vi  filebeat.yml

将以下内容输入到filebeat.yml文件中

filebeat.prospectors:
- type: log
  paths:
    - /path/to/file/logstash-tutorial.log  # 下载的示例数据的文件位置绝对路径
output.elasticsearch:
  hosts: ["localhost:9200"]

3、启动Filebeat

./filebeat -e -c filebeat.yml -d "publish"

4、配置Logstash配置文件,first-pipeline.conf

input {
    beats {
        port => "5044"
    }
}
 filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
    elasticsearch {
        hosts => [ "localhost:9200" ]
    }
}

5、启动Logstash

bin/logstash -f first-pipeline.conf --config.reload.automatic
# 自动重载配置文件

6、我们重新启动一下filebeat

rm data/registry  # 首先删掉上次的注册数据
./filebeat -e -c filebeat.yml -d "publish"

7、等程序完成,检查数据

curl 'localhost:9200/logstash-2018.09.17/_search?pretty'

logstash-2018.09.17是自动生成的索引,具体的生成配置还不清楚。pretty是为了友好展示

curl 'localhost:9200/_cat/indices?v'

elk日志收集 nginx elk日志采集_elasticsearch_06