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

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: Dockerfileimage: docker.elastic.co/elasticsearch/elasticsearch:7.10.0container_name: elasticsearchrestart: alwaysenvironment:- 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: -1hard: -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:rwports:- 9200:9200- 9300:9300networks:- 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.0path.data: /usr/share/elasticsearch/data
path.logs: /usr/share/elasticsearch/logshttp.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.mzph.cn/news/845493.shtml

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

相关文章

【ARM-Linux篇】u-boot编译

一、u-boot简介 uboot是一种通用的引导加载程序,它可以用于多种嵌入式系统,支持多种操作系统,如Linux, Android,NetBSD等。uboot的主要作用是将操作系统内核从存储设备(如Flash, SD卡等)加载到内存中,并执…

一个令人惊艳的开源技术盛宴,来了!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 在 GitHub 上,每天都会诞生各种实用的开源项目,这些项目在不同行业与领域得到充分应用,推动技术发展,让普通人也能够真切感受到科技魅力。 而…

使用 EBS 和构建数据库服务器并使用应用程序与数据库交互

实验 4:使用 EBS 实验概览 本实验着重介绍 Amazon Elastic Block Store (Amazon EBS),这是一种适用于 Amazon EC2 实例的重要底层存储机制。在本实验中,您将学习如何创建 Amazon EBS 卷、将其附加到实例、向卷应用文件系统,然后进…

ES 生命周期管理

一 .概念 ILM定义了四个生命周期阶段:Hot:正在积极地更新和查询索引。Warm:不再更新索引,但仍在查询。cold:不再更新索引,很少查询。信息仍然需要可搜索,但是如果这些查询速度较慢也可以。Dele…

TOPIAM数字身份管控平台前端技术实践

一、引言 随着企业信息化程度的不断加深,内部办公系统、业务系统及三方SaaS系统的集成与整合成为企业面临的重要挑战之一。特别是如何有效管理员工账号、权限、身份认证以及应用访问,成为保障企业信息安全、提升用户体验的关键。TOPIAM数字身份管控平台…

VSCode Prettier - Code formatter 代码格式化

格式化代码是一个挑战,但现代开发工具可以自动保持团队代码库的一致性。 在本文中,您将设置 Prettier 以自动格式化 Visual Studio Code(也称为 VS Code)中的代码。 1. 安装插件 2. 定义代码风格 在项目根目录下创建一个pretti…

【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络篇)

上两篇中介绍了如何配置NPS和在WLC上如何配置802.1X来实现验证域账号和动态分配VLAN,802.1x协议作为一种成熟的身份验证框架,不仅适用于无线网络,同样也适用于有线网络环境。这里我们将介绍如何在有线网络中部署802.1x认证,以验证…

Android Coil的简单介绍及使用

前言: 本文是借鉴网上大佬的Coil相关技术文章及结合自己项目中的实际使用情况,对Coil作一个简单介绍。 简介: Coil是一个Android的图片加载框架库,是通过Kotlin协程的方式加载图片的,相对于Glide、Picasso、Fresco等…

返回值

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 到目前为止,我们创建的函数都只是为我们做一些事,做完了就结束。但实际上,有时还需要对事情的结果进行获取。这类…

使用Redis常遇到的问题

文章目录 概述缓存雪崩、穿透、击穿大key问题热Key问题缓存和数据库双写一致性问题缓存并发竞争Redis线上阻塞要如何排查Redis 常见的性能问题都有哪些Redis 如何做内存优化Redis数据倾斜 概述 在使用Redis时,有几个常见的问题可能会出现,包括但不限于以…

调用上传文件接口出现格式错误

一、造成这种错误的可能有很多 1.检查一下传递格式 2.检查一下接口要求的格式 二、举个例子 这两个有什么区别? 那就是json、和form-data,一定要看仔细接口 如果还是按照json的方式去传就会报错 三、更改header里Content-Type的类型 json等的heade…

strcpy、strncpy、strcat、strncat、strcmp、strstr字符串函数的使用和模拟

strcpy的使用和模拟&#xff08;作用&#xff09; 将一个字符串的内容复制到另外一个字符串中代替掉。 strcpy的使用效果 #include <stdio.h> #include <string.h>int main () {char str1[]"Sample string";char str2[40];char str3[40];strcpy (str2…

Python 学习笔记【1】

此笔记仅适用于有任一编程语言基础&#xff0c;且对面向对象有一定了解者观看 文章目录 数据类型字面量数字类型数据容器字符串列表元组 type()方法数据类型强转 注释单行注释多行注释 输出基本输出连续输出&#xff0c;中间用“,”分隔更复杂的输出格式 变量定义del方法 标识符…

nginx搭建简单负载均衡demo(springboot)

目录 1 安装nignx 1.1 执行 brew install nginx 命令&#xff08;如果没安装brew可百度搜索如何安装brew下载工具。类似linux的yum命令工具&#xff09;。 1.2 安装完成会有如下提示&#xff1a;可以查看nginx的配置文件目录。 1.3 执行 brew services start nginx 命令启动…

if语句知识点

作用 让顺序执行的代码产生分歧。 if 语句 作用&#xff1a;满足条件时&#xff0c;多执行一些代码。 语法&#xff1a; if(bool类型值)//bool类型相关&#xff1a;bool变量&#xff0c;条件运算符表达式&#xff0c;逻辑运算符表达式 {满足条件要执行的代码&#xff0c;写在…

将三个字符串通过strcat连接起来并打印输出

将三个字符串通过strcat连接起来并打印输出 #include <stdio.h> #include <string.h> int main () { char a[10]"I", b[10]" am",c[10]" happy"; strcat(a,b); strcat(a,c); printf("%s",a); printf("\n"); re…

Java | Leetcode Java题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution {public int maxProfit(int[] prices) {int n prices.length;int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 Math.max(buy1, -prices[i]);sell1 Math.max(sell1, b…

zynq PS点灯

摸鱼碎碎念&#xff1a; 需要做ADC采集并在TFT屏幕实时显示波形&#xff08;简易示波器&#xff09; 发现只使用fpga实现比较困难 使用的是zynq&#xff0c;刚好来把arm部分也学到 参考视频 与 教材文档 01_Zynq SoC FPGA的诞生_哔哩哔哩_bilibili (这是俺点开AXI4接口协…

爬虫学习2

中国国家地理网 单张图片爬取 import requests url http://img0.dili360.com/ga/M00/02/AB/wKgBzFQ26i2AWujSAA_-xvEYLbU441.jpg!rw9 headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0…

解锁 JavaScript ES6:函数与对象的高级扩展功能

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 ES6函数扩展1 默认参数1.1 之前写法1.2 ES6 写法1.3 注意点 2 …