Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x

这篇具有很好参考价值的文章主要介绍了Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

毫无疑问,日志记录是任何应用程序最重要的方面之一。 当事情出错时(而且确实会出错),我们需要知道发生了什么。 为了实现这一目标,我们可以设置 Filebeat 从我们的 golang 应用程序收集日志,然后将它们发送到 Elasticsearch。 最后,使用 Kibana 我们可以可视化这些日志并对它们执行复杂的查询。

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x,Beats,Elastic,elasticsearch,大数据,搜索引擎,golang,全文检索

安装

如果你还没有安装好自己的 Elasticsearch 及 Kibana,请参考之前文章:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

我们还需要下载 Filebeat,并进行相应的安装。在本次的展示中,我将使用最新的 Elastic Stack 8.9.0 来进行展示,但是它也适用于其它的 Elastic Stack 8.x 的安装。当然当前的使用的这种方法也适合 7.x de golang 日志记录,只是我们需要做相应的修改。 针对 7.x 的安装,请参考我的另外一篇文章 “Beats:使用 Elastic Stack 记录 Golang 应用日志”。

创建 golang 应用

我们在当前的应用的根目录下创建如下的一个 go.mod 文件:

go.mod

module logging

require go.elastic.co/ecszap master
$ pwd
/Users/liuxg/go/logging
$ ls
go.mod

我们可以使用如下的命令来下载模块:

go env -w GO111MODULE=on
go mod download
go mod tidy

我们需要做如下的配置:

encoderConfig := ecszap.NewDefaultEncoderConfig()
core := ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)
logger := zap.New(core, zap.AddCaller())

你可以自定义 ECS 记录器。 例如:

encoderConfig := ecszap.EncoderConfig{
  EncodeName: customNameEncoder,
  EncodeLevel: zapcore.CapitalLevelEncoder,
  EncodeDuration: zapcore.MillisDurationEncoder,
  EncodeCaller: ecszap.FullCallerEncoder,
}
core := ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)
logger := zap.New(core, zap.AddCaller())

详细例子

在根目录下创建如下的 app.go 文件:

app.go

package main

import (
	"errors"
	"math/rand"
	"os"
	"time"

	"go.elastic.co/ecszap"
	"go.uber.org/zap"
)

func main() {
	encoderConfig := ecszap.NewDefaultEncoderConfig()
	core := ecszap.NewCore(encoderConfig, os.Stdout, zap.DebugLevel)
	logger := zap.New(core, zap.AddCaller())
	logger = logger.With(zap.String("app", "myapp")).With(zap.String("environment", "psm"))
	count := 0

	for {
		if rand.Float32() > 0.8 {
			logger.Error("oops...something is wrong",
				zap.Int("count", count),
				zap.Error(errors.New("error details")))
		} else {
			logger.Info("everything is fine",
				zap.Int("count", count))
		}
		count++
		time.Sleep(time.Second * 2)
	}
}

我们可以以如下的方式来运行上面的代码:

go run app.go > a.json

在当前的根目录下,我们可以看见一个叫做 a.json 的文件:

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x,Beats,Elastic,elasticsearch,大数据,搜索引擎,golang,全文检索

从输出的内容中,我们可以看到 a.json 的文本是一个 JSON 格式的输出。我们在下面来展示如何收集这个日志的信息。

使用 Filebeat 来采集日志并传入到 Elasticsearch 中

我们安装好自己的 FIlebeat,并配置 filebeat.yml 文件:

filebeat.yml

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

# filestream is an input for collecting log messages from files.
- type: log

  # Unique ID among all inputs, an ID is required.
  id: my-filestream-id

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /Users/liuxg/go/logging/a.json
    #- c:\programdata\elasticsearch\logs\*
  parsers:
    - ndjson:
      overwrite_keys: true 
      add_error_key: true 
      expand_keys: true 

我们需要配置如下的部分:

output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["https://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: "p1k6cT4a4bF+pFYf37Xx"
  ssl.certificate_authorities: ["/Users/liuxg/elastic/elasticsearch-8.9.0/config/certs/http_ca.crt"]

在上面,我们需根据自己的 Elasticsearch 的配置来填入上面的用户名及密码。我们需要根据自己的证书的位置来配置证书。我们使用如下的命令来查看配置是否有语法错误:

$ pwd
/Users/liuxg/elastic/filebeat-8.9.0-darwin-aarch64
$ ./filebeat test config
Config OK

上面显示我们的配置是没有任何问题的。我们可以使用如下的命令来查看 output 的配置是否成功:

$ ./filebeat test output
elasticsearch: https://localhost:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    addresses: 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.9.0

上面显示我们的 Elasticsearch 的配置是成功的。

我们可以使用如下的命令来摄入数据:

./filebeat -e

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x,Beats,Elastic,elasticsearch,大数据,搜索引擎,golang,全文检索

到 Kibana 中进行查看

我们可以在 Kibana 中来查看我们收集到的日志信息:

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x,Beats,Elastic,elasticsearch,大数据,搜索引擎,golang,全文检索

从上面的显示中,可以看出来已经成功地收集了日志信息。当然,我们也可以针对日志进行搜索:

Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x,Beats,Elastic,elasticsearch,大数据,搜索引擎,golang,全文检索

更多参考:Get started | ECS Logging Go (zap) Reference | Elastic文章来源地址https://www.toymoban.com/news/detail-660003.html

到了这里,关于Beats:使用 Filebeat 将 golang 应用程序记录到 Elasticsearch - 8.x的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 企业聊天应用程序使用 Kubernetes

    客户端: 在我们的架构中,客户端可以分为三种类型:iOS 和 Android 移动应用程序以及 Web 聊天。移动应用程序首先通过 API 网关服务与服务器进行通信,其中客户端会生成一个访问令牌,该令牌将授权每个通信和服务。 网络聊天也以相同的方式进行通信,并且与 Web 管理应用

    2024年02月07日
    浏览(34)
  • 使用ReactNative构建移动应用程序中的AR应用程序:了解ReactNative中的AR开发生态系统

    作者:禅与计算机程序设计艺术 在过去的几年里,随着VR、AR、移动互联网等技术的不断革新,人们越来越多地体验到一种全新的生活方式。而其中不可或缺的部分就是数字化的现实世界。因为当代人的生活已经离不开手机、平板电脑和电视机了,所以数字化现实世界的应用

    2024年02月10日
    浏览(57)
  • 使用Docker构建分布式应用程序

    作者:禅与计算机程序设计艺术 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。 传统的应用分为三层结构:应用运行环境、应用逻辑和资源管理,Doc

    2024年02月08日
    浏览(73)
  • WCF服务应用程序的创建和使用

    1.创建WCF服务应用程序: https://blog.csdn.net/weixin_44690047/article/details/119087706

    2024年02月08日
    浏览(52)
  • 如何使用 Python 创建 Twitter 应用程序

    简介 通过访问 Twitter API,您可以管理社交媒体账户,并且可以从社交媒体中获取数据。如果您代表一个企业或组织,这对品牌推广很有帮助;对于个人用户和业余程序员来说,这也可以是一种有趣的娱乐方式。 在本文中,我们将概述创建 Twitter 应用程序所需的步骤。 然后,

    2024年02月20日
    浏览(58)
  • C#程序设计——Windows应用程序开发,1、初步掌握Windows应用程序的设计方法。2、掌握常用窗体控件的使用方法。

    初步掌握Windows应用程序的设计方法。 掌握常用窗体控件的使用方法。 1、设计一个Windows应用程序,创建一个用于添加学生个人基本信息的窗体,窗体下方法同时滚动信息“天行健,君子以自强不息!”。   要示如下: 如图1所示,设计窗体界面控件的布局 图1 学生信息管理

    2024年02月10日
    浏览(80)
  • WPF嵌入外部exe应用程序-使用Winfom控件承载外部程序

    首先要解决在WPF中如何使用Winfom控件的问题,官方对此有支持的方式。 在引用管理器中添加winfrom相关的程序集 System.Windows.Forms 和 WindowsFormsIntegration 。 然后使用winform的控件,得在外面套一层WindowsFormsHost(好像添加了WindowsFormsIntegration,不使用wfi:也能使用) 这样就可以在WPF中使

    2024年02月17日
    浏览(63)
  • 使用 Docker 进行 Go 应用程序引导指南

    在使用 Go 开发 Web 应用程序时,无论是用于 HTTP 还是其他类型的服务,部署到不同的阶段或环境(本地开发、生产环境等)都是一个常见的考虑因素。在本文中,我们将探讨在 Docker 容器内集成 Golang 栈的方法,这是一个被广泛采用的方法,并使用 Docker Compose 进行编排。 首先

    2024年01月17日
    浏览(54)
  • 如何使用Vue.js构建桌面应用程序

    Vue.js是一个流行的JavaScript框架,可以用于构建Web应用程序。但是,Vue.js也可以用于构建桌面应用程序。本文将介绍如何使用Vue.js构建桌面应用程序,包括以下步骤: 1. 选择一个Vue.js框架:选择一个适合你的Vue.js框架。我们推荐使用Electron,因为它是最流行的桌面应用程序框架

    2024年02月15日
    浏览(46)
  • 如何使用代码混淆技术保护移动应用程序安全

    在移动应用开发过程中,代码保护一直是一个重要的议题。为了保护应用程序免受黑客攻击和逆向工程师的破解,开发人员使用各种方法来加强应用程序的安全性。其中,代码混淆是一种常用的技术,可以通过对代码进行混淆、压缩和重命名等操作,使得应用程序的代码难以

    2024年01月17日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包