集中式日志分析平台 Elastic Stack(部署)
一、环境准备1、架构选型
接下来我们进行初步的探视,利用测试环境体验下ELK Stack + Filebeat,测试环境我们就不进行Kafka的配置了,因为他的存在意义在于提高可靠性。
http://i2.运维网.com/images/blog/201812/04/f8b4a80aded4a411fb08bc8f988c9aa4.png
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
CentOS7.4.1708
Master:Logstash,Elasticsearch,Kibana
172.18.2.101
CentOS7.4.1708
Node:Filebeat
4、SSH免秘钥
需要打通172.18.2.100至所有 agent 的 SSH 免密登录。
# 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
验证
# 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。
# 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。
http://i2.运维网.com/images/blog/201809/16/789bf38f64e40404a64abd5d9f535d50.png
修改文件/etc/logstash/conf.d/logstash.conf。
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => "172.18.2.100:9200"
index => "%{[@metadata]}-%{[@metadata]}-%{+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 进行启动了。
查看启动是否成功。
# 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,如下图。
http://i2.运维网.com/images/blog/201812/04/1544ea00bb8aaa8d25c42b9f6dd207e8.png
http://i2.运维网.com/images/blog/201812/04/a3ef56e681de6ce7b6b4f992ecded6eb.png
一般来说,我们都需要访问一些日志之后,这里才会出现我们之前定义的 index。
2、访问查看日志
http://i2.运维网.com/images/blog/201812/04/a97e608aa136ba197a5d9d448315c14a.png
页:
[1]