docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)

news2024/11/16 13:44:35

EFK日志系统搭建

  • EFK日志系统介绍
  • 功能需求
  • 搭建elasticsearch集群
    • 规划
    • 前提
    • 部署
    • 核对
    • 证书及权限

EFK日志系统介绍

Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。

Beats 是数据采集的得力工具。将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然后便可在 Elastisearch 中集中处理数据。如果需要更加强大的处理性能,Beats 还能将数据输送到 Logstash 进行转换和解析。

Kibana 核心产品搭载了一批经典功能:柱状图、线状图、饼图、旭日图,等等。不仅如此,您还可以使用 Vega 语法来设计独属于您自己的可视化图形。所有这些都利用 Elasticsearch 的完整聚合功能。

Elasticsearch 通常与 Kibana 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 允许你通过 web 界面来浏览 Elasticsearch 日志数据。


注意:由于全篇字稿较长,做了如下拆分
docker一键部署EFK系统(elasticsearch filebeat kibana metricbeat es-head)
【EFK日志系统】docker一键部署kibana、es-head
【EFK日志系统】docker一键部署filebeat、metricbeat
【EFK日志系统】在kibana操作索引模板、生命周期、管道等

功能需求

现阶段我们有11台服务器,需要对应用、系统、中间件的日志进行追踪监控,通过filebeat、metricbeat采集,es检索,kibana可视化展示整套流程来监控日志、分析日志

  1. 一键部署各个服务
  2. 全流程有密码访问控制
  3. 日志信息结构化处理,精简日志
  4. es集群化配置,一主两从,同时接收

在这里插入图片描述

搭建elasticsearch集群

规划

ip为假想值

es01:172.23.165.185
es02:172.23.165.186
es03:172.23.165.187

前提

1.在官网查看您想要安装使用的版本,拉取该版本
elasticsearch官网

在服务器执行命令即可,我们这里选取的是7.10.0版本

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.0

2.修改内存映射数量
在 /etc/sysctl.conf 文件中添加或修改max_map_count:

vm.max_map_count=262144

退出而后执行

sudo sysctl -p

3.创建网络(所有节点在同一网络)

docker network create es-net

查看该网络下的服务

docker network inspect es-net

部署

首先我们在172.23.165.185合适的位置创建es01文件夹

mkdir es01
cd es01

1.编写docker-compose.yml

version: '3'
services:
  elasticsearch:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
    container_name: elasticsearch
    restart: always
    environment:
      - node.name=es-node-1
      - network.publish_host=172.23.165.185
      - network.host=0.0.0.0
      - discovery.seed_hosts=172.23.165.185,172.23.165.186,172.23.165.187
      - cluster.initial_master_nodes=172.23.165.185,172.23.165.186,172.23.165.187
      - cluster.name=es-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
  #  volumes:
      #- ./data:/usr/share/elasticsearch/data:rw
      #- ./config:/usr/share/elasticsearch/config:rw
      #- ./plugins:/usr/share/elasticsearch/plugins:rw
      #- ./logs:/usr/share/elasticsearch/logs:rw
    ports:
      - 9200:9200
      - 9300:9300
    networks:
      - es-net
networks:
  es-net:
    external: true

2.编写Dockerfile

FROM docker.elastic.co/elasticsearch/elasticsearch:7.10.0

#COPY ./elasticsearch.yml /usr/share/elasticsearch/config/

3.一键启动

docker-compose up -d
或者 docker -f docker-compose.yml up -d

执行后docker ps查看容器是否启动且正常
在这里插入图片描述

4.copy容器文件

容器正常后执行如下

docker cp -a elasticsearch:/usr/share/elasticsearch/config/ .
docker cp -a elasticsearch:/usr/share/elasticsearch/data .
docker cp -a elasticsearch:/usr/share/elasticsearch/logs .
docker cp -a elasticsearch:/usr/share/elasticsearch/plugins .

5.修改elasticsearch.yml

进入config目录编辑elasticsearch.yml

network.host: 0.0.0.0

path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logs

http.cors.enabled: true
http.cors.allow-origin: "*"

#xpack.security.enabled: true
#xpack.security.transport.ssl.enabled: true
#xpack.security.transport.ssl.verification_mode: certificate
#xpack.security.transport.ssl.keystore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
#xpack.security.transport.ssl.truststore.path: /usr/share/elasticsearch/config/elastic-certificates.p12
#xpack.security.transport.ssl.keystore.type: PKCS12
#xpack.security.transport.ssl.truststore.type: PKCS12

6.将Dockerfile的 # 去掉

COPY ./elasticsearch.yml /usr/share/elasticsearch/config/

7.将docker-compose.yml的 # 去掉

  - ./data:/usr/share/elasticsearch/data:rw
  - ./config:/usr/share/elasticsearch/config:rw
  - ./plugins:/usr/share/elasticsearch/plugins:rw
  - ./logs:/usr/share/elasticsearch/logs:rw

同时修改image
即注释原先的,新增镜像,“:”前是名字,后是版本号

#image: docker.elastic.co/elasticsearch/elasticsearch:7.10.0
image: elasticsearch-7.10.0:test01

然后重新启动
执行docker-compose up -d


然后在其他的服务器上重复这样的操作
只不过需要注意将其中的节点名称和hosts替换
举例
environment:
- node.name=es-node-1
- network.publish_host=172.23.165.185

node.name=es-node-2或者3
network.publish_host=172.23.165.186或者7

核对

可以执行命令或者在浏览器输入url查看集群的健康信息(注意替换你自己的ip)

1.查看单个节点的信息
终端输入:curl -X GET “http://172.23.165.185:9200”
浏览器输入:http://172.23.165.185:9200
在这里插入图片描述

2.查看集群节点健康情况
终端输入:curl -X GET “http://172.23.165.185:9200/_cluster/health?pretty”
浏览器输入:http://172.23.165.185:9200/_cluster/health?pretty

在这里插入图片描述

3.查看节点状态和信息
终端输入:curl -X GET “http://172.23.165.185:9200/_cat/nodes?v&pretty”
浏览器输入:http://172.23.165.185:9200/_cat/nodes?v&pretty

在这里插入图片描述
4.查看集群更详细的信息
终端输入:curl -X GET “http://172.23.165.185:9200/_cluster/state?pretty”
5.查看节点简单的健康视图
终端输入:curl -X GET “http://172.23.165.185:9200/_cat/health?v&pretty”


如果只是看一看玩一玩,至此就可以结束了


证书及权限

进入任意一台es容器执行下列命令

docker exec -it elasticsearch bash

bin/elasticsearch-certutil ca
 一路回车
bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
 一路回车
bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password 
 一路回车
bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
 一路回车

exit退出而后,cd config将p12复制导出来,再将其复制到其他节点的config目录下
(也就是es集群三个节点用的都是这两个.p12文件)
docker cp elasticsearch:/usr/share/elasticsearch/config/elastic-stack-ca.p12 .
docker cp elasticsearch:/usr/share/elasticsearch/config/elastic-certificates.p12 .
docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.keystore .

在config目录下设置权限
chmod 755 elastic-stack-ca.p12
chmod 755 elastic-certificates.p12
chmod 755 elasticsearch.keystore
chmod 755 elasticsearch.yml

还记得我们elasticsearch.yml中注释掉的部分吗?
取消注释

执行docker restart elasticsearch

然后进入容器
执行下列命令,切记保存

在任意一个节点执行(推荐自动)
./bin/elasticsearch-setup-passwords auto   自动
./bin/elasticsearch-setup-passwords interactive   交互

至此es集群已经部署完成

现在访问是需要密码登录的

在浏览器输入你刚刚生成的密码即可登录
用户名是elastic
在这里插入图片描述
此外你在终端查看信息
需要加上用户名密码

如curl -u elastic:密码 -X GET “http://172.23.165.185:9200/”


感谢支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1788765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7、css3实现边框不停地跑动效果

效果例图&#xff1a; 1、上html代码&#xff1a; <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><meta …

百分之九十的人都忽视了JMeter响应断言中的这个实用功能—— Jmeter Variable Name to use

JMeter的响应断言 相信对于使用过JMeter的同学来学&#xff0c;一定都使用过响应断言&#xff0c;在这里我就不相信介绍了&#xff0c;我们可以简单的理解为&#xff1a; JMeter的响应断言是一种用于检查测试中得到的响应数据是否符合预期的工具&#xff0c;旨在保证性能测试…

挑战你的数据结构技能:复习题来袭【6】

1. (单选题)设无向图的顶点个数为n,则该图最多有&#xff08;&#xff09;条边 A. n-1 B. n(n-1)/2 C. n(n1)/2 D. 0 答案&#xff1a;B 分析&#xff1a; 2. (单选题)含有n个顶点的连通无向图,其边的个数至少为()。 A. n-1 B. n C. n1 D. nlog2n 答案&#xff1a;A…

产品经理的“高光”时刻,你中了几个?

作为产品经理&#xff0c;都有着这样一个闪闪发光的梦&#xff0c;就是看着自己的产品从0到DAU过万、过十万&#xff0c;甚至是过百万。 不过想要成为过百万的大牛&#xff0c;天时地利任何一个都不能少&#xff0c;大多数的产品经理暂时还在打怪升级攒经验。 虽然暂时体验不…

C++ STL map容器erase操作避坑

map容器的erase方法有三种重载形式&#xff1a; //1.删除迭代器所指向的元素 //返回值是指向下一个节点的迭代器 iterator erase(iterator it); //2.区间删除 iterator erase(iterator first, iterator last); //3.根据键值删除 //返回值为删除的元素个数 size_type erase(con…

企业全面管理解决方案:基于Java技术的ERP管理系统源码

功能模块与描述&#xff1a; ERP首页&#xff1a; 销售统计与采购统计&#xff1a;实时展示销售和采购金额的统计数据。折线图统计&#xff1a;通过图表直观展示销售和采购趋势。 采购管理&#xff1a; 采购订单管理&#xff1a;处理采购订单的搜索、新增、导出等。采购入库与退…

安防综合管理系统EasyCVR平台GA/T1400视图库:基于XML的消息体格式

GA/T 1400标准的应用范围广泛&#xff0c;涵盖了公安系统的视频图像信息应用系统&#xff0c;如警务综合平台、治安防控系统、交通管理系统等。在视频监控系统中&#xff0c;GA/T 1400公安视图库的对接是实现视频图像信息传输、处理和管理的重要环节。 以视频汇聚EasyCVR视频监…

即时设计工具对决:Figma、Sketch与XD的优劣比较

最近几年&#xff0c;UI 设计工具出现了许多后起之秀&#xff0c;其中有四款更具代表性的UI设计软件&#xff1a;Sketch、Adobe XD、Figma 和 即时设计&#xff0c;这四个设计软件都有自己的优势。如果合作对您的UI设计过程至关重要&#xff0c;那么Figma 和 即时设计 它应该是…

Flink SQL查询语法部分详解(提供需求、数据练习复现)

一、Hints 动态表选择&#xff1a;可以在查询表的时候动态修改表的参数配置 1、读取kafka的数据建表 CREATE TABLE students (id STRING,name STRING,age INT,sex STRING,clazz STRING ) WITH (connector kafka,topic students, -- 指定topicproperties.bootstrap.servers …

PyQt5创建与MySQL数据库集成的应用程序

最近&#xff0c;对之前的mysql管理系统进行了更新升级&#xff0c;制作了一版关于车牌的管理系统&#xff01; &#xff08;1&#xff09;实现了对车牌和用户基本信息的增删改查的功能 &#xff01; &#xff08;2&#xff09;加入了对数据库的刷新和状态显示功能 &#xff…

Windows下载安装RabbitMQ客户端(2024最新篇)

文章目录 RabbitMQ认知RabbitMQ下载RabbitMQ安装 更多相关内容可查看 RabbitMQ认知 定义&#xff1a;RabbitMQ是一个消息中间件&#xff0c;它接受并转发消息。你可以把它当做一个快递站点&#xff0c;当你要发送一个包裹时&#xff0c;你把你的包裹放到快递站&#xff0c;快递…

详解MyBatis(三)

目录 1.#{} 和 ${} 1.1#{} 和${} 使用 Integer类型参数 String类型参数 1.2#{} 和 ${}区别 1.2.1#{}性能更高&#xff08;预编译&#xff09; 1.2.2#{}更安全&#xff08;防止SQL注入&#xff09; 1.3排序功能 1.4like查询 2.数据库连接池 2.1连接池介绍 2.2更换连接池…

http接口上传文件响应413:413 Request Entity Too Large

目录 一、场景简介二、异常展示三、原因四、解决 一、场景简介 1、服务端有经过nginx代理 2、上传文件超过5M时&#xff0c;响应码为413 3、上传文件小于5M时&#xff0c;上传正常 二、异常展示 三、原因 nginx限制了上传数据的大小 四、解决 扩大nginx上传数据的大小 步…

44-5 waf绕过 - SQL注入绕WAF方法

环境准备: 43-5 waf绕过 - 安全狗简介及安装-CSDN博客然后安装sqlilabs靶场:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、双写绕过 打开sql靶场的第一关:http://127.0.0.1/sqli-labs-master/Less-1/?id=1 验证一下waf是否开启防…

Win10下CodeBlock实现socket TCP server/client

文章目录 1 安装codeblock2 适配libws2_32.a库3 TCP socket工作原理4 代码实现服务端客户端5 运行效果1 安装codeblock 官方免费下载 值得一提的是,安装时,指定安装路径,其他默认安装即可 2 适配libws2_32.a库 默认安装,只有3个库,如果编译socket,需要专门的库libws2…

阿奇科技 简单java-swing计算器源码(可用于课设等)

此系统用的技术有java swing&#xff01; 实现的功能&#xff1a; 加减乘除&#xff08;可以进行小数运算&#xff09; 清空数据 最小化 小巧方便&#xff0c;功能齐全&#xff01; 页面截图: 源码地址&#xff1a;点击这里下载源码 获取全套代码&#xff0c;或咨询更多代码…

自动装车系统车辆定位-激光雷达解决方案

在自动装车系统中&#xff0c;激光雷达为车辆定位提供了一种高效且精确的解决方案。以下是关于这一解决方案的详细分析&#xff1a; 一、解决方案概述 激光雷达解决方案在自动装车系统中&#xff0c;通过发射激光束并接收目标反射回来的信号&#xff0c;来探测车辆的位置、状…

K8s(Kubernetes)常用命令

大家好&#xff0c;当谈及容器编排工具时&#xff0c;Kubernetes&#xff08;常简称为K8s&#xff09;无疑是当今最受欢迎和广泛使用的解决方案之一。作为一个开源的容器编排平台&#xff0c;Kubernetes 提供了丰富的功能&#xff0c;可以帮助开发人员和运维团队管理、部署和扩…

今日份动态规划学习(二维01背包+01背包变形)

目录 P1877 [HAOI2012] 音量调节 P1877 [HAOI2012] 音量调节 题解&#xff1a;一个入门级别的01背包问题&#xff0c;首先就是为什么能看出是01背包&#xff0c;因为只有两种状态&#xff0c;要不增大音量&#xff0c;要不减小音量&#xff0c;和01背包的选与不选非常近似。但…

计算机网络 —— 数据链路层(以太网)

计算机网络 —— 数据链路层&#xff08;以太网&#xff09; 什么是以太网以太网传输介质和拓扑结构的发展传输介质的发展&#xff1a;拓扑结构的发展&#xff1a; 10BASE-T 以太网适配器和MAC地址适配器&#xff08;Adapter&#xff09;MAC地址适配器与MAC地址的关系 MAC帧以太…