一、环境准备

1、架构选型

接下来我们进行初步的探视,利用测试环境体验下ELK Stack + Filebeat,测试环境我们就不进行Kafka的配置了,因为他的存在意义在于提高可靠性。

集中式日志分析平台 Elastic Stack(部署)

2、软件版本

Filebeat 6.5.1
Logstash 6.5.1
Elasticsearch 6.5.1
Kibana 6.5.1
JDK 1.8.0_181

3、服务器准备

IP 系统 角色
172.18.2.100 CentOS 7.4.1708 Master:Logstash,Elasticsearch,Kibana
172.18.2.101 CentOS 7.4.1708 Node:Filebeat

4、SSH免秘钥

需要打通172.18.2.100至所有 agent 的 SSH 免密登录。

[root@ES ~]# ssh-copy-id 172.18.2.101

5、JDK安装

ELK 需要 Oracle 1.7(或者是 OpenJDK 1.7) 及以上,建议下载 Oracle 官方的 JDK1.8.0_131,我们这里下载的是官方的 rpm 包。

rpm -ivh jdk-8u181-linux-x64.rpm

二、ELK 服务安装

ELK 官网对于每种软件提供了多种格式的安装包(zip/tar/rpm/DEB),以 Linux 系列系统为例,直接下载 RPM,安装后会直接安装成系统的 service。以后就可以使用 service 命令启停。

1、ElasticSearch

我们这里不安装ES集群,我们只是演示,采用单机模式进行安装。

下载软件包(172.18.2.100)

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.rpm

安装

rpm -ivh elasticsearch-6.5.1.rpm

编辑配置文件/etc/elasticsearch/elasticsearch.yml,修改如下字段内容:

cluster.name: my-application
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 172.18.2.100
http.port: 9200

启动ES

systemctl daemon-reload
systemctl start elasticsearch.service
systemctl enable elasticsearch.service

验证

[root@ES ~]# curl 'http://172.18.2.100:9200'
{
  "name" : "node-1",
  "cluster_name" : "my-application",
  "cluster_uuid" : "eiZCJB1IS2qHgkSs4LagCQ",
  "version" : {
    "number" : "6.5.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "8c58350",
    "build_date" : "2018-11-16T02:22:42.182257Z",
    "build_snapshot" : false,
    "lucene_version" : "7.5.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

可以看到,它跟其他的节点的传输端口为9300,接受HTTP请求的端口为9200。

[root@ES ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1001/master         
tcp6       0      0 172.18.2.100:9200       :::*                    LISTEN      11885/java          
tcp6       0      0 172.18.2.100:9300       :::*                    LISTEN      11885/java          
tcp6       0      0 :::22                   :::*                    LISTEN      903/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1001/master         

详细信息请参见官方文档

2、Logstash

下载安装包(172.18.2.100)

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.1.rpm

安装

rpm -ivh logstash-6.5.1.rpm

安装组件beats

一个Logstash的pipeline由3部分组成:input, filter, output。

集中式日志分析平台 Elastic Stack(部署)

修改文件/etc/logstash/conf.d/logstash.conf

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => "172.18.2.100:9200"
    index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
  }
}

Logstash 使用该配置使用 ES 的索引,和 Filebeat 做的事情是一样的,不过拥有了额外的缓存以及强大丰富的插件库。

手动启动程序。

/usr/share/logstash/bin/logstash  --path.settings /etc/logstash &>/dev/null &

我这里 systemctl 启动是有问题的,这可能和启动的脚本文件有关,也可能和数据路径/var/lib/logstash权限有关,我这里就不进行修改了,我这里直接使用命令行进行启动,指定配置文件路径,它会去加载conf.d目录下面的所有*.conf配置文件。
大家也可以去配置官方的 YUM 仓库,进行yum安装,说不定就可以直接使用 systemctl 进行启动了。

查看启动是否成功。

[root@ES ~]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      903/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1001/master         
tcp6       0      0 172.18.2.100:9200       :::*                    LISTEN      23471/java          
tcp6       0      0 :::5044                 :::*                    LISTEN      26720/java          
tcp6       0      0 172.18.2.100:9300       :::*                    LISTEN      23471/java          
tcp6       0      0 :::22                   :::*                    LISTEN      903/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1001/master         
tcp6       0      0 127.0.0.1:9600          :::*                    LISTEN      26720/java          

具体请参见官方文档

3、Filebeat(日志收集软件)

在node上进行Filebeat的安装,因为Filebeat是轻量级的,被采集端机器可以不用安装 JDK。

下载软件(172.18.2.101)

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.5.1-x86_64.rpm

安装软件

rpm -ivh filebeat-6.5.1-x86_64.rpm

我们的node上面有运行的tomcat服务,所以产生了一些日志。
修改配置文件/etc/filebeat/filebeat.yml,把日志输出指向logstash,只关闭Elasticsearch output。

#=================== Filebeat inputs ===================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/tomcat/*.txt
    - /var/log/messages
#----------------------------- Logstash output --------------------------------
output.logstash:
  hosts: ["172.18.2.100:5044"]

启动软件

systemctl start filebeat
systemctl enable filebeat

具体内容请参见官方文档

4、Kibana

Kibana 从 ES 获取数据做前端的可视化展示。 它提供了用户体验极佳的高定制化 UI,可以灵活配置出你需要的 Dashboard。 Dashboard 可以轻易的保存、链接和分享。

下载软件(172.18.2.100)

wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-x86_64.rpm

安装软件

rpm -ivh kibana-6.5.1-x86_64.rpm

编辑配置文件/etc/kibana/kibana.yml,新增如下内容。

elasticsearch.url: "http://172.18.2.100:9200"
server.host: "172.18.2.100"

启动

systemctl daemon-reload
systemctl start kibana.service
systemctl enable kibana.service

验证查看,在浏览器中访问http://172.18.2.100:5601

详细设定,请参见官方文档

三、配置 Kibana

1、配置 index pattern

访问http://172.18.2.100:5601,点击Discover,如下图。

集中式日志分析平台 Elastic Stack(部署)

集中式日志分析平台 Elastic Stack(部署)

一般来说,我们都需要访问一些日志之后,这里才会出现我们之前定义的 index。

2、访问查看日志

集中式日志分析平台 Elastic Stack(部署)