filebeat+elasticsearch+kibana日志分析

1 默认配置

1.1 filebeat

filebeat-7.17.yml,从网关中下载k8s的配置,指定es和kibana的配置

        通过kibana查询可以查询到日志了,但此时还不知道具体怎么用。 

       

1.2 kibana

在Discover中创建索引格式:filebeat-*,得到如下图,可以看出acc-statement-server的日志最多。但里面的字段太多了,下面应该怎么看呢?

        再跟进查看日志,filebeat应该是每一样记录一次,这个浪费了很多存储空间。另外排查问题也并不好查。

  2 多行合并输出

如果使用默认的配置,每一行日志,就会产生一条记录。

2.1 filebeat

        增加多行规则匹配

        设置索引,符合条件走自己的索引,否则则为默认索引

output.elasticsearch:
      hosts: ['10.101.10.2:9200','10.101.10.3:9200','10.101.10.4:9200']
      username: ${ELASTICSEARCH_USERNAME}
      password: ${ELASTICSEARCH_PASSWORD}
      indices:
        - index: acc-accountbook-server-%{+yyyy.MM.dd}
          when.contains:
            kubernetes.container.name: acc-accountbook-server
        - index: acc-analysis-server-%{+yyyy.MM.dd}
          when.contains:
            kubernetes.container.name: acc-analysis-server
        index: filebeat-7.17.25-%{+yyyy.MM.dd}

        在kibana中跟进日志,发现少部分日志输出成功,大多失败,这是什么原因呢?

         为什么有些可以添加数据,有些不能呢

        调试发现,我在索引前面加上了eayc就可以了,看来问题就出现在索引策略

2.2 logback

        上面的时间分割,是需要logback配置与之对应。如我的系统日志打印出来的是这个,那么filebeat中就无法实现多行合并了。

        如下图修改logback配置。

2.3 pipeline

        在elasticsearch中创建pipeline,参考了【ELK】到【EFK】,【Filebeat】收集【SpringBoot】日志,但最终还是放弃了,还是按照k8s自带的格式,这样便于处理,不需要非得自定义格式。

PUT _ingest/pipeline/eayc_log_pipeline
{
  "description": "岁月云日志管道",
  "processors": [
    {
      "remove": {
        "field": "agent.name",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "agent.ephemeral_id",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "log.file.path",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "input.type",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.node.labels.kubernetes_io/hostname",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.labels.k8s_kuboard_cn/layer",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.deployment.name",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "container.runtime",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "ecs.version",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.architecture",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.containerized",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.mac",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.os.codename",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.os.name",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "host.os.platform",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.labels.k8s_kuboard_cn/name",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.labels.pod-template-hash",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.namespace_uid",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.node.labels.beta_kubernetes_io/arch",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.node.labels.beta_kubernetes_io/os",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "log.flags",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "log.offset",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.container.id",
        "ignore_missing": true
      }
    },
    {
      "remove": {
        "field": "kubernetes.pod.uid",
        "ignore_missing": true
      }
    }
  ]
}

        创建索引策略

PUT _ilm/policy/eayc_log_policy
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "rollover": {
            "max_size": "50gb",
            "max_age": "30d"
          }
        }
      },
      "delete": {
        "min_age": "90d",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}

2.4 elasticsearch     

  在k8s中启动filebeat中,查看filebeat的日志发现

2024-10-29T07:55:33.935Z        ERROR   [elasticsearch] elasticsearch/client.go:226     failed to perform any bulk index operations: 500 Internal Server Error: {"error":{"root_cause":[{"type":"illegal_state_exception","reason":"There are no ingest nodes in this cluster, unable to forward request to an ingest node."}],"type":"illegal_state_exception","reason":"There are no ingest nodes in this cluster, unable to forward request to an ingest node."},"status":500}

         则需要在elasticsearch.yml中增加配置

node.roles: [ingest]

        创建组合模板

PUT _component_template/filebeat_settings
{
  "template": {
    "settings": {
      "number_of_shards": 1,
      "number_of_replicas": 1
    }
  }
}

PUT _component_template/filebeat_mappings
{
  "template": {
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "message": {
          "type": "text"
        }
      }
    }
  }
}

PUT _component_template/eayc_mappings
{
  "template": {
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "message": {
          "type": "text"
        },
        "custom_field": {
          "type": "keyword"
        }
      }
    }
  }
}

PUT _component_template/acc_mappings
{
  "template": {
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        },
        "message": {
          "type": "text"
        },
        "custom_field": {
          "type": "keyword"
        }
      }
    }
  }
}

PUT _index_template/filebeat
{
  "index_patterns": ["filebeat-*"],
  "composed_of": ["filebeat_settings", "filebeat_mappings"],
  "priority": 100,
  "template": {
    "settings": {
      "index.lifecycle.name": "eayc_log_policy",
      "index.lifecycle.rollover_alias": "filebeat-write"
    }
  }
}

PUT _index_template/eayc
{
  "index_patterns": ["eayc-*"],
  "composed_of": ["filebeat_settings", "eayc_mappings"],
  "priority": 100,
  "template": {
    "settings": {
      "index.lifecycle.name": "eayc_log_policy",
      "index.lifecycle.rollover_alias": "filebeat-write"
    }
  }
}

PUT _index_template/acc
{
  "index_patterns": ["acc-*"],
  "composed_of": ["filebeat_settings", "acc_mappings"],
  "priority": 100,
  "template": {
    "settings": {
      "index.lifecycle.name": "eayc_log_policy",
      "index.lifecycle.rollover_alias": "filebeat-write"
    }
  }
}

        接着再看acc添加进去了

        再看日志数据出来了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Rust 力扣 - 2090. 半径为 k 的子数组平均值

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 半径为 k 的子数组平均值 等价于 子数组长度为2 * k 1的总和 除于 2 * k 1 我们遍历长度为2 * k 1的窗口,我们只需要记录窗口内的平均值即可 题解代码 impl Solution {pub fn get_averages(num…

uniapp的video视频属性打包app后层级过高

问题:在使用uniapp开发APP时,使用video标签显示视频发现H5可以正常展示,但是打包到APP后,它的层级过高,把底部导航都盖住了。 官网说明:uni-app官网 官网给了cover-view组件或plus.nativeObj.view、subNVue…

浅谈UI自动化

⭐️前言⭐️ 本篇文章围绕UI自动化来展开,主要内容包括什么是UI自动化,常用的UI自动化框架,UI自动化原理等。 🍉欢迎点赞 👍 收藏 ⭐留言评论 🍉博主将持续更新学习记录收获,友友们有任何问题…

Vue3+Data-V实现可视化大屏页面布局

目录 一、前言 二、环境准备 1.Vue3安装npm create vuelatest 2.Data-V配置 项目Data-v安装 main.js中注册Data-v到全局 ​编辑可使用按需引入 3.测试 三、导航栏路由跳转配置 1.子组件mainNav组件准备 2.父组件准备导航栏参数传递 3.子组件接收父组件参数 4.导航…

Python 使用 LSTM 进行情感分析:处理文本序列数据的指南

使用 LSTM 进行情感分析:处理文本序列数据的指南 长短期记忆网络(LSTM)是一种适合处理序列数据的深度学习模型,广泛应用于情感分析、语音识别、文本生成等领域。它通过在训练过程中“记住”过去的数据特征来理解和预测序列数据的…

树莓派5实时时钟(RTC)

树莓派5板载一个实时时钟模块。它可以通过 USB-C 电源插口右侧板上的 J5(BAT) 插口进行电池供电。如果没有互联网连接来通过 NTP 获取时间,RTC 可能会很有用。 可以设置唤醒警报,将树莓派5切换到非常低功耗的状态(大约3mA)。当到达…

保姆级教程!!教你通过【Pycharm远程】连接服务器运行项目代码

小罗碎碎念 这篇文章主要解决一个问题——我有服务器,但是不知道怎么拿来写代码,跑深度学习项目。确实,玩深度学习的成本比较高,无论是前期的学习成本,还是你需要具备的硬件成本,都是拦路虎。小罗没有办法…

Chrome与夸克的安全性对比

在当今数字化时代,浏览器的安全性对于用户来说至关重要。Chrome和夸克作为两款流行的浏览器,各有其特点和优势。本文将对这两款浏览器的安全性进行详细对比,帮助用户更好地了解它们之间的差异。(本文由https://www.chromegw.com/的…

ZFC in LEAN 之 前集(Pre-set)

前集(Pre-set)的概念是相对于集合(Set),由数学家 Bishop 提出的。Bishop 认为定义一个集合需要三个步骤: 1. 定义该集合的元素是如何构建的(Construction)。 2. 定义集合中的两元素的…

libaom 源码分析:AV1帧内预测 CfL 模式

CfL预测模式原理 从亮度到色度CfL 是一种色度帧内预测模式,通过建立共位重建亮度采样的线性函数来模拟色度采样;对于不同的色度采样格式(例如4:2:0和4:2:2),可能需要对重建的亮度像素进行子采样,以匹配色度…

C++核心编程和桌面应用开发 第十八天(一元/二元谓词 内建函数对象 算术/关系/逻辑仿函数 函数适配器/取反适配器/函数指针适配器/成员函数适配器)

目录 1.函数对象 1.1函数对象特点 2.谓词 2.1一元谓词 2.2二元谓词 3.内建函数对象 3.1算术仿函数 3.2关系仿函数 3.3逻辑仿函数 4.函数适配器 5.取反适配器 5.1一元取反适配器 5.2二元取反适配器 6.函数指针适配器 7.成员函数适配器 1.函数对象 概念&#xff…

Java后端面试内容总结

先讲项目背景,再讲技术栈模块划分, 讲业务的时候可以先讲一般再特殊 为什么用这个,好处是什么,应用场景 Debug发现问题/日志发现问题. QPS TPS 项目单元测试,代码的变更覆盖率达到80%,项目的复用性高…

P3-2.【结构化程序设计】第二节——知识要点:多分支选择语句

讲解视频: P3-2.【结构化程序设计】第二节——知识要点:多分支选择语句 知识要点:多分支选择语句 一、任务分析 已知某公司员工的保底薪水为500,某月销售商品的利润profit(整数)与利润提成的关系如下(单位:元)&#…

关于Android Studio Koala Feature Drop | 2024.1.2下载不了插件的解决办法

解决 androidStudio Settings->Plugins下载插件,点击install后没反应,同时插件描述相关显示不出来 第一步: 第二步: 点击设置,勾选Auto-detect proxy settings,输入网址 https://plugins.jetbrains.com…

UE中查“资源包因何变脏”的方式

“脏”(Dirty)的意思 当用户对一个资源包(关卡,或材质等美术资源)做出了修改,变得与磁盘上存储的内容有差异时,UE会对其“标脏”(Mark Dirty),显示为 * 符号…

leetcode 2710 移除字符串中的尾随零

1.题目要求: 2.题目代码: class Solution { public:string removeTrailingZeros(string num) {while(num[num.size() - 1] 0){num.pop_back();}return num;} };

Iceoryx2:高性能进程间通信框架(中间件)

文章目录 0. 引言1. 主要改进2. Iceoryx2 的架构3. C示例代码3.1 发布者示例(publisher.cpp)3.2 订阅者示例(subscriber.cpp) 4. 机制比较5. 架构比较6. Iceoryx vs Iceoryx2参考资料 0. 引言 Iceoryx2 是一个基于 Rust 实现的开…

10.30.2024刷华为OD

文章目录 HJ20 密码验证合格程序(难过全部例子 list取数左开有闭 [0,3) )HJ21 简单密码HJ22 汽水瓶 (数学游戏...)HJ23 (dic就是map,注意怎么用, 善用values()和keys()函数返回list)语法知识记录 (留意转换的字符怎么拼接) HJ20 密…

【问题记录】解决VMware虚拟机中鼠标侧键无法使用的问题

前言 有项目需要在Linux系统中开发,因为要测试Linux中相关功能,要用到shell,在Windows中开发太麻烦了,因此我选择使用UbuntuXfce4桌面来开发,这里我用到了Linux版本的IDEA,除了快捷键经常和系统快捷键冲突…

【337】基于springboot的校园失物招领系统

校园失物招领网站的设计与实现 摘要 近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定校园失物招领网站…