Filebeat + Kafka + Elasticsearch + Kibana 实现日志收集与管理

Filebeat 日志源配置:

filebeat.inputs:

Each - is an input. Most options can be set at the input level, so

you can use different inputs for various configurations.

Below are the input specific configurations.

  • type: log

Change to true to enable this input configuration.

enabled: true

Paths that should be crawled and fetched. Glob based paths.

paths:

  • /log/error.log

这三行可以将 json 内容解析成键值对的形式,否则会将全部 json 内容放到一个 message 字段里

json.keys_under_root: true

json.add_error_key: true

json.overwrite_keys: true

Filebeat 发送到 Elasticsearch:

#==================== Elasticsearch template setting ==========================

setup.template.name: “weblog”

setup.template.pattern: “weblog_*”

setup.template.overwrite: false

setup.template.enabled: true

setup.template.settings:

index.number_of_shards: 1

#-------------------------- Elasticsearch output ------------------------------

output.elasticsearch:

hosts: [“127.0.0.1:9200”]

按月建索引

index: “weblog_%{+YYYY.MM}”

Protocol - either http (default) or https.

protocol: “https”

Authentication credentials - either API key or username/password.

api_key: “id:api_key”

username: “elastic”

password: “changeme”

配置发送到 Elasticsearch 时候出现一个问题,花了很长时间才解决,问题如下:

(status=404): {“type”:“type_missing_exception”,“reason”:“type[doc] missing”,“index_uuid”:“j9yKwou6QDqwEdhn4ZfYmQ”,“index”:“secops-seclog_2020.04.16”,“caused_by”:{“type”:“illegal_state_exception”,“reason”:“trying to auto create mapping, but dynamic mapping is disabled”}}

网上查找资料,大部分给出的解决办法都是配置 document_type,但是我用的 Filebeat 是 5.6 版本,这个参数已经取消了,无奈只能另找办法。

最后,就在我已经快要放弃的时候,通过把 Elasticsearch template type 改成 doc,而不是用自定义字段,解决了这个问题。

而且我发现一个很奇怪的现象,那就是总能在快要放弃之时找到解决问题的办法,所以多坚持一下还是很有必要的。

发送到 Elasticsearch 之后,就可以通过 Kibana 从页面来查询数据了,但这样做并不是最好的办法。更通用的架构是,先把数据发送到数据总线 Kafka,然后通过消费者程序来消费 Kafka 里的数据,最后入库到 Elasticsearch 或者其他存储组件。

Filebeat 发送到 Kafka:

output.kafka:

hosts: [“kafka1:9092”]

topic: ‘web-log’

username: ‘XXX’

password: ‘XXX’

partition.round_robin:

reachable_only: false

required_acks: 1

compression: gzip

max_message_bytes: 1000000

去除不需要的字段:

Filebeat 在发送日志时,会添加一些字段,如果不想要这些字段的话,可以通过下面的配置将这些字段过滤。

#================================ Processors =====================================

Configure processors to enhance or manipulate events generated by the beat.

processors:

  • drop_fields:

fields: [“agent”, “ecs”, “host”, “input”, “log”]

- add_host_metadata: ~

- add_cloud_metadata: ~

- add_docker_metadata: ~

- add_kubernetes_metadata: ~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值