ELK搭建-日志系统
介绍
背景
基于日志采集为需求背景,实现大批量日志数据采集。采集数据存储在es湖中。
技术框架
此技术框架分为三大部分
输入、处理、和输出
输入主要采集服务器日志文件推送至kafka。
处理主要从kafka拉取消息进行消费,并存储到es中。
输出主要提供日志的查询接口,供查询使用。
输入
为采集的源头,使用filebeat进行本地文件采集。
抛来一个疑问,为什么选择filebeat,而不是logstach,请一起思考???
采集点以下
采集形式主要以这些中间件自带的日志目录文件(每一种采集文件格式需要自行定义)。
处理
处理部分功能:从kafka拉取消息进行消费,并存储到es中。
输出
输出部分主要是提供查询功能(可忽略)。
以上为整个ELK的结构分析,接下来进行实战的内容。
输入***
安装filebeat,如果没有安装或者不会使用请点击以下连接
filebeat使用教程
以下案例是采集nginx日志的案例,filebeat.yml文件配置
# ============================== Filebeat inputs ===============================
# Nginx logs
- type: log
enabled: true
paths:
- /***/nginx/logs/access.log
fields:
logTopic: nginx_access
id: 11
appId: 5
# ======================= Elasticsearch template setting =======================
setup.template.settings:
index.number_of_shards: 1
#index.codec: best_compression
#_source.enabled: false
# ------------------------------ Kafka -------------------------------
output.kafka:
enabled: true
hosts: ["172.0.0.1:9092"]
topic: '%{[fields.logTopic]}'
version: 0.10.1.0
required_acks: 1
compression: gzip
max_message_bytes: 1000000
# ================================= Processors =================================
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
启动filebeat
cd filebeat目录下执行
# 后台启动
sh startup.sh &
处理***
处理功能主要从kafka拉取消息,以下以nginx的topic为例。
如果没有安装过kafka和使用过kafka请点击以下链接
kafka使用教程
kafka
每个采集中间件设置一个topic,kafka版本为 kafka_2.11-0.10.1.0
注意:多节点消费partitions 分区一定要设置,partitions 数>消费节点数
# 到kafka的bin目录下
cd /***/kafka_2.11-0.10.1.0/bin
# 新建topic
./kafka-topics.sh --create --zookeeper 172.20.3.151:2181 --replication-factor 1 --partitions 9 --topic nginx_access
# 副本数量 replication-factor 设置1-2即可
# 分区数量 partitions 设置3的倍数,一个节点至少消费三个分区
# 启动kafka
控制台启动 ./kafka-server-start.sh config/server.properties
后台启动 sh kafka-server-start.sh config