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


目录

▪ 用途
▪ 实验架构
▪ EFK软件安装
▪ elasticsearch配置
▪ filebeat配置
▪ kibana配置
▪ 启动服务
▪ kibana界面配置
▪ 测试
▪ 后续文章


用途

▷ 通过filebeat实时收集nginx访问日志、传输至elasticsearch集群
▷ filebeat将收集的日志传输至elasticsearch集群
▷ 通过kibana展示日志


实验架构

▷ 服务器配置

▷ 架构图

我自己的实验ip:el-192.1168.93.31。192.168.93.38。192.168.93.39  filebeat:192.168.93.40  kibana:192.168.93.32

后边都已此为准


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教程》系列后续文章中提供,敬请关注!


在这里启动时我遇到的问题是el和kibana启动不了

解决办法引用下边

主要出现下面三个错误

ERROR: [3] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
[2]: max number of threads [3780] for user [esyonghu] is too low, increase to at least [4096]
[3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[2018-12-12T21:54:57,353][INFO ][o.e.n.Node               ] [PlbSkhz] stopping ...
[2018-12-12T21:54:57,413][INFO ][o.e.n.Node               ] [PlbSkhz] stopped
[2018-12-12T21:54:57,413][INFO ][o.e.n.Node               ] [PlbSkhz] closing ...
[2018-12-12T21:54:57,473][INFO ][o.e.n.Node               ] [PlbSkhz] closed
[2018-12-12T21:54:57,488][INFO ][o.e.x.m.j.p.NativeController] [PlbSkhz] Native controller process has stopped - no new native processes can be started
解决方法

[root@localhost ~]# vi /etc/security/limits.conf
在文件的末尾加上我们之前创建的用户

elasticsearchsoft nofile 65536
elasticsearch hard nofile 65536
elasticsearch soft nproc 4096
elasticsearch hard nproc 4096
进入到下面文件夹

[root@localhost ~]# cd /etc/security/limits.d
[root@localhost limits.d]# ll
total 4
-rw-r--r--. 1 root root 191 Nov  6  2016 20-nproc.conf
 
[root@localhost limits.d]# vi 20-nproc.conf 
 
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
 
*          soft    nproc     4096
root       soft    nproc     unlimited
~                                                                                                                            
~  
将上面内容的*号改成创建时创建的用户名

# See rhbz #432903 for reasoning.
 
esyonghu   soft    nproc     4096
root       soft    nproc     unlimited
修改下面文件加上内容

[root@localhost security]# vi /etc/sysctl.conf 
vm.max_map_count = 655360
对于上面的内容让其生效

[root@localhost security]# sysctl -p
vm.max_map_count = 655360

原文链接:https://blog.csdn.net/zhanghe687/article/details/84979833

记得el服务器的内存最低也是4G不然会各种报错,CPU最好为2,处理器为4.

还有记得全部关闭防火墙。

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的数据


https://www.cnblogs.com/fzxiaomange/p/efk-getstart.html 文章来源

 
 
 
 

转载他人的efk搭建文章后边有链接和地址的更多相关文章

  1. 云端搭建Linux学习环境 链接https://edu.aliyun.com/article/19 (阿里云ECS服务器 )课堂

    云端搭建Linux学习环境 链接https://edu.aliyun.com/article/19 1. 开通云服务器 2 1.包年包月   按量付费(适合测试数据的时候) 2 2.地域   服务器数 ...

  2. android黑科技系列——解析公众号文章消息和链接文章消息自动打开原理

    一.辅助功能方案分析 关于WX的各种功能插件已经非常普遍了,而现在的插件都是依赖于Xposed框架进行的,所以个人觉得WX应该在这方便应对Xposed框架的使用防护,防止插件满天飞的现象,本文来介绍一 ...

  3. 文章目录&友情链接

    文章目录&友情链接 1:<公告:本博客开始写博文了> 2.本人网络图书馆

  4. 【转载】Docker+Kubernetes 干货文章精选

    主要涉及到以下关键字: K8S.Docker.微服务.安装.教程.网络.日志.存储.安全.工具.CI/CD.分布式.实践.架构等: 以下盘点2018年一些精选优质文章! 漫画形式: 漫画:小黄人学 S ...

  5. [转载] Redis集群搭建最佳实践

    转载自http://blog.csdn.net/sweetvvck/article/details/38315149?utm_source=tuicool 要搭建Redis集群,首先得考虑下面的几个问 ...

  6. (转载) android快速搭建项目积累

    android快速搭建项目积累 2016-04-05 20:07 519人阅读 评论(0) 收藏 举报  分类: android优化(8)   Rx技术(5)  版权声明:本文为博主原创文章,未经博主 ...

  7. [转载]Sublime Text 3 搭建 React.js 开发环境

    [转载]Sublime Text 3 搭建 React.js 开发环境 Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境. 1. babe ...

  8. [转载]在Windows下搭建Android开发环境

    http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...

  9. docker微服务部署之:二、搭建文章微服务项目

    docker微服务部署之:一,搭建Eureka微服务项目 一.新增demo_article模块,并编写代码 右键demo_parent->new->Module->Maven,选择M ...

随机推荐

  1. 启动模式:uefi, legacy,以及GRUB命令使用

    机器启动模式:uefi, legacy 设置入口:BIOS:boot mode 磁盘分区表格式: gpt uefi所使用(此种模式下,grub只能识别gpt格式的boot引导项) mbr legacy ...

  2. MTV和MVC的区别

    著名的MVC模式:方便解藕 所谓的MVC就是把web应用分为三层 1.模型层: model     负责业务对象和数据库的对象(ORM)的映射 2.视图层       views 负责与用户的交互(书 ...

  3. JAVA中的反射机制 详解

    主要介绍以下几方面内容 理解 Class 类 理解 Java 的类加载机制 学会使用 ClassLoader 进行类加载 理解反射的机制 掌握 Constructor.Method.Field 类的用 ...

  4. [BZOJ] 地精部落

    问题描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H 可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中 Hi ...

  5. Test 6.23 T1 扫雷

    题目背景 题目描述 输入格式 输出格式 样例输入输出 数据范围 解析 我们设两个作弊器的参数分别为\((a_1,b_1)\)和\((a_2,b_2)\),那么设 \[ S1=\frac{a_1}{b_ ...

  6. Python3解leetcode First Bad Version

    问题描述: You are a product manager and currently leading a team to develop a new product. Unfortunately ...

  7. ubuntu 18.04下Chromium设置为系统代理

    前言 在ubuntu 18.04下挂上ss后firefox能直接上google了但是chromium上不去 会出现下面两种情况 # This site can't be reached xxxxxx ...

  8. jpa remove

    直接使用em.remove会报错,IllegalArgumentException: Removing a detached instance 即对象处于脱管的状态,使用merge使之被session ...

  9. HBuilder打包app(vue项目)

    一.测试项目是否可以正确运行    指令:npm run dev 首先我们先建立一个vue的项目,本人用的是vue-cli随便建立的,然后运行项目 不必非得是像我这样的,这一步的目的只是测试一下咱们的 ...

  10. vue组件传值之父传子

    1.父组件给子组件传值  home父组件  header子组件  关键字props home代码 <template> <div> <v-header :title=&q ...