【微服务】日志搜集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.hqwc.cn/news/341508.html

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

相关文章

conda环境下cannot write keep file问题解决

1 问题描述 conda环境下执行如下命令报错: pip install githttps://github.com/wenet-e2e/wenet.git 错误信息如下: (pt) PS D:\code\ptcontainer> pip install githttps://github.com/wenet-e2e/wenet.git Looking in indexes: http://pypi.doub…

基于VSG控制的MMC并网逆变器MATLAB仿真模型

微❤关注“电气仔推送”获得资料(专享优惠) 模型简介 根据传统同步发电机的运行特性设计了MMC-VSG功频控制器和励磁控制器, 实现了MMC-VSG逆变器对高压电网电压和频率的支撑。该模型包含MMC变流器模块,环流抑制模块,…

【Oracle】数据库对象

一、视图 1、视图概述 视图是一种数据库对象 视图 > 封装sql语句 > 虚拟表 2、视图的优点 简化操作:视图可以简化用户处理数据的方式。着重于特定数据:不必要的数据或敏感数据可以不出现在视图中。视图提供了一个简单而有效的安全机制&#x…

C++标准学习--多线程

在以往多线程的实现的时候,都是自己去亲自创建线程,采用特殊flag 及锁控制线程的运转状态。这无可厚非,但又似乎有重复造轮子的嫌疑。最近发现了一个线程池的轮子,很不错,ZZ一下。 C多线程线程池(全详解&a…

使用numpy处理图片——90度旋转

在《使用numpy处理图片——镜像翻转和旋转》一文中,我们介绍了如何将图片旋转的方法。本文将使用更简单的方法旋转图片90度。 左旋转90度 import numpy as np import PIL.Image as Imagedata np.array(Image.open(the_starry_night.jpg))# left 90 rot90LeftWith…

GPT Store开业大吉:一场AI技术与创新的盛宴

就在1.11 日,ChatGPT 正式上线 GPT Store ! OpenAI CEO 山姆奥特曼第一时间确认了这个消息: 自从GPTs的概念提出以来,短短两个月内,全球用户已经创造了超过300万个GPTs。 点击 GPT Store 或者进入ChatGpt页面&am…

李沐之经典卷积神经网络

目录 1. LeNet 2. 代码实现 1. LeNet 输入是32*32图片,放到一个5*5的卷积层里面,卷积层的输出通道数是6,高宽都是28(32-5128)。再经过2*2的池化层,把28*28变成14*14(28-22)/214&am…

python高校舆情分析系统+可视化+情感分析 舆情分析+Flask框架(源码+文档)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

Python——python练习题

1.小明身高1.75,体重80.5kg。请根据BMI公式(体重除以身高的平方)帮小明计算他的BMI指数,并根据BMI指数: 低于18.5:过轻 18.5-25:正常 25-28:过重 28-32:肥胖 高于32&…

如何从多个文件夹里各提取相应数量的文件放一起到新文件夹中形成多文件夹组合

首先,需要用到的这个工具: 百度 密码:qwu2蓝奏云 密码:2r1z 说明一下情况 文件夹:1、2、3里面分别放置了各100张动物的图片,模拟实际情况的各种文件 操作:这里演示的是从3个文件夹里各取2张图…

kafka下载安装部署

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

Flink异步IO

本文讲解 Flink 用于访问外部数据存储的异步 I/O API。对于不熟悉异步或者事件驱动编程的用户,建议先储备一些关于 Future 和事件驱动编程的知识。 本文代码gitee地址: https://gitee.com/ddxygq/BigDataTechnical/blob/main/Flink/src/main/java/operator/AsyncIODemo.java …