一, 概述
ELK 是由 Elastic 公司开发的 Elasticsearch,Logstash,Kibana 三款开源软件的缩写 (但不限于这三款软件).
为什么使用 ELK?
在目前流行的微服务架构中, 一个大型应用可能会被划分成几十甚至上百个微服务, 这些微服务产生的日志也会分布在不同的服务器不同的目录下, 按常规方式进行日志检查你会频繁登录每台服务器查找日志, 所以你可能需要一个集中化的日志管理平台.
如果要对这些日志进行数据分析, 常规方式可采用 hadoop 或 spark 等大数据技术手段来进行数据分析, 但终究这些方式需要编写代码和相关专业知识, 时间, 人力成本略高, 所以你可能需要一个开箱即用的搜索, 聚合, 可视化的数据分析平台.
综上所述, ELK 首先是一个集中化日志管理平台, 但同时也是一个快速的可视化数据分析平台.
架构选择
ELK 架构很灵活, 不同的架构适合不同的场景.
在文章末尾提供了一个链接, 可作为不同架构方式的参考.
二, 服务架构
上图中分为 4 层, 含义如下:
1,filebeat 日志采集端, 采集日志并将日志发送到 kafka;
2,kafka+zookeeper 集群, 用于中转, 缓冲海量日志;
3,logstash 从 kafka 中拉取日志, 并过滤, 转发到 Elasticsearch 中;
4,Elasticsearch 集群, 用于存储日志; kibana 将海量日志可视化展示, 统计;
三, 服务器 \ 软件准备
服务器 ip | 192.168.1.101 | 192.168.1.102 | 192.168.1.103 | 192.168.1.104 | 192.168.1.105 | 192.168.1.106 | 192.168.1.107 | 192.168.1.108 |
安装软件 | filebeat | kafka+zookeeper | kafka+zookeeper | logstash | elasticsearch dataNode | elasticsearch dataNode | elasticsearch dataNode | elasticsearch masterNode+kibana |
一共涉及 6 个软件包
四, 软件安装
1, 安装 zookeeper
192.168.1.102,192.168.1.103 两台服务器分别安装配置 zookeeper 集群
- # 安装目录 / usr/local/zookeeper-3.4.13
- >tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/
- >cd /usr/local/zookeeper-3.4.13/conf/
- >cp zoo_sample.cfg zoo.cfg
- >VIM zoo.cfg
- # 修改以下配置
- dataDir=/usr/local/zookeeper-3.4.13/zookeeper
- server.1=192.168.1.102:12888:13888
- server.2=192.168.1.103:12888:13888
- #server.1 执行 (重要)
- >echo 1> /usr/local/zookeeper-3.4.13/zookeeper/myid
- #server.2 执行 (重要)
- >echo 2> /usr/local/zookeeper-3.4.13/zookeeper/myid
- # 两台服务器分别启动 zookeeper
- >cd /usr/local/zookeeper-3.4.13/bin/
- >./zkServer.sh start
- >netstat -lntp |grep 2181
2, 安装 kafka
192.168.1.102,192.168.1.103 两台服务器分别安装配置 kafka
- # 解压到 / usr/local/kafka_2.11-2.0.1
- >tar -zxvf kafka_2.11-2.0.1.tgz -C /usr/local/kafka_2.11-2.0.1
- >cd /usr/local/kafka_2.11-2.0.1/config/
- # 修改以下配置文件
- # 注: 两台服务器中 broker.id,host.name 需分别配置
- >VIM server.properties
- broker.id=1
- port = 9092
- host.name = 192.168.1.102
- log.dirs=/var/log/kafka
- log.retention.hours=1
- zookeeper.connect=192.168.1.102:2181,192.168.1.103:2181
- default.replication.factor=2
- # 启动 kafka 服务, 两台服务器中分别启动
- >cd /usr/local/kafka_2.11-2.0.1/config
- >./kafka-server-start.sh -daemon ../config/server.properties
验证 kafka 队列服务, 正常情况下在生产者端输入数据并发送, 消费者端会收到并打印数据
- # 创建消息主题
- >./kafka-topics.sh --create --zookeeper 192.168.1.102:2181 --replication-factor 1 --partitions 2 --topic logs
- # 创建消息生产者
- >./kafka-console-producer.sh --broker-list 192.168.1.102:9092 --topic logs
- # 创建消息消费者
- >./kafka-console-consumer.sh --Bootstrap-server 192.168.1.102:9092 --topic logs
3, 安装 logstash
192.168.1.104 安装配置 logstash
- # 通过 rpm 安装 logstash
- >rpm -ivh logstash-6.0.0.rpm
- # 配置数据的输入输出
- >VIM /etc/logstash/conf.d/syslog.conf
- input {
- kafka {
- bootstrap_servers => "localhost:9092"
- topics => ["logs"]# 使用上文中创建的消息主题
- }
- }
- output {
- Elasticsearch {
- hosts => ["localhost:9200"]
- index => "logs-%{ YYYY.MM.dd}"
- }
- }
- # 启动服务
- >systemctl start logstash
4, 安装 Elasticsearch
192.168.1.108 安装配置 Elasticsearch
- # 使用 rpm 方式安装软件
- >rpm -ivh Elasticsearch-6.0.0.rpm
- # 编辑配置
- >VIM /etc/Elasticsearch/Elasticsearch.YAML
- cluster.name: master-node # 集群中的名称
- node.name: master # 该节点名称
- node.master: true # 意思是该节点为主节点
- node.data: false # 表示这不是数据节点
- network.host: 0.0.0.0 # 监听全部 ip, 在实际环境中应设置为一个安全的 ip
- http.port: 9200 # es 服务的端口号
- discovery.zen.ping.unicast.hosts: ["192.168.1.105", "192.168.1.106", "192.168.1.107", "192.168.1.108"] # 配置自动发现
- # 启动服务
- >systemctl start Elasticsearch
- # 验证
- >ps aux |grep Elasticsearch
- >curl 'localhost:9200/_cluster/health?pretty'
注:"192.168.1.105", "192.168.1.106", "192.168.1.107" 按照同样方法安装配置, 但需要修改 node.name,node.master 改为 false,node.data 改为 true
5, 安装 kibana
192.168.1.108 安装配置 kibana
- >rpm -ivh kibana-6.0.0-x86_64.rpm
- # 编辑配置
- >VIM /etc/kibana/kibana.YAML
- Elasticsearch.url: "http://192.168.1.108:9200"
- logging.dest: /var/log/kibana.log
- # 创建日志文件
- >touch /var/log/kibana.log
- >chmod 777 /var/log/kibana.log
- # 启动服务
- >systemctl start kibana
- # 验证服务
- >ps aux |grep kibana
- >netstat -lntp |grep 5601
至此, 服务架构中第 2,3,4 层已安装完毕
6, 安装 filebeat(日志采集端)
192.168.1.101 安装配置 filebeat
- >rpm -ivh filebeat-6.0.0-x86_64.rpm
- # 修改或增加以下配置文件
- >vi /etc/filebeat/filebeat.YAML
- filebeat.prospectors:
- - type: log
- enabled: true
- paths:
- - /opt/*.out #日志目录
- # 日志数据输出到 kafka
- output.kafka:
- enabled: true
- hosts: ["172.17.224.159:9092"]
- topic: ecplogs
- # 启动并验证服务
- >systemctl start filebeat
- >ps axu |grep filebeat
五, 验证
用浏览器打开 kibana:http://192.168.1.108:5601
安装工作告一段落
来源: https://www.cnblogs.com/welcomer/p/9989976.html