ELK是Elasticsearch(ES) , Logstash, Kibana的结合,也是一个开源和免费的工具。提供非常友好的日志分析汇总和搜索重要数据日志。
E:ElasticSearch(ES)可以对数据进行存储和快速搜索,它和Redis一样,存储的数据是存放在内存中的,常用于大量热点数据的存储,搜索和分析,比如电商的商品信息等。
L:Logstash它是一个数据收集引擎,(ELK中主要就是用来收集日志)主要是对数据的收集,解析,然后把数据发送给ElasticSearch。
K:Kibana可以为Elasticsearch 的提供一个可视化的页面,对数据进行分析,查看,还有各式各样的报表,仪表盘,对数据进行筛选过滤等等。
在旧的称号中叫做ELK,在新的称号中叫做Elastic Stack。Elastic Stack包含了(ElasticSearch,Logstash,Kibana,Beats)也简称ELK Stack
官网地址:https://www.elastic.co/
Elastic Stack企业级ELK架构
ELK:
ELK 堆栈常用于处理日志数据和其他结构化、非结构化数据的搜索与分析。
Elastic Stack企业级EFK架构
EFK:
EFK 堆栈使用 filebeat替代 Logstash,通常会被认为在性能和资源消耗方面更为高效,尤其在 Kubernetes 环境中非常流行。
Elastic Stack企业级ELFK架构
ELFK:
ELFK 堆栈使用 Filebeat 来收集日志,Filebeat 协同 Elasticsearch 和 Kibana 提供了轻量级的解决方案,通常适用于直接从服务器转发日志到 Elasticsearch,而无需复杂的处理。Filebeat 可以轻松处理各种常见日志格式,是处理日志的有效选择。
ip | 主机名 | cpu | 内存 | 硬盘 | 说明 |
---|---|---|---|---|---|
192.168.47.150 | elk-node1 | 2c | 4G | 30G+ | es集群,kibana,logstash |
192.168.47.151 | elk-node2 | 2c | 4G | 30G+ | es集群 |
192.168.47.152 | elk-node3 | 2c | 4G | 30G+ | es集群 |
192.168.47.153 | elk-nginx | 2c | 4G | 30G+ | nginx,filebeat日志收集 |
cat >> /etc/hosts <<'EOF'
192.168.47.150 elk-node1
192.168.47.151 elk-node2
192.168.47.152 elk-node3
192.168.47.153 elk-nginx
EOF
#创建目录下载包
mkdir -p /opt/soft/elfk && cd /opt/soft/elfk
#3台node都需要下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.3-x86_64.rpm
#在nginx节点下载
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.3-x86_64.rpm
#node1上下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.17.3-x86_64.rpm
#node1上下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.3-x86_64.rpm
elk-node1,elk-node2,elk-node3,3台节点都安装
yum -y install elasticsearch-7.17.3-x86_64.rpm
节点一配置
#vim /etc/elasticsearch/elasticsearch.yml
#集群名
cluster.name: escluster
#节点名称
node.name: elk-node1
#数据目录
path.data: /var/lib/elasticsearch
#日志存放路径
path.logs: /var/log/elasticsearch
#网络配置
network.host: 0.0.0.0
#端口配置
http.port: 9200
#集群配置
discovery.seed_hosts: ["elk-node1", "elk-node2", "elk-node3"]
#初始化master选举
cluster.initial_master_nodes: ["elk-node1", "elk-node2", "elk-node3"]
节点二配置
#vim /etc/elasticsearch/elasticsearch.yml
#集群名
cluster.name: escluster
#节点名称
node.name: elk-node2
#数据目录
path.data: /var/lib/elasticsearch
#日志存放路径
path.logs: /var/log/elasticsearch
#网络配置
network.host: 0.0.0.0
#端口配置
http.port: 9200
#集群配置
discovery.seed_hosts: ["elk-node1", "elk-node2", "elk-node3"]
#初始化master选举
cluster.initial_master_nodes: ["elk-node1", "elk-node2", "elk-node3"]
节点三配置
#vim /etc/elasticsearch/elasticsearch.yml
#集群名
cluster.name: escluster
#节点名称
node.name: elk-node3
#数据目录
path.data: /var/lib/elasticsearch
#日志存放路径
path.logs: /var/log/elasticsearch
#网络配置
network.host: 0.0.0.0
#端口配置
http.port: 9200
#集群配置
discovery.seed_hosts: ["elk-node1", "elk-node2", "elk-node3"]
#初始化master选举
cluster.initial_master_nodes: ["elk-node1", "elk-node2", "elk-node3"]
#3台节点同时启动
systemctl start elasticsearch && systemctl enable elasticsearch
http://ip:9200
只需要安装一台就行,这里部署在elk-node1
yum -y install kibana-7.17.3-x86_64.rpm
修改配置文件
#vim /etc/kibana/kibana.yml
#服务端口号
server.port: 5601
#配置主机
server.host: "0.0.0.0"
#服务名
server.name: "kibana-elk"
#es集群
elasticsearch.hosts: ["http://192.168.47.150:9200","http://192.168.47.151:9200","http://192.168.47.152:9200"]
#国际化
i18n.locale: "zh-CN"
启动
systemctl start kibana && systemctl enable kibana
访问
http://ip:5601
部署到elk-nginx,因为需要收集nginx日志,可以自行安装nginx和tomcat进行日志收集,收集方式参考官网https://www.elastic.co/guide/en/beats/filebeat/7.17/filebeat-input-filestream.html
安装filebeat
yum -y install filebeat-7.17.3-x86_64.rpm
filebeat日志收集
#创建一个目录存放收集配置
mkdir -p /etc/filebeat/config
#编写配置文件vim /etc/filebeat/config/nginx-elk.yml
#日志来源
filebeat.inputs:
#日志收集方式可以是log或者filestream等
- type: log
#是否开启
enable: true
#日志收集路径
paths:
- /var/log/nginx/access.log
tags: ['nginx-access']
#多实例收集
- type: log
enable: true
paths:
- /tomcat8/logs/catalina.out
tags: ['tomcat-catalina']
#日志输出到哪里,可以直接放在es或者logstash
output.elasticsearch:
#配置es集群地址
hosts: ["http://192.168.47.150:9200","http://192.168.47.151:9200","http://192.168.47.152:9200"]
#是否开启
enable: ture
#索引
indices:
- index: "web-nginx-access-%{+yyyy.MM.dd}"
when.contains:
tags: "nginx-access"
- index: "web-tomcat-catalina-%{+yyyy.MM.dd}"
when.contains:
tags: "tomcat-catalina"
#设置索引模板名称
setup.template.name: "web"
#索引模板匹配模式
setup.template.pattern: "web*"
#设置分片和副本
setup.template.settings:
#分片设置
index.number_of_shards: 3
#副本设置
number_of_replicas: 1
启动
filebeat -e -c /etc/filebeat/config/nginx-elk.yml
评论