【微服务】日志搜集elasticsearch+kibana+filebeat(单机)

日志搜集es+kibana+filebeat(单机)
日志直接输出到es中,适用于日志量小的项目
基于7.17.16版本

主要配置在于filebeat, es kibana配置改动不大

环境部署

es kibana单机环境部署


解压即可
常见报错,百度即可。

记录一个今天碰到的错误,
es可以正常启动,但是Head插件访问索引,点不了
这块会无法点击
在这里插入图片描述

org.elasticsearch.ElasticsearchException: not all primary shards of [.geoip_databases] index are active

解决

#增加配置elasticsearch,yml
#关闭geoip数据库的更新 重启即可
ingest.geoip.downloader.enabled: false

访问es ip:9200
在这里插入图片描述
访问Kibana
ip:5601
在这里插入图片描述

filebeat

全部配置

filebeat.inputs:
# 采集多个服务的日志,配置多个数组即可,
- type: logid: kw_serverenabled: truepaths:# 多个目录配置,配置多个数组元素即可,不知道filebeat是否支持多级目录匹配 /**/*.log- /usr/local/kw-microservices/*.log- /usr/local/nginx/*.log# 设置fields,标记此日志 注意字段区分,方便后面添加索引fields:app: kw_server# 日志首行匹配方式  multiline.type: pattern  multiline.pattern: '^\d{4}-\d{2}-\d{2}'multiline.negate: truemultiline.match: after  
# ============================== Filebeat modules ==============================filebeat.config.modules:# Glob pattern for configuration loadingpath: ${path.config}/modules.d/*.yml# Set to true to enable config reloadingreload.enabled: false# Period on which files under path should be checked for changes#reload.period: 10s# ======================= Elasticsearch template setting =======================
setup.ilm.enabled: false                    # 如果要创建多个索引,需要将此项设置为 false# 这块的配置还不太懂,貌似是为了使用自定义索引模版用的,貌似这块的配置目前是没什么用的,我没有在es中创建索引模版
setup.template.name: kw_server_index            # 设置模板的名称
setup.template.pattern: kw_server-*         # 设置模板的匹配方式,索引的前缀要和这里保持一致
setup.template.overwrite: true                # 开启新设置的模板
setup.template.enabled: false                 # 关掉默认的模板配置
setup.template.settings:index.number_of_shards: 1#index.codec: best_compression#_source.enabled: false
# ================================== Outputs ===================================# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:# Array of hosts to connect to.hosts: ["localhost:9200"]index: kw_server-%{[fields.type]}-%{+yyyy.MM.dd}     # 设置索引名称,后面引用的 fields.type 变量。此处的配置应该可以省略(不符合下面创建索引条件的日志,会使用该索引)indices:                                             # 使用 indices 代表要创建多个索引- index: kw_server-log-%{+yyyy.MM.dd}       # 设置 日志的索引,注意索引前面的 station_log 要与setup.template.pattern 的配置相匹配when.equals:                                     # 设置创建索引的条件:当 fields.type 的值等于 newframe-log-access 时才生效fields.app: kw_server# 这里是用的pipeline 过滤日志添加字段TraceId链路ID用得,之前是好使的,不知道为什么这版本不好使了,也没报错,就是字段加不上# 改用后面的processors.script方式处理了# pipeline: "extract-traceid-pipeline"      # ================================= Processors =================================
processors:# 添加字段,可以增加条件判断,具体看官网文档- add_fields:target: ""fields:label: "kw-microservices"# 日志过滤脚本,这里用得是js语法 # 处理时间问题,提取链路ID TID- script:lang: javascriptid: my_filter1tag: enablesource: function process(event) {var str= event.Get("message");var time =str.split(" ").slice(0,2).join(" ");event.Put("start_time",time);var pattern = /(TID:[\w]+)/; var match = str.match(pattern); if (match) {  event.Put("TID", match[1].slice(4));  }}# 格式化日期- timestamp:# 格式化时间值 给 时间戳 field: start_time# 使用我国东八区时间  解析log时间timezone: Asia/Shanghailayouts:- '2006-01-02 15:04:05'- '2006-01-02 15:04:05.999'test:- '2019-06-22 16:33:51'# 删除字段 - drop_fields:# when: 可以设置去除的条件#   conditionfields: ["log","host","input","agent","ecs","start_time"]  

filebeat timestamp字段值不对

两种解决方式

  • filebeat processors
  • es pipeline

processors.script

注意 这里面得javascript ,不能使用let 只能使用var
在source中,不要使用 #代码注释,会报错。

processors:- script:lang: javascriptid: my_filter1tag: enablesource: function process(event) {var str= event.Get("message");var time =str.split(" ").slice(0,2).join(" ");event.Put("start_time",time);}     - timestamp:# 格式化时间值 给 时间戳 field: start_time# 使用我国东八区时间  解析log时间,必须配置,否则在kibana中查看到的会多8小时timezone: Asia/Shanghailayouts:- '2006-01-02 15:04:05'- '2006-01-02 15:04:05.999'test:- '2019-06-22 16:33:51'- drop_fields:# when: 可以设置去除的条件#   conditionfields: ["log","host","input","agent","ecs","start_time"] 

es pipline

在es中创建pipline ,这个我没有试过,用的第一种方式
在这里插入图片描述

output.elasticsearch:# Array of hosts to connect to.hosts: ["localhost:9200"]index: kw_server-%{[fields.type]}-%{+yyyy.MM.dd}     # 设置索引名称,后面引用的 fields.type 变量。此处的配置应该可以省略(不符合下面创建索引条件的日志,会使用该索引)indices:                                             # 使用 indices 代表要创建多个索引- index: kw_crm_server-log-%{+yyyy.MM.dd}       # 设置 日志的索引,注意索引前面的 station_log 要与setup.template.pattern 的配置相匹配when.equals:                                     # 设置创建索引的条件:当 fields.type 的值等于 newframe-log-access 时才生效fields.app: kw_crm_serverpipeline: "在es中创建的pipeline名称"

添加字段

es pipline方式

之前使用7.13版本,这种方式是添加TID字段成功过的,今天使用了7.17版本不好使了,也不报错。

在开发工具中,添加模版

PUT /_ingest/pipeline/extract-traceid-pipeline
{"description" : "extract-traceid-pipeline",    "processors" : [{"grok" :{            "field" : "message",    "patterns" : ["\\[(?:TID:)%{DATA:TID}\\]"],//匹配增加忽略 表示当filebeat输入的数据没有该字段时,则不作任何处理便将文档ES,如果不配置则会抛出字段缺失的异常,文档不会正常写入。"ignore_missing": true,  "ignore_failure": true  }}]
}

查看创建的结果
GET /_ingest/pipeline/extract-traceid-pipeline

filebeat processors

增加script,具体的pattern ,要看实际的过滤字段的格式

processors:- script:lang: javascriptid: my_filter1tag: enablesource: function process(event) {var pattern = /(TID:[\w]+)/;  var match = log_message.match(pattern);  if (match) {  event.set("TID", match[1].slice(4));  }}

kibana

在开发工具中,有grok,可以测试日志的正则表达式
在这里插入图片描述

测试效果

创建索引模式
在这里插入图片描述

discover中,查询日志信息

  • 可以看到TID被加上了
  • message中的时间和timestamp是一致的
    在这里插入图片描述

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

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

相关文章

stm32引脚输入输出设置寄存器操作汇总

引脚数据表说明 实际历程 下图时正点原子i2c时使用的宏定义 注意事项 1.实际使用的并不是标准的输入输出(i2c的开漏)模式。 解释 SDA_IN() 使用了 0x8 0b 10 00 bit3 bit2 [0b10] bit1 bit0[00] (上下拉输入模式) &…

梦想贩卖机升级版知识付费源码实现流量互导,多渠道变现

梦想贩卖机升级版,变现宝吸收了资源变现类产品的许多优势,并剔除了那些无关紧要的元素,使得本产品在运营和变现能力方面实现了质的飞跃。多领域素材资源知识变现营销裂变独立版本。 支持:视频、音频、图文、文档、会员、社群、用…

yolov8n 瑞芯微RKNN和地平线Horizon芯片仿真测试部署,部署工程难度小、模型推理速度快

特别说明:参考官方开源的yolov8代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。 模型和完整仿真测试代码,放在github上参考链接 模型和代码。 因为之前写了几篇yolov8模型部署的博文,存在两个问题&…

记录一下Canal的错误,主要是top.javatool.canal.client.util下的StringConvertUtil引起的

项目场景: 提示:这里简述项目相关背景: 由于数据库的一个localdatetime字段是空的, 然后修改数据库数据同步canal的时候报了这个错误: Caused by: java.lang.IllegalArgumentException: Can not set java.time.LocalD…

D盘能不能随便格式化?根据不同情况来分析

随着计算机技术的发展,D盘已成为许多用户存储重要数据和文件的一部分。然而,当我们想要对D盘进行格式化时,是否可以随意进行操作呢?本文将探讨这一问题,并给出关于“电脑D盘数据格式化后怎么恢复”的相关方法。 图片来…

jsonvue-mobile 联动方式说明。

目录 jsonvue-mobile的联动类型分为两种 一种是命令式的: 另一种是响应式的: 联动场景 场景一:某一个字段的值变化时,同步修改另一个字段的值 命令式: 响应式: 场景一演示效果GIF 场景二&#xff1…

kafka下载安装部署

Apache kafka 是一个分布式的基于push-subscribe的消息系统,它具备快速、可扩展、可持久化的特点。它现在是Apache旗下的一个开源系统,作为hadoop生态系统的一部分,被各种商业公司广泛应用。它的最大的特性就是可以实时的处理大量数据以满足各…

基于单片机设计的智慧农业大棚检测系统

一、设计目标 本项目基于单片机设计一个智慧农业大棚检测系统,以提供实时监测和管理大棚环境的关键参数。系统支持环境温度、湿度检测,光照强度检测,并能根据预设的阀值进行报警提示。为了实现数据的显示和管理,该系统还利用Qt开…

浏览器输入一个域名的解析过程

目录 从输入一个域名的解析过程 以www.baidu.com为例子 本地缓存和hosts文件 mDNS和LLMNR NBT-NS 路由器广播 Root域名服务器 顶级域名服务器 目标域名服务器 DNS解析完成 操作系统发起TCP连接: TCP三次握手: TCP连接的建立采用经典的三次握手过程&#…

C2855 命令行选项“/Zc:referenceBinding“与预编译头不一致和C2855 命令行选项“/Zc:__cplusplus“与预编译头不一致

在VS2019和Qt5.12.12环境下,笔记本上编译这个工程没有问题,把工程拷贝到台式机上,一样的配置,但是报如下错误: 打开项目的命令行配置如下: 解决办法:在编译选项"/Zc:referenceBinding"…

ptaR7-5打探基priority_queue的使用

题目 最近乐乐开发出了一款新的游戏《打探基》,这款游戏需要多人配合来玩,至少三个游戏玩家同时出招才能使探基的血量下降一点,同时,出招的每个人战斗力下降一点,当战斗力小于10的时候将不能再出招,不知道…

electron+vue网页直接播放RTSP视频流?

目前大部分摄像头都支持RTSP协议,但是在浏览器限制,最新版的浏览器都不能直接播放RTSP协议,Electron 桌面应用是基于 Chromium 内核的,所以也不能直接播放RTSP,但是我们又有这个需求怎么办呢? 市场上的方案…

一小时掌握:使用ScrapySharp和C#打造新闻下载器

引言 爬虫技术是指通过编程的方式,自动从互联网上获取和处理数据的技术。爬虫技术有很多应用场景,比如搜索引擎、数据分析、舆情监测、电商比价等。爬虫技术也是一门有趣的技术,可以让你发现网络上的各种有价值的信息。 本文将介绍如何使用…

Unity组件开发--长连接webSocket

1.下载安装UnityWebSocket 插件 https://gitee.com/cambright/UnityWebSocket/ 引入unity项目: 2.定义消息体结构:ExternalMessage和包结构Package: using ProtoBuf; using System; using System.Collections; using System.Collections.Ge…

【java八股文】之Java基础篇

1、Java有哪几种数据类型 基本数据类型:byte(1字节) short(2字节) int(4字节) long(8字节) float(4字节) double(8字节) char(2字节&a…

【动态规划】 【字典树】C++算法:472 连接词

作者推荐 【动态规划】458:可怜的小猪 涉及知识点 动态规划 字典树 LeetCode472 连接词 给你一个 不含重复 单词的字符串数组 words ,请你找出并返回 words 中的所有 连接词 。 连接词 定义为:一个完全由给定数组中的至少两个较短单词(不…

DUET: Cross-Modal Semantic Grounding for Contrastive Zero-Shot Learning论文阅读

文章目录 摘要1.问题的提出引出当前研究的不足与问题属性不平衡问题属性共现问题 解决方案 2.数据集和模型构建数据集传统的零样本学习范式v.s. DUET学习范式DUET 模型总览属性级别对比学习正负样本解释: 3.结果分析VIT-based vision transformer encoder.消融研究消…

RTL编码(1)——概述

一、RTL级描述 RTL(Register Transfer Level)级:寄存器+组合逻辑,其功能与时序用Verilog HDL(以下简称Verilog)或VHDL代码描述。 RTL描述包含了同步数字电路最重要的三个特征:组合逻…

【Python】编程练习的解密与实战(三)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《Python | 编程解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🪐1. 初识Python &a…

[BJDCTF2020]ZJCTF,不过如此

题目源码&#xff1a; <?phperror_reporting(0); $text $_GET["text"]; $file $_GET["file"]; if(isset($text)&&(file_get_contents($text,r)"I have a dream")){echo "<br><h1>".file_get_contents($tex…