搭建ELK-Filebeat采集系统日志

1、解压到/data/elk/filebeat

mkdir -p /data/elk/filebeat
tar -zxf filebeat-7.17.7-linux-x86_64.tar.gz -C /data/elk/filebeat --strip-components=1 #--strip-components选项表示从目录级别上去除指定的前缀,以实现更加控制解压的效果

2、修改配置文件

vi /data/elk/filebeat/filebeat.yml
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /data/nginx/*.log

  ### 添加字段
  # 添加一些字段以识别项目和主机环境
  fields:
    hostenv: "production"  # 主机环境
    project: "nginx"  # 所属项目

  ### 多行选项
  # 多行选项,期望输出连续的多行日志,比如Java日志。
  multiline.type: pattern
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
  # 使用正则表达匹配行。
  multiline.negate: true
  # 定义行是否被否定,若被否定,则执行"multiline.match"。
  multiline.match: after
  # 设置将匹配行与上一行(before)合并为一个事件输出,还是将匹配行与下一行(after)合并为一个事件输出。

# ================================== Outputs ===================================
# ...
# ------------------------------ Kafka Output -------------------------------
output.kafka:
  hosts: ["192.168.0.193:9092"]
  # 指定Kafka服务器连接地址,我这边由于网络环境问题,所以使用Kafka服务器的公网主机IP地址。
 
  username: "admin"
  # 设置连接Kafka所使用的的用户名
  password: "admin888"
  # 设置连接Kafka所使用的的用户密码

  topic: '%{[fields.hostenv]}-%{[fields.project]}'
  # 设置主题名称
  partition.round_robin:
    group_events: 1
    reachable_only: false
  # 设置消息写入主题的分区策略:默认使用hash方法。
  # random.group_events, 随机写入主题的任意一个分区,并设置写入分区时消息事件的数量,默认为1。
  # round_robin.group_events,有序的轮询的写入主题分区,并设置写入分区时消息时间的数量,默认为1。
  # hash.hash,通过哈希计算分区中的字段列表,将匹配的字段写入到同一个分区中,如果没有配置字段,则使用事件键值。
  # - hash.random,如果无法计算哈希或键值,则随机分发事件。
  # reachable_only: 默认分区都尝试向所有分区发布事件,如果一个分区的leader在这个beat下变得不可用,输出可能会阻塞,则开启该项表示允许将事件发送到可用分区。
  required_acks: 1
  # 设置Kafka代理要求的ACK可靠性级别:
  # 0,无响应。
  # 1,等待本地提交。
  # -1,等待所有副本提交。
  # 注:如果设置为0,则Kafka不会返回任何ACK。出现错误时,消息可能会自动丢失。
  compression: gzip
  # 设置输出压缩编解码器,默认为gzip。支持none、snappy、lz4和zip压缩方式。
  compression_level: 4
  # 设置压缩级别,默认为4。如果设置为0,则表示不压缩。
  max_message_bytes: 10000000
  # JSON编码消息最大允许大小。更大的信息将被删除。默认是1M。该值应该小于或等于Kafka代理服务器
  # 的"message.max.bytes"。

3、设置开机启动

vi /lib/systemd/system/filebeat.service
[Unit]
Description=filebeat
Wants=network-online.target
After=network-online.target
[Service]
User=root
ExecStart=/data/elk/filebeat/filebeat -c /data/elk/filebeat/filebeat.yml
Restart=always
[Install]
WantedBy=multi-user.target
#加入开机启动
systemctl daemon-reload
systemctl enable filebeat

4、常用命令

systemctl start filebeat.service #启动
systemctl stop filebeat.service #停止
systemctl status filebeat.service #状态

启动后,filebeat会直接把对应的文件里面的日志自动发送到kafka对应的主题。如果不会安装kafka,请点击链接

相关推荐
Elastic 中国社区官方博客2 分钟前
Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·jina
lllsure3 分钟前
Linux 实用指令
linux·物联网
努力的小T24 分钟前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
workflower33 分钟前
Prompt Engineering的重要性
大数据·人工智能·设计模式·prompt·软件工程·需求分析·ai编程
Nerd Nirvana42 分钟前
OpenSSL crt & key (生成一套用于TLS双向认证的证书密钥)
linux·ssl·shell·认证·加密·tls·oepnssl
letisgo52 小时前
记录一次部署PC端网址全过程
linux·阿里云·服务器运维
猫猫的小茶馆2 小时前
【网络编程】UDP协议
linux·服务器·网络·网络协议·ubuntu·udp
尚墨11112 小时前
linux 安装启动zookeeper全过程及遇到的坑
linux·zookeeper
鱼嘻2 小时前
Linux自学day23-进程和线程
linux·服务器·c语言·进程和线程
AuGuSt_812 小时前
在windows下安装windows+Ubuntu16.04双系统(下)
linux·ubuntu·双系统