原创

ELK基础

ELK

一、简介

1.什么是ELK?

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/

2.Elastic Stack常见架构

Elastic Stack企业级ELK架构

ELK

  • Elasticsearch: 用于数据存储和搜索的引擎。
  • Logstash: 一个用于数据收集、处理和转发的工具。
  • Kibana: 一个用于数据可视化和分析的前端接口。

ELK 堆栈常用于处理日志数据和其他结构化、非结构化数据的搜索与分析。

1727427280244

Elastic Stack企业级EFK架构

EFK

  • Elasticsearch: 同上。
  • filebeat: 一个灵活的数据收集器,可以将日志数据从不同来源收集到 Elasticsearch。
  • Kibana: 同上。

EFK 堆栈使用 filebeat替代 Logstash,通常会被认为在性能和资源消耗方面更为高效,尤其在 Kubernetes 环境中非常流行。

1727427408087

Elastic Stack企业级ELFK架构

ELFK

  • Elasticsearch: 同上。
  • Logstash: 同上。
  • Filebeat: 一个轻量级的日志收集器,专门用于转发和集中化日志数据。
  • Kibana: 同上。

ELFK 堆栈使用 Filebeat 来收集日志,Filebeat 协同 Elasticsearch 和 Kibana 提供了轻量级的解决方案,通常适用于直接从服务器转发日志到 Elasticsearch,而无需复杂的处理。Filebeat 可以轻松处理各种常见日志格式,是处理日志的有效选择。

1727427662782

二、环境准备

1.准备4台虚拟机或服务器
ip主机名cpu内存硬盘说明
192.168.47.150elk-node12c4G30G+es集群,kibana,logstash
192.168.47.151elk-node22c4G30G+es集群
192.168.47.152elk-node32c4G30G+es集群
192.168.47.153elk-nginx2c4G30G+nginx,filebeat日志收集
2.域名解析
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

三、ELFK基于RPM包部署

1.下载地址
#创建目录下载包
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
2.elasticsearch集群部署
1.安装elasticsearch

elk-node1,elk-node2,elk-node3,3台节点都安装

yum -y install elasticsearch-7.17.3-x86_64.rpm
2.修改配置文件

节点一配置

#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.启动
#3台节点同时启动
systemctl start elasticsearch && systemctl enable elasticsearch
4.进行访问测试
http://ip:9200
3.kibana部署

只需要安装一台就行,这里部署在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

img

4.filebaet部署

部署到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
elk
  • 作者:shi(联系作者)
  • 发表时间:2024-07-12 20:43:19
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 公众号转载:请在文末添加作者公众号二维码
  • 评论