Beats:使用 fingerprint 来连接 Beats/Logstash 和 Elasticsearch

news2024/11/15 19:58:37

针对带有 HTTPS 访问的 Elasticsearch 集群来说,在我之前的很多文章,我都习惯于使用集群的证书来访问 Elasticsearch。你可以参考我之前的文章 “Elastic Stack 8.0 安装 - 保护你的 Elastic Stack 现在比以往任何时候都简单”。这是一种非常简便的方法。好处是,我们可以随时使用在安装过程中的证书来访问 Elasticsearch。一个很大的缺点就是,我们必须拷贝证书,并把它放到 Beats 或者 Logstash 可以访问的位置进行配置。这个在使用的过程中非常不方便。相反,我们可以使用 fingerprint 来进行配置 Beats 及 Logstash。Fingerprint 的好处是它不用带路径。在配置的时候,我们所需要做的就是把 fingerprint 的值拷贝进来就可以了,而无须去配置路径。

如何得到 fingerprint ?

我们可以通过如下的几种方法来得到 Elasticsearch 集群的 fingerprint。

第一次 Elasticsearch 启动时的输出

针对 Elastic Stack 8.x 的安装来说,在我们第一次启动的时候,我们就可以看到 fingerprint 的输出:

从上面的输出中我们可以看到 fingerprint 的输出。

从 Kibana 的配置中得到 

在很多的时候,我们没有记下 Elasticsearch 第一次启动时的 fingerprint 的输出。那我们该怎么办呢?另外一种方法就是从 Kibana 的配置文件中,我们可以得到这个信息。我们打开 config/kibana.yml 文件,并查看最后的一行:

config/kibana.yml 

很显然,我们在上面的文件中查看到 fingerprint 的值。

通过证书来获得

我们可以在 Elasticsearch 的安装目录中查看到证书所在的位置:

$ pwd
/Users/liuxg/elastic/elasticsearch-8.6.1
$ ls config/certs/
http.p12      http_ca.crt   transport.p12

从上面的显示中,我们可以看到在安装过程中,Elasticsearch 生成的三个证书文件。我们使用如下的命令来获得 fingerprint:

openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt

 在实际的使用中,我们需要使用到没有冒号的 fingerprint。我们可以使用如下的命令来进行生成:

openssl x509 -in config/certs/http_ca.crt -sha256 -fingerprint | grep sha256 | sed 's/://g'
$ pwd
/Users/liuxg/elastic/elasticsearch-8.6.1
$ openssl x509 -in config/certs/http_ca.crt -sha256 -fingerprint | grep sha256 | sed 's/://g'
sha256 Fingerprint=F8FA6EA4326C13224D952C5E0B2D36AFB18135A505EF41FC25490EBB5A652122

上面的输出结果显示的是没有冒号的 fingerprint。

配置 Beats

一旦得到 Elasticsearch 集群证书的 fingerprint,我们可以通过如下的方式来配置 Beats,比如 Metricbeat。我们可以编辑 Metricbeat 的配置文件 metricbeat.yml 文件:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["localhost:9200"]

  # Protocol - either `http` (default) or `https`.
  protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "gV4pgxNCTi5y*80GmoqN"
  ssl:
    enabled: true
    ca_trusted_fingerprint: "F8FA6EA4326C13224D952C5E0B2D36AFB18135A505EF41FC25490EBB5A652122"

如上所示,我们配置 ssl 项,并把从上面获得的 fingerprint 填入: 

 我们可以打入如下的命令来进行测试:

$ pwd
/Users/liuxg/elastic/metricbeat-8.6.1-darwin-aarch64
$ ./metricbeat test config
Config OK
$ ./metricbeat test output
elasticsearch: https://localhost:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: ::1, 127.0.0.1
    dial up... OK
  TLS...
    security: server's certificate chain verification is enabled
    handshake... OK
    TLS version: TLSv1.3
    dial up... OK
  talk to server... OK
  version: 8.6.1

上面表明我们的 fingerprint 的配置是成功的。它可以连接到 Elasticsearch。我们可以通过如下的命令来生成相应的 Dashboard:

$ pwd
/Users/liuxg/elastic/metricbeat-8.6.1-darwin-aarch64
$ ./metricbeat setup
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling.

Index setup finished.
Loading dashboards (Kibana must be running and reachable)
Loaded dashboards

上面显示我们已经成功地上传了 Dashboard。我们可以通过如下的命令来启动 Metricbeat:

我们可以在 Kibana 中查看 System 模块的 Dashbord:

 

 

 从上面我们可以看到 HOST 机器的指标信息。

Logstash 连接

同样地,我们也可以在 Logstash 的配置中使用 fingerprint。我们可以参照文档 Elasticsearch output plugin | Logstash Reference [8.6] | Elastic。我们使用如下的配置文件:

logstash.conf

input {
  generator {
    message => '{"id":2,"timestamp":"2019-08-11T17:55:56Z","paymentType":"Visa","name":"Darby Dacks","gender":"Female","ip_address":"77.72.239.47","purpose":"Shoes","country":"Poland","age":55}'
    count => 1
  }
}
 
filter {
    json {
        source => "message"
    }
 
    if [paymentType] == "Mastercard" {
        drop {}
    }
 
    mutate {
        remove_field => ["message", "@timestamp", "path", "host", "@version", "log", "event"]
    }
 
}
 
output {
  stdout {
    codec => rubydebug
  }

  elasticsearch {
    hosts => ["https://localhost:9200"]
    index => "data-%{+YYYY.MM.dd}"
    user => "elastic"
    password => "gV4pgxNCTi5y*80GmoqN"
    ssl => true
    ca_trusted_fingerprint => "F8FA6EA4326C13224D952C5E0B2D36AFB18135A505EF41FC25490EBB5A652122"
  }
}

我们使用如下的命令来启动 Logstash:

$ pwd
/Users/liuxg/elastic/logstash-8.6.1
$ ./bin/logstash -f logstash.conf

 

上面显示我们已经成功地写入一条文档到 Elasticsearch 中去了。我们到 Kibana 中进行查看:

 

从上面,我们可以看出来,文档已经被成功地写入到 Elasticsearch 中去了。

好了,今天的分享就到这里。祝大家学习愉快! 

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

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

相关文章

一文搞懂 DevOps

前言 DevOps作为一个热门的概念,近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具&#…

github上传本地文件详细过程

repository 也就是俗称的仓库 声明:后续操作基于win10系统 前提:有一个github账号、电脑安装了git(官方安装地址) 目的: 把图中pdf文件上传到github上的个人仓库中 效果: 温馨提示: git中复制: ctrl insert&#xf…

【JavaWeb】一文学会JPA

✅✅作者主页:🔗孙不坚1208的博客 🔥🔥精选专栏:🔗JavaWeb从入门到精通(持续更新中) 📋📋 本文摘要:本篇文章主要介绍JPA的概念、注解实现ORM规范…

微信小程序学习第11天——Vant Weapp组件库、API Promise化、全局数据共享Mobx、分包

目录一、小程序对npm 的限制二、使用Vant Weapp组件库1、安装组件2、使用组件3、定制全局样式三、API Promise化1、下载miniprogram-api-promise2、引入3、使用四、全局数据共享五、分包1、分包概念2、使用分包3、独立分包4、分包预下载一、小程序对npm 的限制 在小程序中使用…

数值方法笔记2:解决非线性方程

1. 不动点定理及其条件验证2. 收敛阶、收敛检测与收敛加速2.1 如何估计不动点迭代的收敛阶xk1g(xk){x}_{{k}1}{g}\left({x}_{{k}}\right)xk1​g(xk​)2.2 给定精度的情况下,如何预测不动点迭代需要迭代的次数2.3 如何加快收敛的速度2.4 停止不定点迭代的条件2.5 不动…

基于Transformer的NLP处理管线

HuggingFace transformers 是一个整合了跨语言、视觉、音频和多模式模态与最先进的预训练模型并且提供用户友好的 API 的AI开发库。 它由 170 多个预训练模型组成,支持 PyTorch、TensorFlow 和 JAX 等框架,能够在代码之间进行互操作。 这个库还易于部署&…

【Leedcode】数据结构中链表必备的面试题(第一期)

链表必备的面试题 (附图解和源码)(第一期) 文章目录链表必备的面试题 (附图解和源码)(第一期)一、第一题1.题目2.思路图解(1)pos是首链表(2&#…

基于SpringBoot+Vue的鲜花商场管理系统

【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行! 博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、…

【Vue3源码】第三章 readonly详解 从零实现Vue3 readonly API

【Vue3源码】第三章 readonly详解 从零实现Vue3 readonly API 前言 上一章节我们实现了effect函数的stop和onstop功能,至此effect函数源码的编写就暂时告一段落了,这一章我们继续解读Vue3源码,开始实现Vue3 Reactivity :core 中…

Java基础361问14问——为什么非静态内部类会默认持有外部类的引用?

在内存泄露问题排查中最常遇到就是 【非静态内部类默认持有外部类的引用】 文章目录1 字节码分析javac Activity.javajavap -c Activity.class2 静态内部类会持有外部类引用吗?参考文档// 简化处理相关代码 public class Activity {private Handler inner new Handler();priv…

C++面向对象(中)

文章目录前言1.类的6个默认成员函数介绍2.构造函数3.析构函数1.概念2.析构函数特征4.拷贝构造1.概念2.拷贝构造函数特征3.注意事项5.赋值运算符重载1.概念6.补充知识const成员函数7.取地址运算符和const取地址运算符重载8.总结前言 本文主要介绍C中的六个天选之子,…

MicroBlaze系列教程(6):AXI_IIC的使用

文章目录 @[toc]AXI_IIC简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是Xilinx MicroBlaze系列教程的第6篇文章。 AXI_IIC简介 一般情况下,使用FPGA实现I2C协议主要有两种方式:一种是基于Verilog实现起始位、停止位、ACK产生和判断、数据的发送和接收…

程终止、进程睡眠、进程对信号处理过程中等的方法

上一章学习了调度的方式,分为主调度器和周期性调度器,明白了进程切换分为自愿(voluntary)和强制(involuntary)两种。 自愿切换: 是指任务由于等待某种资源,将state改为非running状态后,主动调用schedule让出CPU 任务…

html中元素居中的五种方法

在网页开发中,经常会有嵌套元素中将子元素居中的要求。下边将五种常用的居中方法进行总结。 1:原始图(父子元素无border,无padding): 2:实现居中效果: 一:使用margin…

一篇文章带你学会Anisble中的如何处理失败任务

目录 一、循环 1、简单循环 2、循环散列或字典列表 3、练习 二、条件 三、触发器 四、处理失败任务 1、ignore_errors 2、force_handlers 3、changed_when 4、failed_when 5、block 练习 一、循环 作用:循环迭代任务 1、简单循环 loop: ##赋值列表 -…

[软件工程导论(第六版)]第4章 形式化说明技术(复习笔记)

文章目录4.1 概述4.2 有穷状态机4.3 Petri网4.4 Z语言按照形式化程度,可以把软件工程使用的方法划分成非形式化、半形式化、形式化三类非形式化方法:使用自然语言描述需求规格说明半形式化方法:使用数据流图或实体-联系图建立模型形式化方法&…

P2P视频聊天技术分析

整个P2P视频过程需要知道双方的媒体类型、流和候选者,所以这里就会用到一下技术: ​ 信令服务器socket.io ​ 状态机 ​ ICE服务器 ​ WebRTC框架 ​ 媒体协商 信令服务器Socket.io 信令服务器说白了作用就是发消息的中转站,A把msg发到…

网络流与图(二)

上一节我们讲到了退化圈方向搜索算法,它能得到全局最优解。然而算法运行过程中需要选择一个可行改进圈方向,对于一个大型网络流来说,这并非容易的。我们需要找到在每次循环中确认可行改进圈方向或者证明不存在的方法。我们现在就来探讨这个问…

Andriod入门级开发

这学期有个课设,我们组我负责一个手机APP的开发,虽然刚开始说要实现什么智能导航,类似高德地图那种,但最后阉割的只剩一个Socket通信了,因为之前没有接触过(可能之后也不会再接触),记…

【数据管理】谈谈哈希原理和散列表

一、说明 提起哈希,有人要说:不就是一个稀疏表格么,谈的上什么原理?我说:非也,哈希是是那种看似无物,其实解决大问题的东西。如何提高数据管理效率?这是个问题,随着这个问…