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

在CSDN学Golang场景化解决方案(EFK分布式日志系统方案)

一,ElasticSearch 分布式集群部署

在 Golang EFK 分布式日志系统方案中,ElasticSearch 是一个分布式搜索引擎和数据存储库,它可以用于存储和搜索大量的日志数据。以下是 ElasticSearch 分布式集群部署的步骤:

  1. 下载 ElasticSearch:从 ElasticSearch 官网上下载最新版本的 ElasticSearch。
  2. 解压缩并安装 ElasticSearch:将下载下来的文件解压缩到指定目录中,并按照官方文档进行安装。
  3. 配置 ElasticSearch:通过修改 config 目录下的 elasticsearch.yml 文件来配置 ElasticSearch 的相关参数,如集群名称、节点名称、网络接口等。具体可参考官方文档。
  4. 启动 ElasticSearch:使用命令行工具进入到 ElasticSearch 的 bin 目录,并执行以下命令启动 ElasticSearch:
./elasticsearch
  1. 添加节点:为了实现高可用性和负载均衡,在同一局域网内可以添加多个节点。要添加节点,请重复以上步骤,在每个节点上安装并启动 ElasticSearch,并确保各个节点的配置文件中设置了相同的集群名称。
  2. 验证集群状态:打开浏览器,输入 http://localhost:9200/_cat/nodes?v 命令来查看集群状态信息,如果所有节点都正确加入集群,则说明分布式部署成功。

在 Golang EFK 分布式日志系统方案中,ElasticSearch 的分布式集群部署需要先下载和安装 ElasticSearch,并按照官方文档进行配置和启动。最后添加多个节点并验证集群状态即可。

二,analysis-ik分析器与分词器

对于Golang和EFK分布式日志系统方案中的Analysis-IK分析器和分词器,可以按照以下步骤进行配置:

  1. 下载和安装Elasticsearch:从官网下载适合你操作系统的版本,解压文件并进行相应配置。
  2. 安装IK插件:下载适合您所使用的Elasticsearch版本的IK插件,并将其解压缩到elasticsearch/plugins目录下。然后在config/elasticsearch.yml文件中添加如下内容:
index.analysis.analyzer.default.type : "ik_smart"
  1. 配置Fluentd与Elasticsearch连接:使用Fluentd插件fluent-plugin-elasticsearch连接到Elasticsearch集群。在Fluentd配置文件中添加相应内容。
  2. 编写Golang程序记录日志:使用第三方库logrus或zap等编写代码记录日志,并将其发送给Fluentd处理。
  3. 在Kibana中查看分词结果:通过浏览器访问Kibana控制台,在控制台中对日志进行查询、过滤等操作,并查看分词结果。

Analysis-IK分析器和分词器可以帮助我们实现更精确的文本搜索和聚类,提高搜索引擎的准确性和效率。同时,我们需要了解相关工具的用法和配置方法,以便正确地使用它们。

三,logstash 管道安装

在 Golang EFK 分布式日志系统方案中,Logstash 是用于收集、处理和转发日志数据的工具。以下是安装 Logstash 管道的步骤:

  1. 下载和安装 Java 运行环境:Logstash 是基于 Java 开发的,所以需要先下载和安装 Java 运行环境。
  2. 下载和解压缩 Logstash:从官网下载适合你操作系统的版本,解压文件到你喜欢的目录下。
  3. 配置 Logstash 管道:在解压后的目录下找到 conf 目录,编辑 logstash.conf 文件,并根据实际情况进行配置。例如:
input {file {path => "/var/log/nginx/access.log"start_position => "beginning"}
}filter {grok {match => { "message" => "%{COMBINEDAPACHELOG}" }}
}output {elasticsearch {hosts => ["localhost:9200"]index => "nginx-access-%{+YYYY.MM.dd}"}
}

上述配置示例使用 input 插件从本地 Nginx 访问日志中读取数据,使用 filter 插件对数据进行 grok 处理(即从原始文本中提取有用信息),然后使用 output 插件将处理后的数据发送给 Elasticsearch。

  1. 启动 Logstash 管道:通过命令行进入到 Logstash 的 bin 目录下,执行以下命令启动管道:
./logstash -f /path/to/logstash.conf
  1. 检查日志:在 Logstash 启动后,可以通过控制台输出查看日志处理情况。若无异常,则数据已成功传输到 Elasticsearch 中。

安装 Logstash 管道需要先下载和安装 Java 运行环境,然后下载和解压缩 Logstash 并进行相应配置,最后启动管道并检查日志。

四,filebeat 从日志文件采集日志

在 Golang EFK 分布式日志系统方案中,Filebeat 是用于采集和传输日志数据的工具。以下是使用 Filebeat 从日志文件采集日志的步骤:

  1. 下载和解压缩 Filebeat:从官网下载适合你操作系统的版本,解压文件到你喜欢的目录下。
  2. 配置 Filebeat:在解压后的目录下找到配置文件 filebeat.yml,并根据实际情况进行配置。例如:
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.logfields:service: nginxoutput.elasticsearch:hosts: ["localhost:9200"]

上述配置示例使用 filebeat.inputs 插件指定要采集的日志文件路径和名称,使用 output.elasticsearch 插件将处理后的数据发送给 Elasticsearch。

  1. 启动 Filebeat:通过命令行进入到 Filebeat 的安装目录下,执行以下命令启动服务:
./filebeat -e -c /path/to/filebeat.yml

其中参数 -e 表示以调试模式运行,-c 指定配置文件路径。

  1. 检查数据:在 Filebeat 启动后,可以通过控制台输出查看日志采集情况。若无异常,则数据已成功传输到 Elasticsearch 中。

使用 Filebeat 从日志文件采集日志需要先下载和解压缩 Filebeat 并进行相应配置,最后启动服务并检查数据。

五,golang通过SDK主动上传日志

在 Golang EFK 分布式日志系统方案中,SDK 是用于编写程序主动上传日志的工具。以下是使用 SDK 主动上传日志的步骤:

  1. 下载和安装 Elasticsearch 客户端库:通过以下命令下载 Elasticsearch 客户端库:
go get github.com/olivere/elastic
  1. 编写程序代码:在 Golang 中,可以使用上一步下载的 Elasticsearch 客户端库来操作 Elasticsearch。例如:
package mainimport ("context""fmt""github.com/olivere/elastic/v7"
)func main() {ctx := context.Background()client, err := elastic.NewClient(elastic.SetURL("http://localhost:9200"))if err != nil {fmt.Println("Failed to create client:", err)return}indexName := "mylogindex"data := map[string]interface{}{"message": "Hello world!",}put1, err := client.Index().Index(indexName).BodyJson(data).Do(ctx)if err != nil {fmt.Println("Failed to put data into index:", err)return}fmt.Printf("Indexed data with ID %s to index %s\n", put1.Id, put1.Index)
}

上述代码示例创建了一个名为 mylogindex 的索引,并向其中插入一条数据。

  1. 运行程序:运行以上代码即可将数据主动上传到 Elasticsearch 中。

使用 Golang SDK 主动上传日志需要先下载和安装 Elasticsearch 客户端库,并编写相应的程序代码。最后运行程序即可将数据上传到 Elasticsearch 中。

相关文章:

在CSDN学Golang场景化解决方案(EFK分布式日志系统方案)

一,ElasticSearch 分布式集群部署 在 Golang EFK 分布式日志系统方案中,ElasticSearch 是一个分布式搜索引擎和数据存储库,它可以用于存储和搜索大量的日志数据。以下是 ElasticSearch 分布式集群部署的步骤: 下载 ElasticSearc…...

MySQL篇

文章目录 一、MySQL-优化1、在MySQL中,如何定位慢查询?2、SQL语句执行很慢, 如何分析呢?3、了解过索引吗?(什么是索引)4、索引的底层数据结构了解过嘛 ?5、什么是聚簇索引什么是非聚簇索引 ?6、知道什么是回表查询嘛…...

图数据库Neo4j学习四——Spring Data NEO

1配置 1.1Maven依赖 <!--neo4j --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-neo4j</artifactId> </dependency>1.2yml配置 spring:data:neo4j:uri: bolt://localhost:76…...

UE虚幻引擎 UTextBlock UMG文本控件超过边界区域以后显示省略号

版本 5.2.1 裁剪 - 剪切 - 剪切到边界 裁剪 - 高级 - 溢出策略 - 省略...

Spring Boot实践五 --异步任务线程池

一、使用Async实现异步调用 在Spring Boot中&#xff0c;我们只需要通过使用Async注解就能简单的将原来的同步函数变为异步函数&#xff0c;Task类实现如下&#xff1a; package com.example.demospringboot;import lombok.extern.slf4j.Slf4j; import org.springframework.s…...

<C语言> 动态内存管理

1.动态内存函数 为什么存在动态内存分配&#xff1f; int main(){int num 10; //向栈空间申请4个字节int arr[10]; //向栈空间申请了40个字节return 0; }上述的开辟空间的方式有两个特点&#xff1a; 空间开辟大小是固定的。数组在声明的时候&#xff0c;必须指定数组的…...

【ASPICE】:学习记录

学习记录 ASPICE中文资料什么是ASPICE过程参考模型 ASPICE全称“Automotive Software Process Improvement and Capability dEtermination”&#xff0c;即“汽车软件过程改进及能力评定”模型框架 ASPICE中文资料 主要资料来源 什么是ASPICE 过程参考模型...

图论--最短路问题

图论–最短路问题 邻接表 /* e[idx]:存储点的编号 w[idx]:存储边的距离&#xff08;权重&#xff09; */ void add(int a, int b, int c) {e[idx] b;ne[idx] h[a];w[idx] ch[a] idx ; }1.拓扑排序 给定一个 n 个点 m 条边的有向图&#xff0c;点的编号是 11 到 n&#xf…...

go 结构体 - 值类型、引用类型 - 结构体转json类型 - 指针类型的种类 - 结构体方法 - 继承 - 多态(interface接口) - 练习

目录 一、结构体 1、python 与 go面向对象的实现&#xff1a; 2、初用GO中的结构体&#xff1a;&#xff08;实例化一个值类型的数据&#xff08;结构体&#xff09;&#xff09; 输出结果不同的三种方式 3、实例化一个引用类型的数据&#xff08;结构体&#xff09; 4、…...

盘点16个.Net开源项目

今天一起盘点下&#xff0c;16个.Net开源项目&#xff0c;有博客、商城、WPF和WinForm控件、企业框架等。&#xff08;点击标题&#xff0c;查看详情&#xff09; 一、一套包含16个开源WPF组件的套件 项目简介 这是基于WPF开发的&#xff0c;为开发人员提供了一组方便使用自…...

记录对 require.js 的理解

目录 一、使用 require.js 主要是为了解决这两个问题二、require.js 的加载三、main.js 一、使用 require.js 主要是为了解决这两个问题 实现 js 文件的异步加载&#xff0c;避免网页失去响应&#xff1b;管理模块之间的依赖性&#xff0c;便于代码的编写和维护。 二、require.…...

minio-分布式文件存储系统

minio-分布式文件存储系统 minio的简介 MinIO基于Apache License v2.0开源协议的对象存储服务&#xff0c;可以做为云存储的解决方案用来保存海量的图片&#xff0c;视频&#xff0c;文档。由于采用Golang实现&#xff0c;服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置…...

Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记

这是ACMMM2019的一篇有监督暗图增强的论文&#xff0c;KinD其网络结构如下图所示&#xff1a; 首先是一个分解网络分解出R和L分量&#xff0c;然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理&#xff0c;最终将处理好的R分量和L分量融合回去。这倒是很常…...

AcWing 4575. Bi数和Phi数

文章目录 题意:思路:代码 题意: 就是给你n个数&#xff0c;对于每一个数y你都需要找到一个最小x使得 ϕ ( x ) ≥ y \phi(x) \ge y ϕ(x)≥y&#xff0c;然后再求一个最小平和。 思路: 其实最开始以来的思路就是二分&#xff0c;我先进行线性筛求出每个数的欧拉函数&#xf…...

《Federated Unlearning via Active Forgetting》论文精读

文章目录 1、概述2、方法实验主要贡献框架概述 3、实验结果比较方法实验结果忘却完整性忘却效率模型实用性 4、总结 原文链接&#xff1a; Federated Unlearning via Active Forgetting 1、概述 对机器学习模型隐私的⽇益关注催化了对机器学习的探索&#xff0c;即消除训练数…...

Java课题笔记~Maven基础知识

一、什么是Maven&#xff1f; Maven是专门用于管理和构建Java项目的工具。 它的主要功能有&#xff1a; 提供了一套标准化的项目结构提供了一套标准化的构建流程&#xff08;编译&#xff0c;测试&#xff0c;打包&#xff0c;发布……&#xff09;提供了一套依赖管理机制 …...

xcode中如何显示文件后缀

xcode14.3 用不惯mac电脑真恶心&#xff0c;改个显示文件后缀找半天 1、首先双击打开xcode软件 2、此时&#xff0c;电脑左上角出现xcode字样(左上角如果看不到xcode字样&#xff0c;再次点击xcode软件弹出来就有了)&#xff0c;鼠标右键它&#xff0c;点击setting或者Prefere…...

SpringBoot使用JKS或PKCS12证书实现https

SpringBoot使用JKS或PKCS12证书实现https 生成JKS类型的证书 可以利用jdk自带的keytool工具来生成证书文件&#xff0c; 默认生成的是JKS证书 cmd命令如下: 执行如下命令&#xff0c;并按提示填写证书内容&#xff0c;最后会生成server.keystore文件 keytool -genkey tomcat…...

云原生势不可挡,如何跳离云原生深水区?

云原生是云计算领域一大热词&#xff0c;伴随云原生概念而来的是数字产业迎来井喷、数字变革来临、数字化得以破局以及新一波的技术红利等等。云原生即“云”原生&#xff0c;顾名思义是让“应用”最大程度地利用云的能力&#xff0c;发挥云价值的最佳路径。具体来说&#xff0…...

python的decimal或者叫Decimal,BigDecimal

前言 在python中进行小数计算时&#xff0c;很容易发生精度错误问题&#xff01;&#xff01;&#xff01;&#xff01;一定要注意&#xff01;&#xff01;&#xff01;或者说&#xff0c;只要进行小数的运算都要用decimal。如&#xff1a;银企对账&#xff1b;工程计算等等在…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南&#xff1a;计算机基础与源码原理深度解析 第一轮提问&#xff1a;基础概念问题 1. 请解释什么是进程和线程的区别&#xff1f; 面试官&#xff1a;进程是程序的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位&#xff1b;而线程是进程中的…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

JavaScript 标签加载

目录 JavaScript 标签加载script 标签的 async 和 defer 属性&#xff0c;分别代表什么&#xff0c;有什么区别1. 普通 script 标签2. async 属性3. defer 属性4. type"module"5. 各种加载方式的对比6. 使用建议 JavaScript 标签加载 script 标签的 async 和 defer …...