k8s部署elk+filebeat+logstash+kafka集群(三)logstash部署

K8S 部署 logstash 解析 nginx log 接入ELK_logstash-8 本来觉得应该挺简单的,部署个logstash容器,把日志文件挂载上就完事,结果很是折腾了一番,里面涉及到一些细节点(主要也是我做研发出身对这块不熟),网上找了很多文章,都没有能一次解决的,今天将我部署的过程分享一下,希望能帮到需要的同学。 阅读详情

logstash采用statefulset或者deployment部署均可,本文采用deployment
过滤条件根据实际环境的日志结构自行配置
configmap配置文件

# cat logstash-cm.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-configmap
  namespace: elk
  labels:
    app: logstash-cm
data:
  logstash.conf: |-
        input {
                kafka {
                        bootstrap_servers => ["kafka-kraft-statefulset-0.kafka-kraft-svc:9091,kafka-kraft-statefulset-1.kafka-kraft-svc:9091,kafka-kraft-statefulset-2.kafka-kraft-svc:9091"]
                        client_id => "k8s_logstash"
                        group_id => "k8s"
                        auto_offset_reset => "latest"
                        consumer_threads => 3
                        decorate_events => false
                        topics => ["k8s","nginx-access-log","nginx-error-log"]
                        codec => "json"
                }
        }
        input {
                beats {
                        host => "0.0.0.0"
                        port => 5044
                        codec => json
                }
        }
				filter {
              #json {
              #source => "msg"
              #remove_field => [ "msg" ]
              #}
                if "nginx-access" in [tags] {

                        grok {
                                match => { "message" => "%{IPORHOST:clientip} --- .* \[%{HTTPDATE:timestamp}\]\s(?<method>\S+)\s(?<uri>\/(\S)+)\s(?<protocol>(HTTP|HTTPS)\S+)\s-\s(?<response>\d+)\s" }
                        }
                        date {
                                match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
                                target => "@timestamp"

                        }
                        mutate {
                                remove_field => ["agent","event","host","@version","cloud","input","ecs","container","offset"]
                        }

                }
                if [fields][log_topic] == "k8s" {
                        mutate {
                                remove_field => ["log","agent","ecs","kubernetes","host","container"]
                        }
                }
        }
				output {
				 			 # 输出到控制台方便我们查看日志时候能看到消费的数据,这块会导致采集的容器日志量十分庞大,后面可以去掉,前期观察用
                stdout {
                        codec => rubydebug
                        codec => json
                }
                if  "k8s" in [tags] {
                        elasticsearch {
                                hosts => ["es-svc:9200"]
                        index => "k8slog-%{+YYYY.MM.dd}"
                        }

                }

                if  "nginx-access" in [tags] {
                        elasticsearch {
                                hosts => ["es-svc:9200"]
                                index => "nginx-access-%{+YYYY.MM.dd}"
                        }

                }

                if [@metadata][kafka][topic] == "nginx-error-log" {
                        elasticsearch {
                        hosts => ["es-svc:9200"]
                        index => "nginx-error-%{+YYYY.MM.dd}"
                        }
                }
        }

部署logstash

# cat logstash.yaml

# logstash.yml配置文件
apiVersion: v1
kind: ConfigMap
metadata:
  name: logstash-yml
  namespace: elk
  labels:
    type: logstash
data:
  logstash.yml: |-
    http.host: "0.0.0.0"
    xpack.monitoring.elasticsearch.hosts: http://es-svc:9200
    xpack.monitoring.enabled: true
---
# logstash-svc 如果不部署kafka的可以暴露30044端口让外部filebeat推送数据
apiVersion: v1
kind: Service
metadata:
  name: logstash-svc
  namespace: elk
  labels:
    app: logstash
spec:
  type: NodePort
  clusterIP: 10.96.100.101
  selector:
    app: logstash-8.1.0
  ports:
  - name: logstashport
    port: 5044
    targetPort: logport
    protocol: TCP
    nodePort: 30044
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: logstash-deployment
  namespace: elk
spec:
  replicas: 2
  selector:
    matchLabels:
        app: logstash-8.1.0
  template:
    metadata:
      labels:
          app: logstash-8.1.0
    spec:
      containers:
      - name: logstash
        image: 3.127.33.174:8443/elk/logstash:8.1.0
        imagePullPolicy: IfNotPresent
        env:
        - name: ES_JAVA_OPTS
          value: "-Xms512m -Xmx512m"
				- name: TZ
          value: Asia/Shanghai
        ports:
        - name: logport
          containerPort: 5044
          protocol: TCP
        command: ["logstash","-f","/usr/share/logstash/config/logstash.conf"]
        resources:
          limits:
            cpu: 1000m
            memory: 8192Mi
          requests:
            cpu: 500m
            memory: 2000Mi
        volumeMounts:
        - name: logstash-config
					mountPath: /usr/share/logstash/config/logstash.conf
          subPath: logstash.conf
        - name: timezone
          mountPath: /etc/localtime
        - name: logstash-yml
          mountPath: /usr/share/logstash/config/logstash.yml
          subPath: logstash.yml
      volumes:
      - name: logstash-config
        configMap:
          name: logstash-configmap
#          defaultMode: 0644
      - name: timezone
        hostPath:
          path: /etc/localtime
      - name: logstash-yml
        configMap:
          name: logstash-yml
#          defaultMode: 0644
      tolerations:
      - key: node-role.kubernetes.io
        effect: NoSchedule
        operator: Equal
        value: master
      - effect: NoSchedule
        operator: Exists
      affinity:
        nodeAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 1
						preference:
              matchExpressions:
              - key: node
                operator: In
                values:
                - master1
                - node1

查看容器kubectl get pods -n elk | grep logstash
在这里插入图片描述查看容器日志是否消费到数据 kubectl logs -f --tail 20 logstash-deployment-755c957557-b9n7s -n elk
在这里插入图片描述至此elk搭建完毕

K8S 部署 logstash 解析 nginx log 接入ELK “cni.projectcalico.org/ipAddrs”: “[“10.244.220.10”]” #pod绑定固定ip,依赖于calico ipam插件,必须使用calico 3.24.1以上的版本才可以。# sincedb_path => “自定义位置” # 此参数记录了读取日志的位置,默认在 data/plugins/inputs/file/.sincedb*#start_position => “beginning” # 此参数表示在第一次读取日志时从头读取。 阅读详情

相关推荐

解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程

ELK【ES+LogStash+Kibana】日志分析系统以及k8s集群日志采集

小橙子的笔记屋 1688

【Kubernetes 企业项目实战】04、基于 K8s 构建 EFK+logstash+kafka 日志平台(上)

EFK 组件详细介绍!!!

GG Bond 的博客 3204

Kubernetes中部署ELK Stack日志收集平台

kubelet会在/var/log/pods和/var/log/containers下面建立软链接,指向/var/lib/docker/containers/$CONTAINERID目录下的容器日志文件。- dissect: #参考https://www.elastic.co/guide/en/beats/filebeat/current/dissect.html。创建一个软链接/var/log/pods指向数据盘挂载点下的某个目录(ln -s /data/var/log/pods /var/log/)

别来沾边儿 1608

(十八)从零开始搭建k8s集群——使用KubeSphere管理平台搭建logstash服务

logstash是ELK日志管理服务的重要组件之一,本节内容我们实现使用kubesphere管理平台搭建一个可横向扩展的高可用logstash服务,用于日志收集。由于logstash是一个无状态的流处理软件,本身是没有集群方案的,我们这里只是做一个横向扩展。使用的镜像版本为logstash:8.1.3,这个要与前面elasticsearch的版本号一致,负责可能会有版本不兼容,发生未知的错误。

厉害哥哥的博客 3079

ELK之简介+Elasticsearch集群部署+索引管理

Logstash 作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由 Elasticsearch 存储,Kibana 对日志进行可视化处理。

2303_77178063的博客 4288

ELK日志系统实战:从零搭建K8s集群日志监控(附Filebeat配置避坑指南)

本文详细介绍了如何在Kubernetes集群中从零搭建ELK日志监控系统,并重点分享了Filebeat配置的实战经验与避坑指南。内容涵盖架构设计、组件部署、核心配置优化以及性能调优,帮助运维人员构建稳定高效的集中式日志管理平台,有效解决容器化环境下的日志采集与监控难题。

milk5的博客 756

k8s部署elk+filebeat+logstash+kafka集群(三)filebeat部署

k8s部署elk+filebeat+kafka集群,filebeat部署采集容器日志

filtercomp的博客 1101

k8s-elk:Kubernetes ELK-ElasticSearch,Kibana,Logstash和所有装饰

Kubernetes ELK-ElasticSearch,Kibana,Logstash和所有装饰 该存储库当前包含ElasticSearch和Kibana配置。 ElasticSearch以3种形式运行。 第一个是“主”类型,这是ElasticSearch文档中的主类型。 第二种类型是“摄取”类型,这是ElasticSearch文档中的摄取类型。 接收节点包括一个基于CPU使用率的horizo​​ntalalPodAutoscaler,这些节点连接到Kibana的内部服务以及外部HTTP输入的外部服务。 第三种类型是“数据”节点。 这些是使用statefulSet和PersistentVolumeClaims构造的,它们会相应缩放。 您只能按比例缩放(+ 1,-1,到最新的容器),并且所有通用的ElasticSearch规则都适用(如果删除的节点数量超过允许群集重新平衡自身之间无法承受

ELK系列之四---如何通过Filebeat和Logstash优化K8S集群的日志收集和展示

在ELK Stack组件中,有logstash和filebeat都可以实现日志收集,因为filebeat更轻量化,在K8S集群中通常使用filebeat来收集pod的日志,通过daemonSet控制器在每个K8S每个节点上运行一个filebeat来收集每个节点上的pod日志,filebeat官网图如下,filebeat输出支持对接Elasticsearch、Logstash、Kafka、Redis,本文选择对接Kafka,先缓存filebeat收集的日志,这样可以减少对ES的性能要求。

gjjumin的专栏 2520

GPMC开发笔记(TI开发者推荐笔记)

因为gpmc(General-Purpose Memory Controller)是TI特有的驱动,gpmc的资料比较少,本人开发gpmc驱动算是摸了很多石头过河的。所以想通过这遍文章可以给也做GPMC驱动开发的后来者有一点参考价值。文章如有瑕疵也请各位批评改正。 1.GPMC介绍 gpmc主要用于与nandflash,norflash,fpga进行通信。在这里主要介绍gpmc16位数据和地址线不复用nor模式下的通信。 注意:在这种模式下gpmc_a[0]引脚是没法使用的 1.1GPMC信号线

weixin_44316996的博客 7498

源码编译部署篇(二)源码编译milvus成功后如何启动standalone并调试成功!

由于Milvus官方文档只提及如何使用docker安装部署Milvus,关于源码安装方式篇幅较少,因此,我整理撰写了如何通过源码编译方式成功安装Milvus,详见此篇。之所以选择这种复杂的安装方式,可以调试源码进而熟悉Milvus如何搭建整个框架支持AI上层应用功能。根据上篇步骤部署虽然可以成功,然而,我却不能成功启动Milvus服务,这个问题困扰了一两天,现在终于得以解决并能成功调试Milvus源码。接下来,分为三个部分介绍如何启动和成功调试。

qq_43893755的博客 3368

kubernetes上部署ELK集群

一、系统架构 IP 角色 主机名 192.168.1.3 master master1 192.168.1.4 master master2 192.168.1.5 master master3 192.168.1.6 node node1 192.168.1.7 node node2 二、创建StorageClass和Namespace 1、创建StorageClass [root@master1 ~]# mkdir -p /elk/{master,data,clien

你说亮不亮的博客 5895

STM32 SAI接口实战:用CubeMX快速配置多通道音频采集(附DMA优化技巧)

本文详细介绍了如何使用STM32的SAI接口通过CubeMX快速配置多通道音频采集系统,并提供了DMA双缓冲优化技巧。内容涵盖TDM模式配置、时钟同步、DMA优化及常见问题排查,帮助开发者高效实现高速数据采集应用。

weixin_42549037的博客 225

企业级日志系统架构——ELK(Elasticsearch、Filebeat、Kafka、Logstash、Kibana)

文章目录一、概述1)Elasticsearch 存储2)Filebeat 日志数据采集3)Kafka4)Logstash 过滤5)Kibana 展示filebeat和logstash的关系二、ELK相关的备份组件和备份方式1)Elasticsearch的snapshot快照备份2)elasticdump备份迁移es数据3)esm备份迁移es数据 一、概述 大致流程图如下: 1)Elasticsearch 存储 Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有

匠人精神,持之以恒! 6290

MRST开源油藏模拟:从入门到精通的全流程指南

本文全面介绍了MRST开源油藏模拟工具的使用方法,从环境搭建到核心功能实战,再到性能优化和工业级应用。MRST作为一款基于MATLAB的开源工具,为油藏工程师提供了强大的数值模拟能力,特别适合教学和科研场景。文章还分享了二次开发技巧和常见问题解决方案,帮助读者快速掌握油藏模拟技术。

beer8的博客 326

超详细 | 贝叶斯网络基础——有图有真相

Hello,大家好,我是starz。这是本系列的第二篇《概率基础Ⅱ》,虽说是概率基础,但作为过渡,它开始以图为载体 这节的主要内容有: 贝叶斯网络 三种结构 D-划分 贝叶斯球 马尔科夫毯 应用例子 总结 让我们开始吧 :3 贝叶斯网络 概率图模型可笼统分为两类,一是基于无向图的马尔科夫网络: 二是基于有向图的贝叶斯...

qq_41603411的博客 2万+

ELK+filebeat+kafka

基于观察者模式设计的分布式结构,负责存储和管理架构当中的元信息,架构当中的应用接受观察者的监控,一旦数据有变化,通知对应的zookeeper,保存变化的信息。3、统一集群管理,在整个分布式的环境中,必须实时的掌握每个节点的状态,如果状态发生变化,要及时更新。1、点对点,一对一,生产者生产消息,消费者消费消息,这个是一对一的。消息的生产者发布一个主题,其他的消费者订阅这个主题,从而实现一对多。经纪人:zookeeper,存储分区的信息,kafka集群的元数据。2、统一配置管理,所有的节点信息的配置要是一致。

2401_85041083的博客 1411

H3C交换机命令大全,分模块好记忆!

在深入命令之前,我们先来了解H3C交换机的命令行基础。<H3C>[H3C]常用基础命令如下:这些基础命令是操作H3C交换机的敲门砖,熟练掌握后,我们将按模块深入探讨更具体的配置命令。H3C交换机的命令可以按功能模块分类,包括系统管理、接口配置、VLAN操作、链路聚合、路由配置、安全管理等。

网络技术联盟站 782

K8S部署ELK(一):部署Filebeat日志收集器

K8S部署ELK(一):部署Filebeat日志收集器

weixin_74812406的博客 1732

Agent Skills应用解析:构建可扩展、高效率AI探员

Agent Skills是一个简洁而强大的概念:它是一个包含组织化的指令、脚本和资源的文件夹,智能体可以动态地发现并加载这些内容,以在特定任务中表现更佳。可组合性(Composability):一个Agent Skill是一个独立的、封装良好的能力单元。开发者可以为不同的功能(例如PDF处理、网络浏览、数据分析)创建独立的技能,然后根据需要将它们组合起来,赋能不同的智能体。这意味着不再需要为每个用例构建碎片化、定制设计的智能体,而是可以通过组合现有技能来快速构建新的专业智能体。

形上得其象,形下合于数;阴阳自济,玄理自明。 1627

硅基半导体量子点:单电子自旋量子比特技术手册

现在我们已经了解了从硅片到容错计算的全部环节,让我们用一张总览图把碎片拼成完整拼图。fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;important;important;important;color:#000!important;important;important;important;important;color:#000!

VectorShift的博客 370

kubernetes(二)安装elk filebeat日志收集系统

0.架构 filebeat => kafka_cluster => logatash => elasticsearch_cluster =>kibana filebeat 以demoset运行在kubernetes集群中的每台宿主机上去收集日志,以kafka集群做消息队列, logstash做日志过滤,存储在elasticsearch集群中,最后由kibana展示。 在Ku...

my_chenjie的博客 2031

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

kubernetes集群日志收集ELK

kubernetes集群日志收集ELKELK架构日志采集方式方式1:Node级日志代理方式2:伴生容器(sidecar container)作为日志代理方式3:应用直接上传日志对比部署部署文件下载kubectl 基本操作命令总结部署elastisearch部署kibana部署filebeat收集日志kibana查看日志参考 ELK,分别指Elastic公司的Elasticsearch、Logsta...

qq_33430322的博客 2306

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍

Filebeat 是一个轻量级的日志传输工具,它负责收集日志数据并将其传输到Elasticsearch进行索引和存储。ELK是Elasticsearch、Logstash和Kibana三个开源项目的首字母缩写,它们共同构成了一个强大的日志管理和分析平台。

小毕超博客 2593

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

【EFK】基于K8S构建EFK+logstash+kafka日志平台

Elasticsearch 是一个分布式的免费开源搜索和分析引擎,适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。Elasticsearch 在 Apache Lucene 的基础上开发而成,由 Elasticsearch N.V.(即现在的 Elastic)于 2010 年首次发布。Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件;

hj的博客 2936

k8s部署elk+filebeat+logstash+kafka集群(二)kafka-kraft模式集群

k8s中部署kafka-kraft模式集群,镜像构建到对外暴露

filtercomp的博客 1718
上一篇: k8s部署elk+filebeat+logstash+kafka集群(三)filebeat部署
下一篇: nginx添加upstream_check_module跟fair
filtercomp
博客等级 码龄5年 33粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值