filebeat收集nginx日志打到logstash处理收入到es elk

本文介绍如何配置Nginx生成JSON格式的日志,并通过Filebeat及Logstash将其发送到Elasticsearch进行存储与分析。涵盖Nginx日志格式设置、Filebeat与Logstash配置、Elasticsearch索引建立等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大概的一个流程图
在这里插入图片描述

nginx配置

主要是将日志转成json格式方便解析 , 一般配在 http{ }里

 log_format access_json '{"timestamp":"$time_iso8601",'
    '"host":"$server_addr",'
    '"clientIp":"$remote_addr",'
    '"size":$body_bytes_sent,'
    '"responseTime":$request_time,'
    '"upstreamTime":"$upstream_response_time",'
    '"upstreamHost":"$upstream_addr",'
    '"httpHost":"$host",'
    '"uri":"$uri",'
    '"xff":"$http_x_forwarded_for",'
    '"referer":"$http_referer",'
    '"tcpXff":"$proxy_protocol_addr",'
    '"httpUserAgent":"$http_user_agent",'
    '"status":"$status"}';
access_log /home/log/access_json.log access_json;
字段名含义
log_format声明一个日志格式
access_json这个日志格式的命名, 自定义
access_log开启成功日志 第二段是路径 第三段就是引用的日志格式名
↓日志字段名↓含义
$time_iso8601标准日至期格式
$server_addr…以后补上

filebeat

安装

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-linux-x86_64.tar.gz
tar -xzvf filebeat-7.14.0-linux-x86_64.tar.gz

配置, 多配置就是多写一套 -type: log

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /home/log/access_json.log
    #- c:\programdata\elasticsearch\logs\*
  fields:
    log_source: nginx
    log_type: www
  fields_under_root: true
  tags: ["nginx"]

在下面输出配置输出到logstash

output.logstash:
  # The Logstash hosts
  hosts: ["192.168.0.1:5044"]

配置输出内容提升到json

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
  - decode_json_fields:
      fields: ['message']
      target: ""
      overwrite_keys: false
      process_array: false
      max_depth: 1

不适用module中nginx配置 因为要使用json格式的日志

将message中的json对象提出来 到第一层的字段

启动 默认走filebeat.yml配置

nohup ./filebeat -e &

logstash 配置

将多个配置文件都放在一个目录下, 如/etc/logstash/conf.d

这里我配了一个logstash-nginx.yml

input {
  beats {
    port => 5044
    client_inactivity_timeout => 600  #600秒之后关闭空闲的连接
  }
}
output{
  stdout {codec => rubydebug}
  elasticsearch {
    index => "nginx_success_logs"
    hosts => ["localhost:9200"]
  }
}

如果有多套配置,监听的端口不要一样 就是上面的那个por=>5044

然后到logstash的目录下,去修改config/pipelines.yml 文件,里面简简单单

- pipeline.id: main
  path.config: "/etc/logstash/conf.d/*.conf"

就是把指向的位置改成刚才放多配置文件的目录下

检查一下配置文件

 bin/logstash -f logstash.conf -t

然后出来启动一下

 nohup ./bin/logstash -f ./config/pipelines.yml  &

要重启最简单的方法就是把data文件夹干掉,再执行就行了,这是我在调试期间才这么简单粗暴的走

建议走重读配置

./bin/logstash -f ./config/pipelines.yml --config.reload.automatic

es 配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值