ELK + Filebeat

在如今这个微服务盛行的时代,各行各业都在打造自己的软件产品。动辄要求微服务、大数据、BI、AI,别管用不用的到,反正你得会这些,我打算做。你说就一个小的制造行业工厂,就一个开发,还兼职厂里的网络和修电脑,做什么啊?现有的能维护好就不错了。其实每个公司都有适合自己的框架,就拿前面说的日志系统ELK来说吧,对于传统的软件来说没必要啊。来个spring boot admin来看日志就挺好的,甚至你拿notepad直接查看log文件也是可以的。
对于ELK的使用,就像上一节讲的,简单的流程是这样的:

一般流程

我们甚至可以直接在程序中引入logstash插件(我是不建议这样的,1是耦合度高,2是日志量大时,输入可能出问题),然后使用tcp输入:
简化流程

一般微服务架构下,尤其是多节点架构,日志文件较多且分散,为了方便查看,我们才使用elk呢。此时,日志流程是这样的:
微服务流程

但是官网不推荐logstash这样使用去收集日志,而是加入Filebeat来做收集工具。

1. Filebeat简介和使用情形

Filebeat:轻量型日志采集器。无论您是从安全设备、云、容器、主机还是 OT 进行数据收集,Filebeat 都将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。
官网给了介绍,可以仔细读一下。我感觉这个说的挺好,干什么的,怎么配合其他组件干(甚至考做了管道过载的优化),干完怎么看效果。
当我们加入Filebeat后,流程就变这样了:

增强流程

如果有丢失,logstash处理能力不够的话,我们可以加入kafka消息队列,做一下缓存,那就是这样了:


kafka流程

而按照官网的意思,若我们只是收集日志,不做其他处理,我们都不用加logstash管道流程,直接就成这样了:


直接流程

2. 安装Filebeat

前面已经安装过ELK了,这里我们只是加入Filebeat,同样的docker compose安装。

2.1 docker compose文件

docker-compose-filebeat.yml

version: '3.9'
services:
    beats:
        image: 'docker.elastic.co/beats/filebeat:8.14.3'
        container_name: filebeat
        hostname: filebeat
        restart: always
        # 启动用户
        user: root
        environment: 
            - TZ=Asia/Shanghai
            - ES_JAVA_OPTS=-Xms512m -Xmx512m
        privileged: true
        volumes:
            - /etc/timezone:/etc/timezone
            - /etc/localtime:/etc/localtime:ro
            # 映射日志文件,要读取的
            - '/logs/test:/logs/test'
            # 映射filebeat配置文件
            - '/opt/soft/filebeat/config/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml'
            # 映射elasticsearch证书目录,连接时候用
            - '/opt/soft/elasticsearch/config/certs:/usr/share/filebeat/config/certs'
        networks:
            elastic: 
                ipv4_address: 172.18.0.17
networks:
    elastic: 
      external: true
      driver: bridge
2.2 filebeat.yml配置文件

这个filebeat.yml的配置文件其实和前面的metricbeat.yml配置文件差不多的。所有beats都应该差不多:docker安装需要的配置、数据输入、数据输出、连kibana初始化看板的、processors增强的(一般也用不到)、开启自身监控数据的。
查看官网教程,里面很全。

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

# 输入日志文件,docker-compose文件中要把这个映射进容器 
filebeat.inputs:
- type: log
  paths:
    - /logs/test/test.log
    
#name: "test-01-filebeat"
#tags: ["test-01-server-log"]
# 额外添加字段传递信息
fields: {project: "test", server-id: "test-01"}

processors:
- add_host_metadata: ~

# 连接kibana
setup.kibana.host: "http://172.18.0.14:5601"
#账号密码,如果不设置,会直接取output中elasticsearch的账号密码
setup.kibana.username: "elastic"
setup.kibana.password: "123456"
# kibana启用ssl时
#setup.kibana.ssl.enabled: true
#setup.kibana.ssl.certificate_authorities: ["/etc/client/ca.pem"]
#setup.kibana.ssl.certificate: "/etc/client/cert.pem"
#setup.kibana.ssl.key: "/etc/client/cert.key

# 启动kibana自带的展现filebeat数据的功能,这个开启了,那filebeat启动时,kibana必须运行,不然启动不了
setup.dashboards.enabled: true

# 禁用 官方模板 的自动加载(加载时名字也是默认的),因为模板的名字需要自定义,为什么要自定义模板名字,因为自定义索引名字时要求的
setup.template.enabled: false
# 自定义模板名称    这个和自定义索引名配合使用的
setup.template.name: "%{[fields.server-id]}-filebeat"
setup.template.pattern: "%{[fields.server-id]}-filebeat-*"
# 覆盖现有模板
setup.template.overwrite: true
# 索引生命周期管理ilm功能默认开启,开启的情况下索引名称只能为filebeat-*, 通过setup.ilm.enabled: false进行关闭
setup.ilm.enabled: false


# 输出到elasticsearch
output.elasticsearch:
  hosts: ["https://172.18.0.11:9200"]
  # 自定义索引名称,配合上面setup一块使用
  index: "%{[fields.server-id]}-filebeat-%{+yyyy.MM.dd}" 
  username: "elastic"
  password: "123456"
  ssl: 
    certificate_authorities: "config/certs/ca/ca.crt"
 
# 输出到logstash 
#output.logstash:
#  hosts: ["172.18.0.16:5044"]

# 开启自身监控,发送数据到elasticsearch,因为配置了输出到elasticsearch,所以这里就配这几个
monitoring:
  enabled: true
  elasticsearch:
    username: "elastic"
    password: "123456"
2.3 启动filebeat,输出到elasticsearch
docker compose -f docker-compose-filebeat.yml up -d

我们在kibana看一下情况


被监控到

情况

可以看到,被监控到了。我们看一下索引:


索引

索引也有了,我们创建一个数据视图就可以在discovery中查看了:
image.png

可以看到我们在配置文件中加入的2个字段也有了,在fields底下。
2.4 启动filebeat,输出到logstash

这个就需要注意几点了:

  • logstash的pipeline配置中,input输入要改成beats,端口一般 5044
  • logstash的pipeline配置中,output输出,elasticsearch索引可以根据filebeat输出的标志来配置
  • logstash的pipeline配置中,filter过滤中都先别用,搞懂以后自己按需求加,不然可能filebeat传给logstash报错
  • logstash的docker compose 文件不用映射日志文件目录了,不用读取了
  • filebeat 配置中,输出改成 logstash
  • filebeat 配置中,因为不需要自定义 elasticsearch索引了,一些配置可以精简
  • filebeat 配置中,不需要kibana了

logstash配置前面已经做了,里面包含了这些,filebeat配置上面也有了,稍精简一下:
filebeat.yml配置文件 -- 输出到logstash:

filebeat.config:
  modules:
    path: ${path.config}/modules.d/*.yml
    reload.enabled: false

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true

# 输入日志文件,docker-compose文件中要把这个映射进容器 
filebeat.inputs:
- type: log
  paths:
    - /logs/test/test.log
    
#name: "test-01-filebeat"
# 官方文档建议把日志来源标志放到这里,其实用下面的fields添加字段也行
tags: ["test-01-server"]
# 额外添加字段传递信息
fields: {project: "test", server-id: "test-01"}

processors:
- add_host_metadata: ~
 
# 输出到logstash 
output.logstash:
  hosts: ["172.18.0.16:5044"]

# 开启自身监控,发送数据到elasticsearch,
# 建议监控用metricbeat来做,这个就不用了,setup.template(ilm/dashboard)配置就都不用了
monitoring:
  enabled: true
  elasticsearch:
    hosts: ["https://172.18.0.11:9200"]
    username: "elastic"
    password: "123456"
    ssl: 
      certificate_authorities: "config/certs/ca/ca.crt"

启动 filebeat,过2分钟,日志文件写几条日志,看kibana里面已经有了:


filebeat索引

创建数据视图看一下内容:


索引视图

可以看到内容,还有我们加的tags。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容