Elasticsearch+filefeat+Kibana(EFK)架构学习

一. 安装ES7集群

  1. 准备三台服,最少配置2core4G,磁盘空间最少20G,并关闭防火墙
  2. 设置集群免密登录,方便scp文件等操作参考集群免密登录方法
  3. 下载es7的elasticsearch-7.17.3-x86_64.rpm包
  4. 安装
yum -y localinstal elasticsearch-7.17.3-x86_64.rpm
  1. 修改node1配置文件
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk
node.name: elk01
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
discovery.seed_hosts: ["10.10.10.11","10.10.10.12","10.10.10.13"]
cluster.initial_master_nodes: ["10.10.10.11","10.10.10.12","10.10.10.13"]

相关参数说明:

  • cluster.name:
    集群名称,若不指定,则默认是"elasticsearch",⽇志⽂件的前缀也是集群名称。
  • node.name:
    指定节点的名称,可以⾃定义,推荐使⽤当前的主机名,要求集群唯⼀。
  • path.data:
    数据路径。
  • path.logs:
    ⽇志路径
  • network.host:
    ES服务监听的IP地址
  • discovery.seed_hosts:
    服务发现的主机列表,对于单点部署⽽⾔,主机列表和"network.host"字段置相同即可
  1. 同步配置⽂件到集群的其他节点
data_rsync.sh /etc/elasticsearch/elasticsearch.yml
并修改其他两个节点的name
  1. 删除所有临时数据
rm -rf /var/{lib,log}/elasticsearch/* /tmp/*
ll /var/{lib,log}/elasticsearch/ /tmp/
  1. 分别在三个节点启动es服务
systemctl start elasticsearch

9.验证集群状态

curl 10.10.10.11:9200/_cat/nodes?v

在这里插入图片描述

二,在11机器上安装kibana

  1. 下载kibana的rpm包,并安装
yum -y localinstall kibana-7.17.3-x86_64.rpm 
  1. 修改kibana的配置⽂件
vim /etc/kibana/kibana.yml
...
server.host: "10.10.10.11"
server.name: "kibana-server"
elasticsearch.hosts:
["http://10.10.10.11:9200","http://10.10.10.12:9200","http://10.10.10.13:9200"]
i18n.locale: "en"
  1. 启动kibana服务
systemctl enable --now kibana
systemctl status kibana
systemctl start kibana

在这里插入图片描述

kibana的使用

  1. 下图1处是资源监控,监控节点,数据等,2处是stack管理
    在这里插入图片描述
  2. 点开stack管理,可以看见里面有如下图,1处是索引管理2、处是索引匹配规则,可以在索引pattern设置匹配的pattern,即可在discover里面显示匹配的模板。
    在这里插入图片描述

三,filebeat使用和配置模板

  1. 安装filebeat
yum -y localinstall filebeat-7.17.3-x86_64.rpm
  1. 编写配置文件,在/etc/filebeat/config目录下
mkdir /etc/filebeat/config
cat > /etc/filebeat/config/01-stdin-to-console.yml <<'EOF'
# 指定输⼊的类型
filebeat.inputs:
# 指定输⼊的类型为"stdin",表示标准输⼊
- type: stdin
# 指定输出的类型
output.console:
 # 打印漂亮的格式
 pretty: true
EOF

(2)运⾏filebeat实例,即可在控制台输入,控制台打印处理后的结果

filebeat -e -c /etc/filebeat/config/01-stdin-to-console.yml 

filebeat的几种模式和配置

  1. 直接控制台输入输出,就是上面配置。stadio格式
  2. log格式,直接读取log文件,并输出控制台,tags就是一个标签,用作判断,field是自定义的字段
filebeat.inputs:
- type: log
 # 是否启动当前的输⼊类型,默认值为true
 enabled: true
 # 指定数据路径
 paths:
 - /tmp/test.log
 - /tmp/*.txt
 # 给当前的输⼊类型搭上标签
 tags: ["测试","容器运维","DBA运维","SRE运维⼯程师"]
 # ⾃定义字段
 fields:
   school: "出去了化工大学"
- type: log
 enabled: true
 paths:
 - /tmp/test/*/*.log
 tags: ["kafka","云原⽣开发"]
 fields:
   name: "测试"
   hobby: "linux,抖⾳"
 # 将⾃定义字段的key-value放到顶级字段.
 # 默认值为false,会将数据放在⼀个叫"fields"字段的下⾯.
 fields_under_root: true
output.console:
 pretty: true
  1. 将输出写入elasticsearch
filebeat.inputs:
- type: log
 # 是否启动当前的输⼊类型,默认值为true
 enabled: true
 # 指定数据路径
 paths:
 - /tmp/test.log
 - /tmp/*.txt
 # 给当前的输⼊类型搭上标签
 tags: ["测试","容器运维","DBA运维","SRE运维⼯程师"]
 # ⾃定义字段
 fields:
   school: "出去了化工大学"
- type: log
 enabled: true
 paths:
 - /tmp/test/*/*.log
 tags: ["kafka","云原⽣开发"]
 fields:
   name: "测试"
   hobby: "linux,抖⾳"
 # 将⾃定义字段的key-value放到顶级字段.
 # 默认值为false,会将数据放在⼀个叫"fields"字段的下⾯.
 fields_under_root: true
output.elasticsearch:
 hosts:["http://10.10.10.11:9200","http://10.10.10.12:9200","http://10.10.10.13:9200"]

即可在kibana根据配置好的模板和pattern查询相应的日志记录
在这里插入图片描述
4. 配置日志过滤

 include_lines: ['^ERROR', '^WARN','DANGER']
 # 指定⿊名单,排除指定的内容
 exclude_lines: ['^DBUG',"TEST"]
  1. 自定义索引模板名称
filebeat.inputs:
- type: log
 # 是否启动当前的输⼊类型,默认值为true
 enabled: true
 # 指定数据路径
 paths:
 - /tmp/test.log
 - /tmp/*.txt
 # 给当前的输⼊类型搭上标签
 tags: ["测试","容器运维","DBA运维","SRE运维⼯程师"]
 # ⾃定义字段
 fields:
   school: "出去了化工大学"
- type: log
 enabled: true
 paths:
 - /tmp/test/*/*.log
 tags: ["kafka","云原⽣开发"]
 fields:
   name: "测试"
   hobby: "linux,抖⾳"
 # 将⾃定义字段的key-value放到顶级字段.
 # 默认值为false,会将数据放在⼀个叫"fields"字段的下⾯.
 fields_under_root: true
output.elasticsearch:
 hosts:["http://10.10.10.11:9200","http://10.10.10.12:9200","http://10.10.10.13:9200"]
 index: "es-linux-eslog-%{+yyyy.MM.dd}"
# 禁⽤索引⽣命周期管理
setup.ilm.enabled: false
# 设置索引模板的名称
setup.template.name: "es-linux-eslog"
# 设置索引模板的匹配模式
setup.template.pattern: "es-linux-eslog*"
  1. 多个索引,写入多个索引案例
filebeat.inputs:
- type: log
 # 是否启动当前的输⼊类型,默认值为true
 enabled: true
 # 指定数据路径
 paths:
 - /tmp/test.log
 - /tmp/*.txt
 # 给当前的输⼊类型搭上标签
 tags: ["测试","容器运维","DBA运维","SRE运维⼯程师"]
 # ⾃定义字段
 fields:
   school: "出去了化工大学"
- type: log
 enabled: true
 paths:
 - /tmp/test/*/*.log
 tags: ["kafka","云原⽣开发"]
 fields:
   name: "测试"
   hobby: "linux,抖⾳"
 # 将⾃定义字段的key-value放到顶级字段.
 # 默认值为false,会将数据放在⼀个叫"fields"字段的下⾯.
 fields_under_root: true
output.elasticsearch:
 hosts:["http://10.10.10.11:9200","http://10.10.10.12:9200","http://10.10.10.13:9200"]
  indices:
 - index: "es-linux-eslog-%{+yyyy.MM.dd}"
 # 匹配指定字段包含的内容
   when.contains:
     tags: "DBA运维"
 - index: "es-linux-eslog-DBA-%{+yyyy.MM.dd}"
   when.contains:
     tags: "kafka"
 
#
# 禁⽤索引⽣命周期管理
setup.ilm.enabled: false
# 设置索引模板的名称
setup.template.name: "es-linux-eslog"
# 设置索引模板的匹配模式
setup.template.pattern: "es-linux-eslog*"

  1. 日志的多行匹配,参考官方图
    在这里插入图片描述
multiline.type: pattern
# 指定匹配模式
#表示收集[开头到下一个[开头的位置的日志
 multiline.pattern: '^\['
# 下⾯2个参数参考官⽅架构图即可,如上图所示。
 multiline.negate: true
 multiline.match: after
<think>好的,用户现在需要安装Elasticsearch、Fluentd和Kibana的部署文档,也就是通常所说的EFK堆栈。首先,我要确定用户的需求是什么。他们可能是在搭建一个日志管理系统,用来收集、存储和可视化日志数据。EFK是常用的组合,Fluentd负责日志收集和传输,Elasticsearch作为存储和搜索引擎,Kibana则提供可视化界面。 接下来,我需要考虑用户的技术背景。如果他们要求部署文档,可能有一定的系统管理经验,但可能对EFK的具体配置步骤不太熟悉。因此,文档需要详细但不过于复杂,步骤清晰,命令明确,避免使用晦涩难懂的术语。同时,用户可能是在Linux环境下部署,所以需要针对常见的Linux发行版,比如Ubuntu或CentOS。 然后,我要回忆之前用户的问题历史。之前他们询问过Filebeat处理多行日志的问题,现在转而使用Fluentd,可能是因为Filebeat在某些复杂场景下不能满足需求,比如更灵活的日志处理或插件支持。这也意味着用户可能对日志处理有较高的要求,需要更强大的工具,所以Fluentd的配置部分需要详细说明,特别是多行日志的处理,因为之前的问题涉及到这一点。 接下来,整理安装步骤。通常,EFK的部署包括安装每个组件,配置它们之间的通信,以及验证是否正常工作。需要注意各个组件的版本兼容性,推荐使用较新的稳定版本。比如,Elasticsearch 8.x,Kibana 8.x,Fluentd的td-agent 4.x。同时,安全性方面,Elasticsearch 8默认启用SSL,需要生成证书,或者根据用户需求调整安全设置。 对于Fluentd的配置,需要确保它能够正确地将日志发送到Elasticsearch。可能需要安装特定的插件,比如fluent-plugin-elasticsearch。此外,用户之前提到过多行日志处理,所以在Fluentd的配置中需要包含处理多行日志的部分,比如使用multiline插件,或者通过正则表达式来合并日志事件。 还需要考虑系统依赖和前置条件,比如Java环境对于Elasticsearch是必需的,需要检查是否安装合适版本的JDK。此外,系统内核参数的调整,比如vm.max_map_count,这对于Elasticsearch的性能和稳定性很重要。 在文档结构上,应该分步骤进行,每个组件的安装配置单独成章,最后整合验证。每个步骤给出具体的命令和配置文件示例,方便用户复制粘贴。同时,提供常见的故障排除方法,比如服务无法启动时的日志检查,端口占用情况,以及如何测试连接。 另外,用户可能是在生产环境部署,所以需要提到安全最佳实践,比如设置Elasticsearch的密码,配置防火墙规则,限制访问权限等。如果用户是在测试环境,可能需要简化安全配置,比如暂时禁用SSL,但需要明确指出不建议在生产环境这样做。 最后,验证部分需要指导用户如何通过Kibana界面查看日志,确认数据流动是否正常。可能还需要说明如何创建索引模式,进行基本的搜索和可视化操作,确保整个EFK堆栈运作正常。 总结一下,用户的真实需求不仅仅是安装步骤,而是能够顺利搭建一个可用的EFK日志系统,可能需要处理复杂日志,特别是多行日志的情况。因此,文档需要全面,涵盖安装、配置、安全、验证和常见问题处理,同时针对用户之前的问题,强调Fluentd在多行日志处理上的配置,确保他们能够顺利迁移或扩展现有的日志管理方案。</think>以下是 **Elasticsearch + Fluentd + Kibana (EFK)** 的详细部署文档,适用于 Linux 环境(Ubuntu/CentOS): --- ### 一、**前置条件** 1. 操作系统:Ubuntu 20.04+ / CentOS 7+ 2. 内存:至少 4GB(推荐 8GB+) 3. Java 环境:Elasticsearch 需要 JDK 11+ ```bash sudo apt update && sudo apt install openjdk-11-jdk -y # Ubuntu sudo yum install java-11-openjdk-devel -y # CentOS ``` --- ### 二、**Elasticsearch 部署** #### 1. 安装 Elasticsearch 8.x ```bash # 添加 El
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值