helm部署Filebeat + ELK

系统架构图:

1) 多个Filebeat在各个Node进行日志采集,然后上传至Logstash

2) 多个Logstash节点并行(负载均衡,不作为集群),对日志记录进行过滤处理,然后上传至Elasticsearch集群

3) 多个Elasticsearch构成集群服务,提供日志的索引和存储能力

4) Kibana负责对Elasticsearch中的日志数据进行检索、分析

1. Elasticsearch部署

官方chart地址:https://github.com/elastic/helm-charts/tree/master/elasticsearch

创建logs命名空间

  1. kubectl create ns logs

添加elastic helm charts 仓库

  1. helm repo add elastic https://helm.elastic.co

安装

  1. helm install --name elasticsearch elastic/elasticsearch --namespace logs

参数说明

  1. image: "docker.elastic.co/elasticsearch/elasticsearch"
  2.  
  3. imageTag: "7.2.0"
  4.  
  5. imagePullPolicy: "IfNotPresent"
  6.  
  7. podAnnotations: {}
  8.  
  9. esJavaOpts: "-Xmx1g -Xms1g"
  10.  
  11. resources:
  12.  
  13. requests:
  14.  
  15. cpu: "100m"
  16.  
  17. memory: "2Gi"
  18.  
  19. limits:
  20.  
  21. cpu: "1000m"
  22.  
  23. memory: "2Gi"
  24.  
  25. volumeClaimTemplate:
  26.  
  27. accessModes: [ "ReadWriteOnce" ]
  28.  
  29. storageClassName: "nfs-client"
  30.  
  31. resources:
  32.  
  33. requests:
  34.  
  35. storage: 50Gi

2. Filebeat部署

官方chart地址:https://github.com/elastic/helm-charts/tree/master/filebeat

Add the elastic helm charts repo

  1. helm repo add elastic https://helm.elastic.co

Install it

  1. helm install --name filebeat elastic/filebeat --namespace logs

参数说明:

  1. image: "docker.elastic.co/beats/filebeat"
  2.  
  3. imageTag: "7.2.0"
  4.  
  5. imagePullPolicy: "IfNotPresent"
  6.  
  7. resources:
  8.  
  9. requests:
  10.  
  11. cpu: "100m"
  12.  
  13. memory: "100Mi"
  14.  
  15. limits:
  16.  
  17. cpu: "1000m"
  18.  
  19. memory: "200Mi"

那么问题来了,filebeat默认收集宿主机上docker的日志路径:/var/lib/docker/containers。如果我们修改了docker的安装路径要怎么收集呢,很简单修改chart里的DaemonSet文件里边的hostPath参数:

  1. - name: varlibdockercontainers
  2. hostPath:
  3. path: /var/lib/docker/containers #改为docker安装路径

对java程序的报错异常log实现多行合并,用multiline定义正则来匹配。

  1. filebeatConfig:
  2. filebeat.yml: |
  3. filebeat.inputs:
  4. - type: docker
  5. containers.ids:
  6. - '*'
  7. multiline.pattern: '^[0-9]'
  8. multiline.negate: true
  9. multiline.match: after
  10. processors:
  11. - add_kubernetes_metadata:
  12. in_cluster: true
  13.  
  14. output.elasticsearch:
  15. hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'

3. Kibana部署

官方chart地址:https://github.com/elastic/helm-charts/tree/master/kibana

Add the elastic helm charts repo

  1. helm repo add elastic https://helm.elastic.co

Install it

  1. helm install --name kibana elastic/kibana --namespace logs

参数说明:

  1. elasticsearchHosts: "http://elasticsearch-master:9200"
  2.  
  3. replicas: 1
  4.  
  5. image: "docker.elastic.co/kibana/kibana"
  6.  
  7. imageTag: "7.2.0"
  8.  
  9. imagePullPolicy: "IfNotPresent"
  10.  
  11. resources:
  12.  
  13. requests:
  14.  
  15. cpu: "100m"
  16.  
  17. memory: "500m"
  18.  
  19. limits:
  20.  
  21. cpu: "1000m"
  22.  
  23. memory: "1Gi"

4. Logstash部署

官方chart地址:https://github.com/helm/charts/tree/master/stable/logstash

安装

  1. $ helm install --name logstash stable/logstash --namespace logs

参数说明:

  1. image:
  2.  
  3. repository: docker.elastic.co/logstash/logstash-oss
  4.  
  5. tag: 7.2.0
  6.  
  7. pullPolicy: IfNotPresent
  8.  
  9. persistence:
  10.  
  11. enabled: true
  12.  
  13. storageClass: "nfs-client"
  14.  
  15. accessMode: ReadWriteOnce
  16.  
  17. size: 2Gi

匹配label:json的pod日志,没有的话正常收集。

  1. filebeatConfig:
  2. filebeat.yml: |
  3. filebeat.autodiscover:
  4. providers:
  5. - type: kubernetes
  6. templates:
  7. - condition:
  8. equals:
  9. kubernetes.labels.logFormat: "json"
  10. config:
  11. - type: docker
  12. containers.ids:
  13. - "${data.kubernetes.container.id}"
  14. json.keys_under_root: true
  15. json.overwrite_keys: true
  16. json.add_error_key: true
  17. - config:
  18. - type: docker
  19. containers.ids:
  20. - "${data.kubernetes.container.id}"
  21. processors:
  22. - add_kubernetes_metadata:
  23. in_cluster: true
  24. output.elasticsearch:
  25. hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'

5. Elastalert部署

官方chart地址:https://github.com/helm/charts/tree/master/stable/elastalert

安装

  1. helm install -n elastalert ./elastalert --namespace logs

 效果图:

helm部署Filebeat + ELK的更多相关文章

  1. 5分钟部署filebeat + ELK 5.1.1

    标题有点噱头,不过网络环境好的情况下也差不多了^_^   1. 首先保证安装了jdk.   elasticsearch, logstash, kibana,filebeat都可以通过yum安装,这里前 ...

  2. Filebeat+ELK部署文档

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出. 简单介绍: 日志主要包括系统日志.应用 ...

  3. filebeat + ELK 部署篇

    ELK Stack Elasticsearch:分布式搜索和分析引擎,具有高可伸缩.高可靠和易管理等特点.基于 Apache Lucene 构建,能对大容量的数据进行接近实时的存储.搜索和分析操作.通 ...

  4. linux单机部署kafka(filebeat+elk组合)

    filebeat+elk组合之kafka单机部署 准备: kafka下载链接地址:http://kafka.apache.org/downloads.html 在这里下载kafka_2.12-2.10 ...

  5. Kafka+Zookeeper+Filebeat+ELK 搭建日志收集系统

    ELK ELK目前主流的一种日志系统,过多的就不多介绍了 Filebeat收集日志,将收集的日志输出到kafka,避免网络问题丢失信息 kafka接收到日志消息后直接消费到Logstash Logst ...

  6. docker stack 部署 filebeat

    =============================================== 2018/7/21_第3次修改                       ccb_warlock 更新 ...

  7. Filebeat+ELK

    Filebeat+ELK filebeat是logstash的升级版,从功能上来说肯定不如logstash,但是logstah比较耗费资源: filebeat安装 暂时依托于window系统 下载fi ...

  8. FILEBEAT+ELK日志收集平台搭建流程

    filebeat+elk日志收集平台搭建流程 1.         整体简介: 模式:单机 平台:Linux - centos - 7 ELK:elasticsearch.logstash.kiban ...

  9. 使用docker部署filebeat和logstash

    想用filebeat读取项目的日志,然后发送logstash.logstash官网有相关的教程,但是docker部署的教程都太简洁了.自己折腾了半天,踩了不少坑,总算是将logstash和filebe ...

随机推荐

  1. JNI开发流程

    交叉编译 在一个平台上去编译另一个平台上可以执行的本地代码 cpu平台 arm x86 mips 操作系统平台 windows linux mac os 原理 模拟不同平台的特性去编译代码 jni开发 ...

  2. Mobx-React : 当前适合React的状态管理工具

    MobX 简单.可扩展的状态管理        MobX 是由 Mendix.Coinbase.Facebook 开源和众多个人赞助商所赞助的.    安装 安装: npm install mobx ...

  3. Linux 下安装 mysql8

    1.下载mysql wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar 2. ...

  4. Oracle - View

    Oracle View的创建 Create Or Replace View ViewName As Select * From Tables/View Where 条件;

  5. Java深层复制方式

    为什么需要深层复制 Object 的 clone() 方法是浅层复制(但是 native 很高效).另外,Java 提供了数组和集合的复制方法,分别是 Arrays.copy() 和 Collecti ...

  6. 一位996、CRUD开发者的一天

    记一笔流水账 今天我打算记一笔流水账,主要记录我的一天中干的事情,并思考效率低下的原因,同时分析一些可用的解决方案. 清早·开始做计划 早上六点四十,被梦想唤醒,然后看一会书,吃早餐,送娃上学. 九点 ...

  7. CF - 652 E Pursuit For Artifacts 边双联通

    题目传送门 题解总结起来其实很简单. 把所有的边双联通分量缩成一个点,然后建立好新边, 然后再从起点搜到终点就好了. 代码: /* code by: zstu wxk time: 2019/02/23 ...

  8. hdu1255 覆盖的面积(线段树面积交)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 面积交与面积并相似相比回了面积并,面积交一定会有思路,当然就是cover标记大于等于两次时. 但 ...

  9. B. Tea Queue codeforces Round.37.div2 队列

    B. Tea Queue time limit per test 1 second memory limit per test 256 megabytes input standard input o ...

  10. JavaScript new的运行过程

    参考 MDN网站的运算符 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new new 运算符 ...