专栏首页小慢哥Linux运维EFK教程 - EFK快速入门指南
原创

EFK教程 - EFK快速入门指南

通过部署elasticsearch(三节点)+filebeat+kibana快速入门EFK,并搭建起可用的demo环境测试效果

作者:“发颠的小狼”,欢迎转载与投稿


目录

▪ 用途

▪ 实验架构

▪ EFK软件安装

▪ elasticsearch配置

▪ filebeat配置

▪ kibana配置

▪ 启动服务

▪ kibana界面配置

▪ 测试

▪ 后续文章


用途

▷ 通过filebeat实时收集nginx访问日志、传输至elasticsearch集群

▷ filebeat将收集的日志传输至elasticsearch集群

▷ 通过kibana展示日志


实验架构

▷ 服务器配置

▷ 架构图


EFK软件安装

版本说明

▷ elasticsearch 7.3.2

▷ filebeat 7.3.2

▷ kibana 7.3.2

注意事项

▷ 三个组件版本必须一致

▷ elasticsearch必须3台以上且总数量为单数

安装路径

▷ /opt/elasticsearch

▷ /opt/filebeat

▷ /opt/kibana

elasticsearch安装:3台es均执行相同的安装步骤

mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
tar -zxvf elasticsearch-7.3.2-linux-x86_64.tar.gz
mv elasticsearch-7.3.2 /opt/elasticsearch
useradd elasticsearch -d /opt/elasticsearch -s /sbin/nologin
mkdir -p /opt/logs/elasticsearch
chown elasticsearch.elasticsearch /opt/elasticsearch -R
chown elasticsearch.elasticsearch /opt/logs/elasticsearch -R

# 限制一个进程可以拥有的VMA(虚拟内存区域)的数量要超过262144,不然elasticsearch会报max virtual memory areas vm.max_map_count [65535] is too low, increase to at least [262144]
echo "vm.max_map_count = 655350" >> /etc/sysctl.conf
sysctl -p

filebeat安装

mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.2-linux-x86_64.tar.gz
mkdir -p /opt/logs/filebeat/
tar -zxvf filebeat-7.3.2-linux-x86_64.tar.gz
mv filebeat-7.3.2-linux-x86_64 /opt/filebeat

kibana安装

mkdir -p /opt/software && cd /opt/software
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.3.2-linux-x86_64.tar.gz
tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz
mv kibana-7.3.2-linux-x86_64 /opt/kibana
useradd kibana -d /opt/kibana -s /sbin/nologin
chown kibana.kibana /opt/kibana -R

nginx安装(用于生成日志,被filebeat收集)

# 只在192.168.1.11安装
yum install -y nginx
/usr/sbin/nginx -c /etc/nginx/nginx.conf

elasticsearch配置

▷ 192.168.1.31 /opt/elasticsearch/config/elasticsearch.yml

# 集群名字
cluster.name: my-application

# 节点名字
node.name: 192.168.1.31

# 日志位置
path.logs: /opt/logs/elasticsearch

# 本节点访问IP
network.host: 192.168.1.31

# 本节点访问
http.port: 9200

# 节点运输端口
transport.port: 9300

# 集群中其他主机的列表
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 启用跨域资源共享
http.cors.enabled: true
http.cors.allow-origin: "*"

# 只要有2台数据或主节点已加入集群,就可以恢复
gateway.recover_after_nodes: 2

▷ 192.168.1.32 /opt/elasticsearch/config/elasticsearch.yml

# 集群名字
cluster.name: my-application

# 节点名字
node.name: 192.168.1.32

# 日志位置
path.logs: /opt/logs/elasticsearch

# 本节点访问IP
network.host: 192.168.1.32

# 本节点访问
http.port: 9200

# 节点运输端口
transport.port: 9300

# 集群中其他主机的列表
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 启用跨域资源共享
http.cors.enabled: true
http.cors.allow-origin: "*"

# 只要有2台数据或主节点已加入集群,就可以恢复
gateway.recover_after_nodes: 2

▷ 192.168.1.33 /opt/elasticsearch/config/elasticsearch.yml

# 集群名字
cluster.name: my-application

# 节点名字
node.name: 192.168.1.33

# 日志位置
path.logs: /opt/logs/elasticsearch

# 本节点访问IP
network.host: 192.168.1.33

# 本节点访问
http.port: 9200

# 节点运输端口
transport.port: 9300

# 集群中其他主机的列表
discovery.seed_hosts: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 首次启动全新的Elasticsearch集群时,在第一次选举中便对其票数进行计数的master节点的集合
cluster.initial_master_nodes: ["192.168.1.31", "192.168.1.32", "192.168.1.33"]

# 启用跨域资源共享
http.cors.enabled: true
http.cors.allow-origin: "*"

# 只要有2台数据或主节点已加入集群,就可以恢复
gateway.recover_after_nodes: 2

filebeat配置

192.168.1.11 /opt/filebeat/filebeat.yml

# 文件输入
filebeat.inputs:
  # 文件输入类型
  - type: log
    # 开启加载
    enabled: true
    # 文件位置
    paths:
      - /var/log/nginx/access.log
    # 自定义参数
    fields:
      type: nginx_access  # 类型是nginx_access,和上面fields.type是一致的

# 输出至elasticsearch
output.elasticsearch:
  # elasticsearch集群
  hosts: ["http://192.168.1.31:9200",
          "http://192.168.1.32:9200",
          "http://192.168.1.33:9200"]

  # 索引配置
  indices:
    # 索引名
    - index: "nginx_access_%{+yyy.MM}"
      # 当类型是nginx_access时使用此索引
      when.equals:
        fields.type: "nginx_access"

# 关闭自带模板
setup.template.enabled: false

# 开启日志记录
logging.to_files: true
# 日志等级
logging.level: info
# 日志文件
logging.files:
  # 日志位置
  path: /opt/logs/filebeat/
  # 日志名字
  name: filebeat
  # 日志轮转期限,必须要2~1024
  keepfiles: 7
  # 日志轮转权限
  permissions: 0600

kibana配置

192.168.1.21 /opt/kibana/config/kibana.yml

# 本节点访问端口
server.port: 5601

# 本节点IP
server.host: "192.168.1.21"

# 本节点名字
server.name: "192.168.1.21"

# elasticsearch集群IP
elasticsearch.hosts: ["http://192.168.1.31:9200",
                      "http://192.168.1.32:9200",
                      "http://192.168.1.33:9200"]

启动服务

# elasticsearch启动(3台es均启动)
sudo -u elasticsearch /opt/elasticsearch/bin/elasticsearch

# filebeat启动
/opt/filebeat/filebeat -e -c /opt/filebeat/filebeat.yml -d "publish"

# kibana启动
sudo -u kibana /opt/kibana/bin/kibana -c /opt/kibana/config/kibana.yml

上面的启动方法是位于前台运行。systemd配置方法,会在《EFK教程》系列后续文章中提供,敬请关注!


kibana界面配置

1️⃣ 使用浏览器访问192.168.1.21:5601,看到以下界面表示启动成功

2️⃣ 点"Try our sample data"

3️⃣ "Help us improve the Elastic Stack by providing usage statistics for basic features. We will not share this data outside of Elastic"点"no”

4️⃣ "Add Data to kibana"点"Add data"

5️⃣ 进入视图


测试

访问nginx,生成日志

curl -I "http://192.168.1.11"

在kibana上查看数据

1️⃣ 创建索引模板

2️⃣ 输入你要创建的索引模板的名字

3️⃣ 查看之前CURL的数据


后续文章

本文是《EFK教程》系列文章的第一篇,后续EFK文章将逐步发布,包含角色分离、性能优化等许多干货,敬请关注!

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • EFK教程(5) - ES集群开启用户认证

    ▷ 在第一篇《EFK教程 - 快速入门指南》中,阐述了EFK的安装部署,其中ES的架构为三节点,即master、ingest、data角色同时部署在三台服务器上...

    小慢哥Linux运维
  • EFK教程(3) - ElasticSearch多实例部署

    ▷ 在第一篇《EFK教程 - 快速入门指南》中,阐述了EFK的安装部署,其中ES的架构为三节点,即master、ingest、data角色同时部署在三台服务器上...

    小慢哥Linux运维
  • EFK教程 - ElasticSearch高性能高可用架构

    通过将elasticsearch的data、ingest、master角色进行分离,搭建起高性能+高可用的ES架构

    小慢哥Linux运维
  • Kibana配置和启动

    1、配置 server.port: 5601 server.host: "127.0.0.1" server.basePath: "" server.maxPa...

    苦咖啡
  • Net作业调度(五)—quartz.net动态添加job设计

    蘑菇先生
  • openCV 简单物体识别

    本篇的例子介绍使用numpy和 OpenCV ,仅根据识别对象的尺寸和颜色进行简单的物体识别。专业的图像识别须借助机器学习(含神经网络即深度学习),本篇不做介绍...

    用户6021899
  • 小米乐视撕逼,真把用户当傻子?

    昨日小米“海”纳百川发布会上雷军爆出雷语:小米电视内容第一,随后乐视回应,你来我往,开启新一轮撕逼大战。响铃这货闲的蛋疼看完对骂内容后评论3句:

    曾响铃
  • python文件读写的基本操作(一)

    本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地...

    用户7054460
  • 【Pre-Training】GPT:通过生成式预训练改善语言理解

    今天阅读的是 OpenAI 2018 年的论文《Improving Language Understanding by Generative Pre-Train...

    阿泽 Crz
  • 太实用了!自己动手写软件——密码验证器的界面实现

    我们今天的目标很简单,就是先把软件的界面设计和写出来,并不关心每一个按钮和输入框之后的功能实现。我设计一个这样的界面(极其简单,只是实现功能)

    菜鸟小白的学习分享

扫码关注云+社区

领取腾讯云代金券