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

这篇具有很好参考价值的文章主要介绍了【微服务】日志搜集elasticsearch+kibana+filebeat(单机)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

环境部署

es kibana单机环境部署


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

记录一个今天碰到的错误,
es可以正常启动,但是Head插件访问索引,点不了
这块会无法点击
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

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

解决

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

访问es ip:9200
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构
访问Kibana
ip:5601
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

filebeat

全部配置

filebeat.inputs:
# 采集多个服务的日志,配置多个数组即可,
- type: log
  id: kw_server
  enabled: true
  paths:
    # 多个目录配置,配置多个数组元素即可,不知道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: true
  multiline.match: after  
# ============================== Filebeat modules ==============================

filebeat.config.modules:
  # Glob pattern for configuration loading
  path: ${path.config}/modules.d/*.yml

  # Set to true to enable config reloading
  reload.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: javascript
      id: my_filter1
      tag: enable
      source: 
        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/Shanghai
      layouts:
        - '2006-01-02 15:04:05'
        - '2006-01-02 15:04:05.999'
      test:
        - '2019-06-22 16:33:51'
  # 删除字段 
  - drop_fields:
      # when: 可以设置去除的条件
      #   condition
      fields: ["log","host","input","agent","ecs","start_time"]  

filebeat timestamp字段值不对

两种解决方式

  • filebeat processors
  • es pipeline

processors.script

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

processors:
  - script:
      lang: javascript
      id: my_filter1
      tag: enable
      source: 
        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/Shanghai
      layouts:
        - '2006-01-02 15:04:05'
        - '2006-01-02 15:04:05.999'
      test:
        - '2019-06-22 16:33:51'
  - drop_fields:
      # when: 可以设置去除的条件
      #   condition
      fields: ["log","host","input","agent","ecs","start_time"] 

es pipline

在es中创建pipline ,这个我没有试过,用的第一种方式
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

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_server
  pipeline: "在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: javascript
      id: my_filter1
      tag: enable
      source: 
        function process(event) {
            var pattern = /(TID:[\w]+)/;  
            var match = log_message.match(pattern);  
            if (match) {  
               event.set("TID", match[1].slice(4));  
            }
        }

kibana

在开发工具中,有grok,可以测试日志的正则表达式
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

测试效果

创建索引模式
【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

discover中,查询日志信息文章来源地址https://www.toymoban.com/news/detail-813951.html

  • 可以看到TID被加上了
  • message中的时间和timestamp是一致的
    【微服务】日志搜集elasticsearch+kibana+filebeat(单机),运维技术,微服务,elasticsearch,架构

到了这里,关于【微服务】日志搜集elasticsearch+kibana+filebeat(单机)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 搭建EFK(Elasticsearch+Filebeat+Kibana)日志收集系统[windows]

    EFK简介 Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。 FileBeats 是数据采集的得力工具。将 Beats 和您的容器一起置于服务器上,或者将 Beats 作为函数加以部署,然

    2024年02月08日
    浏览(54)
  • filebeat+kafka+logstash+elasticsearch+kibana实现日志收集解决方案

    前言:我们使用nginx来模拟产生日志的服务,通过filebeat收集,交给kafka进行消息队列,再用logstash消费kafka集群中的数据,交给elasticsearch+kibana监控 服务器环境: 192.168.2.1:elasticsearch 192.168.2.2:filebeat+nginx 192.168.2.3:kafka 192.168.2.4:logstash elasticseatch+filebeat+kafka+logsstash(6.60)清

    2024年02月03日
    浏览(55)
  • 基于Elasticsearch+Logstash+Kibana+Filebeat的日志收集分析及可视化

    sudo rm /var/lib/dpkg/lock* sudo dpkg --configure -a apt update tail -f /var/log/car.log 海量的业务应用,也带来了海量的日志数据,给业务应用的运维带来了新的挑战。例如,我们常用的网约车应用,单个平台的日订单数量可以达到上亿条,产生各种类型的日志数据,像用户业务方面会产生交

    2024年01月21日
    浏览(53)
  • ELKF日志系统搭建部署教程:从零开始构建Elasticsearch + Logstash + Filebeat + Kibana

    学习如何从头开始搭建和部署ELKF日志系统,利用Elasticsearch、Logstash、Filebeat和Kibana来实现高效的数据采集、处理和可视化展示。跟随本教程,轻松构建稳定的日志系统。

    2024年02月05日
    浏览(50)
  • K8s部署轻量级日志收集系统EFK(elasticsearch + filebeat + kibana)

    目录 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 二.搭建Elasticsearch + kibana 1.在可执行kubectl命令的服务器准备安装的yml文件 2.在elasticsearch-kibana目录下创建配置文件elasticsearch.yml 3.创建kibana配置文件kibana.yml 4.在k8s中创建elasticsearch和kibana的配置文件configmap 5.检查

    2024年02月08日
    浏览(64)
  • 【ELK企业级日志分析系统】部署Filebeat+Kafka+Logstash+Elasticsearch+Kibana集群详解(EFLFK)

    参见安装与部署ELK详解 参见安装与部署EFLK详解 参见安装与部署Zookeeper集群详解 1.1.1 为什么需要消息队列(MQ) MQ(Message Queue)主要原因是由于 在高并发环境下,同步请求来不及处理,请求往往会发生阻塞 。比如大量的并发请求,访问数据库,导致行锁表锁,最后请求线程会

    2024年02月16日
    浏览(47)
  • docker搭建最新ELFK分布式日志收集系统(elasticsearch+logstash+filebeats+kibana7.16.1)

    随着分布式项目的集群部署,日志的存储也分散开来,在日后出现问题进行日志定位时就会出现很困难,服务器很多会做负载均衡,这样最终请求所落在的服务器也随机起来,所以好的方式就是集中收集起来,不需要一台一台服务器去查,方便查看。 ELFK是Elasticsearch+Logstash+F

    2024年02月08日
    浏览(49)
  • ElasticSearch+Kibana+Logstash实现日志可视化运维监控

    1.目标 1.安装ElasticSearch 2.安装Kibana 3.安装Logstash采集/var/log/messages日志内容 4.图表化展示日志监控结果 2.版本 这三者的版本号要完全一样 ElasticSearch 6.1.1 Kibana 6.1.1 Logstash 6.1.1 Jdk1.8.0_181 3.安装ElasticSearch 安装包:https://cloud.189.cn/t/zuQz6v2YZRVb (访问码:6sbf) 下载网站:https://www.elast

    2024年02月10日
    浏览(54)
  • 使用ELK(ES+Logstash+Filebeat+Kibana)收集nginx的日志

    书接上回:《ELK中Logstash的基本配置和用法》 默认情况下,Nginx的日志记录的是下面的格式: 在 nginx.conf 中也可以看到相关配置信息: 现在为了方便收集日志,我们把这里的格式改为 json格式,在 nginx.conf 中加入下面的内容: 以上配置是手动组装了一个json格式的配置信息。

    2024年02月11日
    浏览(45)
  • Filebeat入门及使用-5 读取nginx日志,写入ES,并用kibana展示

    1 安装nginx, 并找到nginx的日志目录,步骤3要使用 2 配置Filebeat的module,在Filebeat中,有大量的module,如mysql,kafka,redis,nginx等,可以简化我们的配置,方便使用。 查看Filebeat支持模块 命令:./filebeat modules list 启动Nginx模块 启动命令:./filebeat modules enable nginx 禁用命令:./fi

    2023年04月12日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包