ELK
ELK 指的时 ElasticSearch + logstash + kibana
其中 es 和 kibana 的版本号必须对应。
在学习的时候,使用的时 es 7.6.2 和 kibana 7.6.2
ELK:搜索,日志分析,指标监控,信息安全等。
Beats + Logstash + ElasticSearch + Kibana
日志收集系统
- 收集
- 传输
- 存储
- 分析
- 警告
架构图
本地文件 + Logstash + ElasticSearch + Kibana

本地文件 + Filebeat+ Logstash + elasticSearch + Kibana

本地文件 + Filebeat + kafka + Logstash + elasticSearch + kibana + others

Beats
轻量型采集器。向 Logstash、ElasticSearch 发送数据。
- Filebeat
- Packetbeat
- Winlogbeat
- Metricbeat
- Heartbeat
- Auditbeat
- Fucntionbeat
- Journalbeat
FileBeat
filebeat.inputs:
- type: filestream
id: my-filestream-id
paths:
- /var/log/messages # 读取指定文件
- /var/log/*.log
将日志输出到终端


自定义字段和 Tags

输出到 ES

output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
setup.template.enabled: true
setup.template.name: "filebeat"
# 设置索引模板的匹配模式
setup.template.pattern: "filebeat*"
根据匹配到的 tags 写入不同的索引

setup.template.name: "filebeat"
setup.template.fields: "fields.yml"
setup.template.overwrite: false
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 1
nginx 日志写入ES

将日志调整为 json 格式的三种时机

- 方案1 :修改 nginx 日志格式


- 方案 2: 使用 Filebeat 的 modules
# 查看列表
./filebeat modules list
# 启用 nginx 模块
./filebeat modules enable nginx
需要修改 #{FILEBEAT_HOME_PATH}/modules.d/nginx.yml 文件

下面这段配置的作用是,将不以 [ 开头的行与前一个以 [ 开头的行合并。
parsers:
- multiline:
type: pattern
pattern: '^\['
negate: true # 定义模式是否被否定。
match: after # 指定 Filebeat 如何将匹配的行合并为一个事件。设置为 after 或 before 。这些设置的行为取决于您为 negate 指定的内容:

filebeat.inputs:
- type: log
...
exclude_lines: ['^DBG']
ElasticSearch
基于 Lucene 的分布式的全文搜索引擎。对外提供 RESTful web 接口。
Lucene 只适合在单机上使用。当数据量过大时,使用 ElasticSearch 。
全文检索、倒排索引
- 数据分布 分片机制
- 平行节点 内部交互
- 副本机制
- 高级搜索功能 count group by
实时搜索、稳定、可靠、快速、安装和使用方便。
- 全文检索
- 结构化搜索
- 分析
- 海量数据近实时处理