ELK-filebeat+logstash采集nginx日志

2023-05-16

ELK-filebeat+logstash采集nginx日志

文章目录

    • ELK-filebeat+logstash采集nginx日志
  • 前言
  • 采集访问日志
    • 第一种方式:修改nginx访问日志输出格式为json
      • 修改nginx
      • filebeat
      • 修改logstash
      • kibana查看
    • 第二种:使用filebeat模块
      • 修改elasticsearch
      • 修改filebeats

前言

这里直接描述filebeat+logstash采集nginx日志配置,语法介绍小。

采集访问日志

第一种方式:修改nginx访问日志输出格式为json

修改nginx

nxinx输出日志可以修改,内置一些宏可直接使用,具体参考官网
在nginx.conf的http模块下添加

log_format json '{ "@timestamp": "$time_iso8601", '
                         '"time": "$time_iso8601", '
                         '"remote_addr": "$remote_addr", '
                         '"remote_user": "$remote_user", '
                         '"body_bytes_sent": "$body_bytes_sent", '
                         '"request_time": "$request_time", '
                         '"status": "$status", '
                         '"host": "$host", '
                         '"request": "$request", '
                         '"request_method": "$request_method", '
                         '"uri": "$uri", '
                         '"http_referrer": "$http_referer", '
                         '"body_bytes_sent":"$body_bytes_sent", '
                         '"http_x_forwarded_for": "$http_x_forwarded_for", '
                         '"http_user_agent": "$http_user_agent" '
                    '}';

在具体的server模块下添加

access_log  logs/access_json.log  json;

这里的json是上面的日志输出格式.
修改后access_json.log每行输出日志是如下json格式

{ "@timestamp": "2019-03-06T10:10:24+08:00", "time": "2019-03-06T10:10:24+08:00", "remote_addr": "192.168.2.57", "remote_user": "-", "body_bytes_sent": "4912", "request_time": "0.250", "status": "200", "host": "192.168.1.243", "request": "GET /api/projects/templates/folders HTTP/1.1", "request_method": "GET", "uri": "/api/projects/templates/folders", "http_referrer": "http://192.168.1.243:85/", "body_bytes_sent":"4912", "http_x_forwarded_for": "-", "http_user_agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36" }

filebeat

修改filebeat.yml配置文件,在filebeat.inputs添加如下:

- type: log
  enabled: true
  paths:
    - D:\soft\nginx\nginx-1.15.2\logs\access_json.log
  json.keys_under_root: true
  json.overwrite_keys: true
  fields:
    appname: nginx_access

修改logstash

input{
	beats  {
		port => 515
		type=>"beatss"
   	}
}

output{
	if [fields][appname] == "nginx_access"{
		elasticsearch {
			hosts => ["127.0.0.1:9200"]
			index => "nginx-access-%{+YYYY.MM.dd}"
		}
	}
}

kibana查看

结果如下
在这里插入图片描述

第二种:使用filebeat模块

filebeat自带一些常用应用的模块,位于modules.d目录,带disabled后缀的表示不可使用,去掉就表示或使用。
使用模块的情况下,数据是直接传递给elasticsearch。
请参考官方文档,这里简单记录下

修改elasticsearch

elasticsearch安装插件

sudo bin/elasticsearch-plugin install ingest-geoip
sudo bin/elasticsearch-plugin install ingest-user-agent

安装完后重启

修改filebeats

修改filebeats.yml,配置elasticsearch和kibana

output.elasticsearch:
  hosts: ["myEShost:9200"]
setup.kibana:
  host: "mykibanahost:5601"

执行命令(等于于把modules.d/nginx.yml.disabled后缀disabled去掉)

filebeat.exe modules enable nginx

列出所有模块状态:filebeat modules list
修改nginx.yml

- module: nginx
  access:
    enabled: true
    var.paths: ["D:\\soft\\nginx\\nginx-1.15.2\\logs\\access.log"]
    
  error:
    enabled: true
    var.paths: ["D:\\soft\\nginx\\nginx-1.15.2\\logs\\error.log"]

注意windows系统里使用\

启动:filebeat -e

在elasticsearch里会自动创建一个filebeat+filebeat版本号+当前日期的index

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELK-filebeat+logstash采集nginx日志 的相关文章

  • Nginx - 特定位置的另一个根

    我在下面有一些静态 html 文件 var www project1 该项目的 Nginx 配置是 server name www project1 com project1 com root var www project1 locati
  • nginx 代理到子目录中的远程 Node.js Express 应用程序

    我完全陷入了这样一种情况 我想在一台服务器上拥有多个节点应用程序 通过让应用程序在不同的端口上运行 我可以正常工作 我可以通过输入 IP 地址和端口来访问应用程序 我想通过使用不同的子目录来代理来自 nginx 服务器的应用程序 如下所示
  • 我的 s3 存储桶如何使用 nginx 在不同文件夹中托管多个网站?

    我在 Amazon 上有一个 s3 Cloudfront 解决方案 我想在存储桶内的不同文件夹中托管不同的网站 并通过以下两种方式之一访问它们 子域 gt mywebsite1 mydomain com 或者 路径 gt www mydom
  • Docker nginx 代理到主机

    简短的介绍 Nginx 运行在 docker 上 如何配置 nginx 以便将调用转发到主机 详细描述 我们有一个 Web 应用程序与几个后端通信 假设为rest1 rest2 和rest3 我们负责rest1 让我们考虑一下我开始rest
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • nginx 解析器——dns

    请原谅一个非常初学者的问题 我无法理解 nginx 的 解析器 参数及其工作原理 我已阅读文档 搜索教程和帖子 使用解析器 nginx 和 dns 等关键字 但我仍然不确定如何应用解析器 http nginx org en docs htt
  • NGINX 和 Spark Java 之间的跨源通信

    我正在将 NGINX 和 Sparkjava 用于我的 Web 应用程序 我确信我已正确启用所有 CORS 标头 尽管如此 我还是得到了 XMLHttpRequest 无法加载http localhost 3003 platformAPI
  • 使用 Nginx 时缺少 HTTP 状态代码名称

    我正在使用 Nginx 将所有 HTTP 请求重定向到 HTTPS 在我的 Spring Boot 应用程序中 这是我正在使用的 nginx 配置 通过它我可以将所有请求重定向到 Https 但是当我这样做时 我得到了状态码返回正确 但没有
  • iFrame 在 Facebook Canvas 应用程序中显示为空白

    我有一个非常简单的页面 我试图在 Facebook iframe 中查看它 它是一个 Django 视图 但它不依赖于请求是通过 POST 还是 GET 提交 它所做的只是返回一些简单的 HTML 如果我们直接点击链接 它会正确显示 如果在
  • 如何在没有脚本 (PHP) 或服务器配置 (Nginx) 的情况下检测移动设备(和/或移动 cookie)?

    我们很快就会推出网站的移动版本 我们的完整网站和移动网站仅在主题上有所不同 即网址相同 唯一的区别在于前端 当用户访问我们的网站时 我们需要能够执行以下操作 1 检查 cookie 移动 true 或 false 以确定是否已定义完整与移动
  • 将虚拟主机分配给 Docker 端口

    我设置了通配符 DNS 以便对自定义域 foo 的所有 Web 请求都映射到 Docker 主机的 IP 地址 如果我有多个运行 Apache 或 Nginx 实例的容器 每个容器都会将 Apache 端口 80 映射到某个外部入站端口 我
  • 使用 NGINX auth_request 和 oauth2_proxy 设置标头

    我想使用授权请求 http nginx org en docs http ngx http auth request module html and oauth2 proxy https github com bitly oauth2 pr
  • 在 Elasticsearch 中将字符串的默认映射更改为“未分析”

    在我的系统中 数据的插入始终是通过 Logstash 通过 csv 文件完成的 我从不预先定义映射 但每当我输入一个字符串时 它总是被认为是analyzed 结果像这样的条目hello I am Sinha被分成hello I am Sin
  • nginx + WordPress:SFTP + 自动更新的适当用户/文件权限?

    I used this http wordimpress com aws ec2 rds s3 cloudfront nginx wordpress tutorial roundup 在 Ubuntu VPS 上安装 nginx 和 Wor
  • 当 ssl 和 http2 打开时,Nginx 似乎忽略 server_name

    我有这个 nginx 配置 server listen 80 default server listen 80 default server server name www example com return 301 https www
  • nginx设置问题

    我知道这不是一个直接的编程问题 但是 stackoverflow 上的人似乎能够回答任何问题 我有一台运行 Centos 5 2 64 位的服务器 非常强大的双核 2 服务器 具有 4GB 内存 它主要提供静态文件 Flash 和图片 当我
  • nginx - 禁用特定 URL 的 HTTPS 重定向

    我将 nginx 设置为将所有 HTTP 请求重定向到 HTTPS 如下所示 Redirect every request to HTTPS server listen 80 listen 80 server name sub exampl
  • 通过 ESI:include 设置 Cookie,如何?

    我正在尝试使用 esi 在我的网站上创建忍者缓存 这个想法是 该网站大部分是静态的 我只需要在用户是否登录时做一些花哨的事情 所以我试图在页面A上放置一个 并在页面B的应用程序中设置触发器 这样我就可以将页面 A 缓存在 varnish 上
  • 使用 PM2 将节点作为服务运行 - 连接被拒绝

    我正在关注this https www digitalocean com community tutorials how to set up a node js application for production on ubuntu 16
  • Access-Control-Allow-Origin值跨站缓存

    我正在尝试编写一个 nginx 配置来处理 http 和 https 上的两个站点 只要客户端从不访问这两个站点 它似乎就可以工作 但如果它们这样做 就会出现缓存 跨站点问题 Allow cross origin location eot

随机推荐

  • 回首2013,展望2014

    此刻值此2013年末 xff0c 明天便是元旦 近日浏览CSDN论坛时 xff0c 发现有许多的坛友都在写2013年度总结 xff0c 博客作为个人的名片 xff0c 也决定开始尝试写博客 xff0c 我的第一篇博客就是关于2013年度总结
  • MSSQL分享:sp_writeall 将文本文件内容全部写入某一文件

    alter PROC sp writeall 64 dirpath varchar 1024 64 filetype varchar 255 61 39 sql 39 as declare 64 sql varchar 4000 64 sq
  • 多旋翼飞行器设计与控制实践学习总结

    在11 4 3半自主控制模式控制器上加入自己的控制器 注意事项 1 在进行硬件在环仿真时必须保证整个系统是离散控制系统 xff0c 这里有一个傻瓜式的方式 xff0c 就是一键将所有模块均替换为离散模块 xff0c 可以参照这个连接 htt
  • 如何看英文文档

    本一直以为看不懂官方英文文档是因为词汇量不够 后来发现其实并不是 xff0c 如果没有专业背景 xff0c 没有相应的知识点 xff0c 就算你认识这个单词 xff0c 也会看不懂他在说什么 理由如下 xff1a 在看MyBatis Gen
  • 技术人成长中的得与失,想当程序员或者已经是程序员的要注意了!

    每个人在成长过程中 xff0c 都免不了在得失中摇晃 xff0c 对我来说 xff0c 将来如何更好地去平衡得失 xff0c 是需要思考的问题 xff0c 而对新入行的年轻人来说 xff0c 能从我这些总结中获得一点点启发 xff0c 那我
  • UCOSII 使用笔记

    UCOS使用总结 1 UCOS 是抢占式系统 xff0c 换句话来说 xff0c 优先级高的能够被准时执行 xff0c 优先级低的很容易被高优先级抢占 xff0c 导致执行任务延迟 2 UCOS一般为64个优先级 xff0c 有些可以到25
  • 在华清远见学习嵌入式开发的总结

    一 前言 在华清 xff08 成都中心 xff09 四个多月的学习即将结束 xff0c 在学习中有学到新知识的兴奋 xff0c 也有为代码中的bug而难受一整天的痛苦 xff0c 这些都是学习过程中的常态 xff0c 只要我们善于总结 xf
  • LDMDA指令使用的方法

    在linux内核中 xff0c 文件arch arm kernel head common S中 xff0c 有如下代码 xff1a lookup processor type adr r3 3f ldmda r3 r5 r7 long p
  • ELK-FileBeat入门

    ELK FileBeat入门 文章目录 ELK FileBeat入门 前言windows上安装filebeat配置授之以鱼不如授之以渔输入端配置 前言 filebeat是logstash轻量级版 xff0c 功能相对比nxlog全很多 xf
  • 树莓派3B+安装Ubuntu mate 20.04 armhf

    众所周知 xff0c 树莓派3B 43 使用了64位ARM xff0c 因此可以安装ARM64版本的Ubuntu mate 然而 xff0c 此版本官网明确说更适合2G内存以上的树莓派使用 xff0c 树莓派3B 43 是1G内存啊 xff
  • Linux apt 命令

    apt xff08 Advanced Packaging Tool xff09 是一个在 Debian 和 Ubuntu 中的 Shell 前端软件包管理器 apt 命令提供了查找 安装 升级 删除某一个 一组甚至全部软件包的命令 xff0
  • 基python实现多线程网页爬虫

    一般来说 xff0c 使用线程有两种模式 一种是创建线程要执行的函数 把这个函数传递进Thread对象里 xff0c 让它来执行 另一种是直接从Thread继承 xff0c 创建一个新的class xff0c 把线程执行的代码放到这个新的c
  • C++中的HTTP协议问题

    1 HTTP Hyper Text Transfer Protocol xff08 超文本传输协议 xff09 是一种通信协议 xff0c 它允许将超文本标记语言 HTML 文档从Web服务器传送到客户端的浏览器 在Internet中所有的
  • DB2 的自增主键方式

    DB2 的自增主键方式 xff1a 1 not null generated by default as identity 不会自增长 一定要指定主键值 2 not null GENERATED ALWAYS AS IDENTITY 自增
  • “猿”?“媛”?

    我来自农村 xff0c 父辈告诉我读书是走出这里的唯一途径 xff0c 所以 xff0c 教育在我们家备受重视 高考那年家里发生了一场变故 xff0c 我亲爱的爷爷去世了 xff0c 高考 xff0c 我是一个人跟着学校的车去考试的 xff
  • bootstrap后台 uniform.default.css 使用checkbox 默认选不中问题

    昨天在实际操作中遇见了一个问题 input type 61 39 checkbox 39 设置ckecked 选不中 一直以为是js问题 后来F12看页面发现 是样式的掩盖 lt label gt lt input name 61 34 g
  • linux下安装ffmpeg 语音amr文件为MP3 包含各依赖

    最近安装ffmpeg 转换语音amr文件为MP3 xff0c 在网上查看了很多的版本 xff0c 都是要make 编译 xff0c 而且还有装各种依赖 xff0c 如MP3解码lame等 在官网找到已打包好的文件 xff0c 直接安装 ht
  • 新浪微博与微信公众号开发总结

    微信公众号开发总结 微信公众号开发者文档地址 xff1a https mp weixin qq com wiki t 61 resource res main amp id 61 mp1445241432 可根据文档开始微信者公众号开发 x
  • ROS学习笔记(三)

    元功能包 将plumbing pub sub plumbing server client plumbing param server关联在一起 http wiki ros org catkin package xml Metapackag
  • ELK-filebeat+logstash采集nginx日志

    ELK filebeat 43 logstash采集nginx日志 文章目录 ELK filebeat 43 logstash采集nginx日志 前言采集访问日志第一种方式 xff1a 修改nginx访问日志输出格式为json修改nginx