当前位置: 首页 > news >正文

elasticSearch+kibana+logstash+filebeat集群改成https认证

文章目录

    • 一、生成相关证书
    • 二、配置elasticSearh
    • 三、配置kibana
    • 四、配置logstash
    • 五、配置filebeat
    • 六、连接https es的java api

一、生成相关证书

ps:主节点操作

  1. 切换用户:su es

  2. 进入目录:cd /home/es/elasticsearch-7.6.2

  3. 创建文件:vi instances.yml

    instances:- name: "master" ip: - "192.168.248.10"- name: "slave1"ip:- "192.168.248.11"- name: "slave2"ip:- "192.168.248.12"- name: "kibana"ip:- "192.168.248.10"- name: "logstash"ip:- "192.168.248.10"   - name: "filebeat"ip:- "192.168.248.10"   
    
  4. 生成证书:/home/es/elasticsearch-7.6.2/bin/elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip

  5. 解压得到各个证书:unzip certs.zip

二、配置elasticSearh

ps:三个节点

  1. 切换用户:su es

  2. 将解压得到的三个文件夹文件拷贝到各个节点的/home/es/elasticsearch-7.6.2/config下,如master节点:ca.crt、master.crt、master.key

  3. 三个节点配置,末尾添加配置:vi /home/es/elasticsearch-7.6.2/config/elasticsearch.yml
    ps1:根据名字配置master和slave1和slave2
    ps2:如果之前配置过密码,需要将密码的配置先移除

    xpack.security.http.ssl.enabled: true
    xpack.security.http.ssl.key: master.key
    xpack.security.http.ssl.certificate: master.crt
    xpack.security.http.ssl.certificate_authorities: ca.crtxpack.security.enabled: true
    xpack.security.transport.ssl.enabled: true
    xpack.security.transport.ssl.key: master.key
    xpack.security.transport.ssl.certificate: master.crt
    xpack.security.transport.ssl.certificate_authorities: ["ca.crt"]
    
  4. 如果是用root用户拷贝的,记得赋权:chown -R es:es /home/es

  5. 启动

    cd /home/es/elasticsearch-7.6.2/bin
    nohup /home/es/elasticsearch-7.6.2/bin/elasticsearch &
    
  6. 设置密码:/home/es/elasticsearch-7.6.2/bin/elasticsearch-setup-passwords interactive

    ps1:可以统一设置一个密码ffcsict123

    ps2:如果已经设置过密码了,可以忽略。或者也可以删除es的 .security-7 索引,重新执行设置密码的操作也可以

三、配置kibana

  1. 将kibana证书放到/home/es/kibana-7.6.2-linux-x86_64/config下:kibana.crt、ca.crt、kibana.key

  2. 配置:vi /home/es/kibana-7.6.2-linux-x86_64/config/kibana.yml

    # 修改
    elasticsearch.hosts: ["https://192.168.248.10:9200","https://192.168.248.11:9200","https://192.168.248.12:9200"]# 末尾添加
    # 这三个路径写成相对路径会被错,写绝对路径才行,不知道为啥
    server.ssl.enabled: true
    server.ssl.certificate: /home/es/kibana-7.6.2-linux-x86_64/config/kibana.crt
    server.ssl.key: /home/es/kibana-7.6.2-linux-x86_64/config/kibana.key
    elasticsearch.ssl.certificateAuthorities: ["/home/es/kibana-7.6.2-linux-x86_64/config/ca.crt"]elasticsearch.username: "kibana"
    elasticsearch.password: "ffcsict123"
    
  3. 如果是用root用户拷贝的,记得赋权:chown -R es:es /home/es

  4. 启动:nohup /home/es/kibana-7.6.2-linux-x86_64/bin/kibana &

  5. 访问:https://192.168.248.10:5601
    在这里插入图片描述

四、配置logstash

  1. 将logstash证书放到/home/es/logstash-7.6.2/config下:logstash.crt、ca.crt、logstash.key

  2. 修改配置文件:vi /home/es/logstash-7.6.2/config/logstash.yml

    xpack.monitoring.enabled: true
    xpack.monitoring.elasticsearch.username: logstash_system
    xpack.monitoring.elasticsearch.password: ffcsict123
    xpack.monitoring.elasticsearch.hosts: ["https://192.168.248.10:9200"]
    xpack.monitoring.elasticsearch.ssl.certificate_authority: "/home/es/logstash-7.6.2/config/ca.crt"
    
  3. 修改配置文件:vi /home/es/logstash-7.6.2/config/logstash-sample.conf

    output {elasticsearch {hosts => ["https://192.168.248.10:9200","https://192.168.248.11:9200","https://192.168.248.12:9200"]index => "testlog-%{+YYYY.MM.dd}"user => "elastic"password => "ffcsict123"ssl => truecacert => "/home/es/logstash-7.6.2/config/ca.crt"}}
    
  4. 启动:nohup /home/es/logstash-7.6.2/bin/logstash -f /home/es/logstash-7.6.2/config/logstash-sample.conf &

五、配置filebeat

--------------------如果logstash不需要转https,则可以忽略以下步骤-----------------

  1. 杀死logstash进程

  2. 将 logstash.key 转换为 PKCS#8 格式

    cd /home/es/logstash-7.6.2/config
    openssl pkcs8 -in logstash.key -topk8 -nocrypt -out logstash.pkcs8.key
    
  3. 由于我们一个logstash服务,会有很多filebeat服务写日志进来。如果将logstash改为https访问,需要将所有涉及的filebeat都进行改配置。所以如果只是要求es改造为https,可以不改造logstash。如果需要改造,则修改配置文件:vi /home/es/logstash-7.6.2/config/logstash-sample.conf

    input {beats {port => 5044ssl => truessl_certificate_authorities => ["/home/es/logstash-7.6.2/config/ca.crt"]ssl_certificate => "/home/es/logstash-7.6.2/config/logstash.crt"ssl_key => "/home/es/logstash-7.6.2/config/logstash.pkcs8.key"ssl_verify_mode => "force_peer"}
    }
    
  4. 启动logstash:nohup /home/es/logstash-7.6.2/bin/logstash -f /home/es/logstash-7.6.2/config/logstash-sample.conf &

  5. 将filebeat证书放到/home/es/filebeat-7.6.2-linux-x86_64下:filebeat.crt、filebeat.crt、filebeat.key

  6. 配置filebeat:vi /home/es/filebeat-7.6.2-linux-x86_64/filebeat.yml

    output.logstash:hosts: ["192.168.248.10:5044"]ssl.certificate_authorities: ["/home/es/filebeat-7.6.2-linux-x86_64/ca.crt"]ssl.certificate: "/home/es/filebeat-7.6.2-linux-x86_64/filebeat.crt"ssl.key: "/home/es/filebeat-7.6.2-linux-x86_64/filebeat.key"
    
  7. 启动:nohup /home/es/filebeat-7.6.2-linux-x86_64/filebeat -e -c /home/es/filebeat-7.6.2-linux-x86_64/filebeat.yml &

六、连接https es的java api

import org.apache.http.HttpHost;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.nio.client.HttpAsyncClientBuilder;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.SSLContexts;
import org.elasticsearch.action.admin.indices.alias.get.GetAliasesRequest;
import org.elasticsearch.client.*;
import org.elasticsearch.cluster.metadata.AliasMetadata;
import org.springframework.core.io.ClassPathResource;import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.io.InputStream;
import java.security.KeyStore;
import java.security.cert.Certificate;
import java.security.cert.CertificateFactory;
import java.util.*;/*** @author 天真热* @create 2023-09-02 20:25* @desc**/
public class elkDemo {public static String ip = "192.168.248.10";public static String port = "9200";public static String esUsername = "elastic";public static String esPassword = "ffcsict123";public static void main(String[] args) throws IOException {{RestHighLevelClient clinet = getConnection();List<Map<String, Object>> indexs = getIndex(clinet);System.out.println(indexs);}}/*** 创建链接* @return*/public static RestHighLevelClient getConnection() {// 创建凭据提供程序final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(esUsername, esPassword));RestClientBuilder http = RestClient.builder(new HttpHost(ip, Integer.parseInt(port), "https")).setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {@Overridepublic RequestConfig.Builder customizeRequestConfig(RequestConfig.Builder requestConfigBuilder) {requestConfigBuilder.setConnectTimeout(700000);requestConfigBuilder.setSocketTimeout(600000);requestConfigBuilder.setConnectionRequestTimeout(100000);return requestConfigBuilder;}}).setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {@Overridepublic HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpAsyncClientBuilder) {return httpAsyncClientBuilder.setSSLContext(buildSSLContext()).setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE).setDefaultCredentialsProvider(credentialsProvider);}});return new RestHighLevelClient(http);}/*** 获取所有索引*/public static List<Map<String, Object>> getIndex(RestHighLevelClient esHighInit) throws IOException {List<Map<String, Object>> resultList = new ArrayList();GetAliasesRequest request = new GetAliasesRequest();GetAliasesResponse alias = esHighInit.indices().getAlias(request, RequestOptions.DEFAULT);Map<String, Set<AliasMetadata>> map = alias.getAliases();map.forEach((k, v) -> {if (!k.startsWith(".")) {//忽略elasticesearch 默认的Map map1 = new HashMap();map1.put("indexName", k);resultList.add(map1);}});return resultList;}/*** 创建证书验证* @return*/private static SSLContext buildSSLContext() {ClassPathResource resource = new ClassPathResource("master.crt");SSLContext sslContext = null;try {CertificateFactory factory = CertificateFactory.getInstance("X.509");Certificate trustedCa;try (InputStream is = resource.getInputStream()) {trustedCa = factory.generateCertificate(is);}KeyStore trustStore = KeyStore.getInstance("pkcs12");trustStore.load(null, null);trustStore.setCertificateEntry("ca", trustedCa);SSLContextBuilder sslContextBuilder = SSLContexts.custom().loadTrustMaterial(trustStore, null);sslContext = sslContextBuilder.build();} catch (Exception e) {e.printStackTrace();}return sslContext;}
}

相关文章:

elasticSearch+kibana+logstash+filebeat集群改成https认证

文章目录 一、生成相关证书二、配置elasticSearh三、配置kibana四、配置logstash五、配置filebeat六、连接https es的java api 一、生成相关证书 ps&#xff1a;主节点操作 切换用户&#xff1a;su es 进入目录&#xff1a;cd /home/es/elasticsearch-7.6.2 创建文件&#x…...

GPT带我学-设计模式-迭代器模式

1 什么是迭代器设计模式&#xff1f; 迭代器设计模式是一种行为型设计模式&#xff0c;用于提供一种统一的方式来遍历一个集合对象中的元素&#xff0c;而不需要暴露该对象的内部结构。它将集合对象的遍历操作与集合对象本身分离开来&#xff0c;使得遍历操作可以独立于集合对…...

数学建模--层次分析法(AHP)的Python实现

目录 1.算法流程简介 2.算法核心代码 3.算法效果展示 1.算法流程简介 """ AHP:层次分析法,层次分析法还是比较偏向于主观的判断的,所以在建模的时候尽可能不要去使用层次分析法 不过在某些创新的评价方法上,也是能够运用层次分析使得评价变得全面一些,有可…...

机器学习笔记之最优化理论与方法(三)凸集的简单认识(下)

机器学习笔记之最优化理论与方法——凸集的简单认识[下] 引言回顾&#xff1a;基本定义——凸集关于保持集合凸性的运算仿射变换 凸集基本性质&#xff1a;投影定理点与凸集的分离支撑超平面定理 引言 继续凸集的简单认识(上)进行介绍&#xff0c;本节将介绍凸集的基本性质以及…...

Apipost:API文档、调试、Mock与测试的一体化协作平台

随着数字化转型的加速&#xff0c;API&#xff08;应用程序接口&#xff09;已经成为企业间沟通和数据交换的关键。而在API开发和管理过程中&#xff0c;API文档、调试、Mock和测试的协作显得尤为重要。Apipost正是这样一款一体化协作平台&#xff0c;旨在解决这些问题&#xf…...

Homebrew下载安装及使用教程

Homebrew是什么&#xff1f; 简单来说&#xff0c;就是用命令行的形式去管理mac系统的包或软件。 安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"国内请使用镜像源进行下载 执行上述命令后会要求输入…...

【Codeforces】CF193D Two Segments

题目链接 CF方向 Luogu方向 题目解法 考虑在值域上的问题&#xff1a;有多少段区间&#xff0c;对应在排列上不超过 2 2 2 段 肯定需要枚举一个端点&#xff0c;另一个快速算出&#xff0c;考虑枚举值域区间右端点 r r r&#xff0c;计算 l l l 可以发现&#xff0c;新增…...

内存管理概述

前言 在学习计算机科学时&#xff0c;内存管理是一个非常重要的概念。简单地说&#xff0c;内存是计算机用来存储和访问数据的地方。而内存管理是计算机系统如何分配、使用和管理内存的过程。 为什么要学习内存管理&#xff1f; 1. 高效性&#xff1a;内存管理能够帮助计算机更…...

Spring的重试机制-SpringRetry

在我们的日常开发中&#xff0c;经查会遇到调用接口失败的情况&#xff0c;这时候就需要通过一些方法来进行重试&#xff0c;比如通过while循环手动重复调用或&#xff0c;或者通过记录错误接口url和参数到数据库&#xff0c;然后手动调用接口&#xff0c;或者通过JDK/CGLib动态…...

水稻叶病害数据集(目标检测,yolo使用)

1.数据集文件夹 train文件夹&#xff08;44229张&#xff09;&#xff0c;test文件夹&#xff08;4741张&#xff09;&#xff0c;valid文件夹&#xff08;6000张&#xff09; 2.train文件夹展示 labels展示 标签txt展示 data.yaml文件展示 对数据集感兴趣的可以关注最后一行…...

鸿蒙系列-如何使用好 ArkUI 的 @Reusable?

如何使用好 ArkUI 的 Reusable&#xff1f; OpenHarmony 组件复用机制 在ArkUI中&#xff0c;UI显示的内容均为组件&#xff0c;由框架直接提供的称为 系统组件&#xff0c;由开发者定义的称为 自定义组件。 在进行 UI 界面开发时&#xff0c;通常不是简单的将系统组件进行组合…...

展锐平台音频框架

Audio DT介绍 1.概述 DT&#xff08;Device Tree&#xff09;是一种描述硬件的数据结构&#xff0c;DTS即设备树源码。 2.Audio DTS 文件架构 \bsp\kernel\kernel.4.14\arch\arm64\boot\sprd ums512.dts //SOC级相关节点 ——sc2730.dtsi //Codec ——sharkl5Pro.dts…...

webpack loader和plugins的区别

在Webpack中&#xff0c;Loader和Plugin是两个不同的概念&#xff0c;用于不同的目的。 Loader是用于处理非JavaScript模块的文件的转换工具。它们将文件作为输入&#xff0c;并将其转换为Webpack可以处理的模块。例如&#xff0c;当您在Webpack配置中使用Babel Loader时&…...

适配器模式:接口的平滑过渡

欢迎来到设计模式系列的第七篇文章&#xff01;在前面的几篇文章中&#xff0c;我们已经学习了一些常见的设计模式&#xff0c;今天我们将继续探讨另一个重要的设计模式——适配器模式。 适配器模式简介 适配器模式是一种结构型设计模式&#xff0c;它主要用于将一个类的接口…...

vscode搭建springboot开发环境

前言 idea好用到但是收money&#xff0c;eclipse免费但是界面有点丑&#xff0c;所以尝试使用vscode开发springboot 提前准备 安装jdk&#xff0c;jdk需要大于11 安装vscode 安装maven 安装插件 主要是下面的插件 Extension Pack for JavaSpring Boot Extension PackDepe…...

SpringMVC-学习笔记

文章目录 1.概述1.1 SpringMVC快速入门 2. 请求2.1 加载控制2.2 请求的映射路径2.3 get和post请求发送2.4 五种请求参数种类2.5 传递JSON数据2.6 日期类型参数传递 3.响应3.1 响应格式 4.REST风格4.1 介绍4.2 RESTful快速入门4.3 简化操作 1.概述 SpringMVC是一个基于Java的Web…...

【STM32】学习笔记(TIM定时器)

TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff0c;而且…...

Jdk8 动态编译 Java 源码为 Class 文件(三)

Jdk8 动态编译 Java 源码为 Class 文件 一.JDK版本二.工程介绍1.依赖2.启动类3.配置类&#xff08;用于测试依赖注入&#xff09;4.工具类1.Java 源码文件读取类2.SpringBoot 容器实例管理类 5.测试类1.抽象类2.接口类3.默认抽象实现4.默认接口实现 6.接口类1.测试接口2.类重载…...

Shell自动化日志维护脚本

简介&#xff1a; 系统日志对于了解操作系统的运行状况、故障排除和性能分析至关重要。然而&#xff0c;长期积累的日志文件可能变得庞大&#xff0c;影响系统性能。在这篇文章中&#xff0c;我们将介绍一个自动化的解决方案&#xff0c;使用 Bash 脚本来监控和维护系统日志文件…...

设计模式入门笔记

1 设计模式简介 在IT这个行业&#xff0c;技术日新月异&#xff0c;可能你今年刚弄懂一个编程框架&#xff0c;明年它就不流行了。 然而即使在易变的IT世界也有很多几乎不变的知识&#xff0c;他们晦涩而重要&#xff0c;默默的将程序员划分为卓越与平庸两类。比如说&#xff…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

作者&#xff1a;吴岐诗&#xff0c;杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言&#xff1a;融合数据湖与数仓的创新之路 在数字金融时代&#xff0c;数据已成为金融机构的核心竞争力。杭银消费金…...