一, 环境准备
1, 架构选型
接下来我们进行初步的探视, 利用测试环境体验下 ELK Stack + Filebeat, 测试环境我们就不进行 Kafka 的配置了, 因为他的存在意义在于提高可靠性.
2, 软件版本
- Filebeat 6.4.0
- Logstash 6.4.0
- Elasticsearch 6.4.0
- Kibana 6.4.0
- JDK 1.8.0_181
3, 服务器准备
IP | 系统 | 角色 |
---|---|---|
172.18.2.100 | CentOS 7.4.1708 | Logstash, ES, Kibana |
172.18.2.101 | CentOS 7.4.1708 | Filebeat |
172.18.2.102 | CentOS 7.3.1611 | Filebeat |
4,SSH 免秘钥
需要打通 172.18.2.100 至所有 agent 的 SSH 免密登录.
- [root@ES ~]# ssh-copy-id 172.18.2.101
- [root@ES ~]# ssh-copy-id 172.18.2.102
5,JDK 安装
ELK 需要 Oracle 1.7(或者是 OpenJDK 1.7) 及以上, 建议下载 Oracle 官方的 JDK, 我们这里下载的是官方的 rpm 包.
rpm -ivh jdk-8u181-linux-x64.rpm
二, ELK 服务安装
ELK 官网对于每种软件提供了多种格式的安装包 (zip/tar/rpm/DEB), 以 Linux 系列系统为例, 如果直接下载 RPM, 可以通过 rpm -ivh path_of_your_rpm_file 直接安装成系统 service. 以后就可以使用 service 命令启停. 比如 service elasticsearch start/stop/status. 很简单, 我们主要就使用这种方式进行安装.
1,ElasticSearch
下载软件包 (172.18.2.100)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.0.rpm
安装
rpm -ivh elasticsearch-6.4.0.rpm
修改配置
修改 / etc/elasticsearch/elasticsearch.yml.
- cluster.name: myes
- node.name: es1.wzlinux.com
- 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" : "es1.wzlinux.com",
- "cluster_name" : "myes",
- "cluster_uuid" : "q54RkYTLTKuVaSytrTXiAg",
- "version" : {
- "number" : "6.4.0",
- "build_flavor" : "default",
- "build_type" : "rpm",
- "build_hash" : "595516e",
- "build_date" : "2018-08-17T23:18:47.308994Z",
- "build_snapshot" : false,
- "lucene_version" : "7.4.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.4.0.rpm
安装
rpm -ivh logstash-6.4.0.rpm
安装组件 beats
一个 Logstash 的 pipeline 由 3 部分组成: input, filter, output.
在我们的架构中, Logstash 的 input 是 beats,output 是 ES, 需要对应的插件.
- cd /usr/share/logstash/
- bin/logstash-plugin install logstash-input-beats
配置
修改文件 / etc/logstash/conf.d/logstash.conf.
- input {
- beats {
- port => 5044
- }
- }
- output {
- elasticsearch {
- hosts => "172.18.2.100:9200"
- manage_template => false
- index => "%{[@metadata][beat]}-%{ YYYY.MM.dd}"
- document_type => "%{[@metadata][type]}"
- }
- }
Logstash 使用该配置使用 ES 的索引, 和 Filebeat 做的事情是一样的, 不过拥有了额外的缓存以及强大丰富的插件库.
启动
- systemctl start logstash.service
- 3,Kibana
Kibana https://www.elastic.co/products/kibana 从 ES 获取数据做前端的可视化展示. 它提供了用户体验极佳的高定制化 UI, 可以灵活配置出你需要的 Dashboard. Dashboard 可以轻易的保存, 链接和分享.
下载 (172.18.2.100)
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-x86_64.rpm
安装
rpm -ivh kibana-6.4.0-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
查看
在浏览器中访问 http://172.18.2.100:5601.
4,Filebeat
在 172.18.2.101,172.18.2.102 上进行 Filebeat 的安装.
下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.0-x86_64.rpm
安装
rpm -ivh filebeat-6.4.0-x86_64.rpm
配置
修改 / etc/filebeat/filebeat.yml, 把日志输出指向 logstash, 关闭 Elasticsearch output.
- #----------------------------- Logstash output --------------------------------
- output.logstash:
- hosts: ["172.18.2.100:5044"]
添加 Index Pattern
在 Elasticsearch 中, Index Pattern 用于定义字段应如何分析的设置和映射.
Filebeat 的默认 Index Pattern 由软件包安装. 如果使用默认的配置文件 filebeat.yml, 则 Filebeat 在成功连接到 Elasticsearch 后会自动加载模板. 如果模板已存在, 默认不会覆盖, 但是可以通过配置进行覆盖.
如果要禁用自动模板加载, 或者要加载自己的模板, 可以在 Filebeat 配置文件中更改模板加载的设置.
因为我们的输出不是 ES, 所以我们需要手动添加 Index Pattern.
- [root@node2 ~]# filebeat setup --template -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["172.18.2.100:9200"]'
- Loaded index template
启动
systemctl start filebeat
来源: http://www.bubuko.com/infodetail-2770628.html