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命名空间

kubectl create ns logs

添加elastic helm charts 仓库

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

安装

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

参数说明

image: "docker.elastic.co/elasticsearch/elasticsearch"

imageTag: "7.2.0"

imagePullPolicy: "IfNotPresent"

podAnnotations: {}

esJavaOpts: "-Xmx1g -Xms1g"

resources:

  requests:

    cpu: "100m"

    memory: "2Gi"

  limits:

    cpu: "1000m"

    memory: "2Gi"

volumeClaimTemplate:

  accessModes: [ "ReadWriteOnce" ]

  storageClassName: "nfs-client"

  resources:

    requests:

      storage: 50Gi

2. Filebeat部署

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

Add the elastic helm charts repo

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

Install it

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

参数说明:

image: "docker.elastic.co/beats/filebeat"

imageTag: "7.2.0"

imagePullPolicy: "IfNotPresent"

resources:

  requests:

    cpu: "100m"

    memory: "100Mi"

  limits:

    cpu: "1000m"

    memory: "200Mi"

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

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

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

filebeatConfig:
filebeat.yml: |
filebeat.inputs:
- type: docker
containers.ids:
- '*'
multiline.pattern: '^[0-9]'
multiline.negate: true
multiline.match: after
processors:
- add_kubernetes_metadata:
in_cluster: true output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'

3. Kibana部署

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

Add the elastic helm charts repo

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

Install it

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

参数说明:

elasticsearchHosts: "http://elasticsearch-master:9200"

replicas: 1

image: "docker.elastic.co/kibana/kibana"

imageTag: "7.2.0"

imagePullPolicy: "IfNotPresent"

resources:

  requests:

    cpu: "100m"

    memory: "500m"

  limits:

    cpu: "1000m"

    memory: "1Gi"

4. Logstash部署

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

安装

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

参数说明:

image:

  repository: docker.elastic.co/logstash/logstash-oss

  tag: 7.2.0

  pullPolicy: IfNotPresent

persistence:

  enabled: true

  storageClass: "nfs-client"

  accessMode: ReadWriteOnce

  size: 2Gi

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

filebeatConfig:
filebeat.yml: |
filebeat.autodiscover:
providers:
- type: kubernetes
templates:
- condition:
equals:
kubernetes.labels.logFormat: "json"
config:
- type: docker
containers.ids:
- "${data.kubernetes.container.id}"
json.keys_under_root: true
json.overwrite_keys: true
json.add_error_key: true
- config:
- type: docker
containers.ids:
- "${data.kubernetes.container.id}"
processors:
- add_kubernetes_metadata:
in_cluster: true
output.elasticsearch:
hosts: '${ELASTICSEARCH_HOSTS:elasticsearch-master:9200}'

5. Elastalert部署

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

安装

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. python学习——列表生成式,生成器和迭代器

    列表生成式 列表生成式,是python内置的非常简单却强大的可以用来创建list的生成式.它可以极大的简化语句. """列表生成式""" # ...

  2. jvm系列(四):jvm调优-命令篇

    运用jvm自带的命令可以方便的在生产监控和打印堆栈的日志信息帮忙我们来定位问题!虽然jvm调优成熟的工具已经有很多:jconsole.大名鼎鼎的VisualVM,IBM的Memory Analyzer ...

  3. Java基础之String、StringBuffer、StringBuilder浅析

    Java基础之String.StringBuffer.StringBuilder浅析 一.前言: 位于java.lang包下的String.StringBuilder.StringBuffer一般都是 ...

  4. switch语句(下)(转载)

    之前我们介绍了在switch语句中使用整数类型和枚举类型的情况.这一部分继续介绍使用string类型的情况.string类型是switch语句接受的唯一一种引用类型参数. 下面来看一段C#代码. 代码 ...

  5. sql建表经验总结——主要是建表现象

    在建表方面你都有哪些感悟? 见过的建表的一些现象: 1,一对多业务,有时候在主表见一个字段xxIds,然后存多表的id,多个英文逗号隔开,不知道这样好不好? 2,大部分字段建成varchar(50), ...

  6. Java8 日期 API 业务使用

    最近在做账单结算业务,需要根据客户选择的结算方式来推算下一次结算日期以及该次结算日期段. 推算日期这样的业务直男君以前就写过,只不过使用的是熟悉的 java.util.date 和 java.util ...

  7. java-jsp特殊字符处理

    str = str.replaceAll("'", "''").replaceAll("\"", ""&quo ...

  8. 分享一个赚钱方法:用趣分类app在家轻松赚钱

    什么是趣分类 近期,垃圾分类是社会各界和广大市民关心的一个热门话题,随着垃圾分类工作的推进,各地都掀起学习垃圾分类的热潮.为了我们的美好生活,打响"垃圾分类"这场硬仗刻不容缓.据了 ...

  9. k近邻法的实现

    k近邻法 模型 使用的模型实际上对应于特征空间的划分.模型的三个基本要素:1.距离度量 2. k值的选择 3. 分类决策规则决定. k值的选择:k值的选择,k如果选择的过小会导致过拟合,模型会变得复杂 ...

  10. chrome总是崩溃

    1.在chrome浏览器打开chrome://plugins/ 2.找到不正常的插件,停用即可.比如有的插件安装了2个版本,停用低版本的即可.