普通视图
Github 桌面端使用经验分享
使用Filebeat采集Nginx日志到ES
filebeat是传统elk组件中logstach的升级替代,能够高性能的采集一些中间件的日志到es中,供检索分析。
1.安装filebeat
首先要安装filebeat到nginx所在服务器,因为我的服务器是rocky linux属于redhat系,故这里通过yum安装,先设置安装源
导入GPG-KEY
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch新建一个elastic.repo文件在/etc/yum.repos.d下,并粘贴安装源地址
vim /etc/yum.repos.d/elastic.repo
[elastic-9.x]name=Elastic repository for 9.x packagesbaseurl=https://artifacts.elastic.co/packages/9.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md接下来执行安装,直到安装完成
yum install filebeat -y2.设置nginx和filebeat
首先确认nginx的日志路径和日志格式,一般日志路径默认就是:
/var/log/nginx/access.log常规访问日志/var/log/nginx/error.log错误日志
在nginx.conf配置文件中,默认的日志格式是:
log_format main ' $remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';为了区分各个主机的访问记录,我选择增加一个主机的字段:$host
log_format main '$host $remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';亲测filebeat可以识别上述的日志格式,自动提取有效信息
然后设置filebeat,通过yum安装的filebeat,默认全局配置文件位于/etc/filebeat/filebeat.yml,有这样几项需要修改
output.elasticsearch: # 改成自己es地址和端口 hosts: ["localhost:9016"] # 改成自己的索引格式 index: "nginx-logs-%{+yyyy.MM.dd}" # 通信协议按需要修改 protocol: "http" # es用户名密码,必须设置 username: "elastic" password: "***************"# 需要新增这两项,索引数据格式模板名称setup.template.name: "nginx-logs"setup.template.pattern: "nginx-logs-*"然后对nginx的采集功能进行设置,filebeat支持很多中间件的日志采集,通过yum安装的filebeat,默认的各中间件的采集配置文件位于:/etc/filebeat/modules.d/
首先要将默认的nginx配置文件nginx.yml.disabled复制出一份nginx.yml,因为最后filebeat只会自动导入读取.yml结尾的文件
cp /etc/filebeat/modules.d/nginx.yml.disabled /etc/filebeat/modules.d/nginx.ymlvim编辑/etc/filebeat/modules.d/nginx.yml配置文件,针对nginx的采集进行配置
- module: nginx # 打开常规访问日志采集,指定日志路径 access: enabled: true var.paths: ["/var/log/nginx/access.log"] var.timezone: "Asia/Shanghai" # 打开错误日志采集,指定日志路径 error: enabled: true var.paths: ["/var/log/nginx/error.log"] var.timezone: "Asia/Shanghai"都修改完成后,通过filebeat test config命令,验证配置文件是否有语法错误
[root@VM-0-3-rockylinux ~]# filebeat test configConfig OK然后启动filebeat,并且能看到进程,启动成功
[root@VM-0-3-rockylinux ~]# systemctl start filebeat[root@VM-0-3-rockylinux ~]# ps -ef | grep filebeatroot 279214 1 0 Apr17 ? 00:00:09 /usr/share/filebeat/bin/filebeat --environment systemd -c /etc/filebeat/filebeat.yml --path.home /usr/share/filebeat --path.config /etc/filebeat --path.data /var/lib/filebeat --path.logs /var/log/filebeatroot 484905 454652 0 14:33 pts/2 00:00:00 grep --color=auto filebeat3.查看索引
登录kibana,打开开发工具,就能看到filebeat建的索引和采集到的日志了,还可以根据业务需要制作图表等
![]()
![]()
还可以通过检索,通过链接和访问次数进行聚合,查出一些攻击和刺探的恶意请求,例如:
GET /nginx-logs-2026.04.18/_search{ "size": 0, "aggs": { "domain_counts": { "terms": { "field": "url.domain", "size": 20000 }, "aggs": { "domains_per_ip": { "terms": { "field": "source.ip", "size": 20000 }, "aggs": { "domains_per_path": { "terms": { "field": "url.path", "size": 20000 } } } } } } }}Hello Halo
不要因为AI使自己的停止思考!
前端复古风选型必看!像素UI 、8bitUI 、精简复古风UI
前端复古风选型必看!像素UI 、8bitUI 、精简复古风UI。整理了几个亲测还不错的复古风格UI库😂
Chrome浏览器自带翻译的诡异Bug:ID翻译后竟然变化了
当前负责的项目主打海外业务,总免不了和多语言打交道。但最近我在Vite+Vue3+Element Plus技术栈的项目里,遇到了一个堪称“玄学”的bug——Chrome浏览器自带翻译功能,居然能把表格里的数字ID直接改了!从印度同事到国内运...
Ollama本地电脑运行无限制AI模型超简单案例
想在本地用一款 “无拘无束” 的 AI 模型?Ollama 能帮你轻松实现,但先得说清楚:这类 “越狱模型” 虽自由,却可能藏着不少小麻烦。
整理些我常逛的Web3社区
Web3作为热门互联网技术正在快速发展(也包含大量嘎割韭菜的),涌现出了许多有价值的社区。整理了一些我常逛社区资源。
谷歌广告AdSense/GAM 接入避坑 + 填充监听 + 问题排查
作为长期负责海外业务的开发者,公司业务中经常会和谷歌的人员有沟通。在接入谷歌广告生态时,踩了很多坑,很多坑都是和谷歌的技术人员沟通后才发现问题的(有些最新情况和文档不一致,很坑)。
如何优雅判断 AdBlock 是否开启?前端实现方案分享
因为自己主要负责面对海外的用户项目,发现以前的检测AdBlock/AdBlock Plus开启状态方法已失效了,于是专门研究了一下,并尝试了很多方法。发现npm上的插件基本都失效了,于是研究了一下屏蔽原理。
Vite打包zip并改名为md5sum哈希案例
在前端项目 DevOps CICD 流水线中,通过 MD5 哈希值命名打包文件的实践方案。核心流程为:使用工具将 dist 目录打包为 ZIP,通过 md5sum 计算该 ZIP 文件的 MD5 哈希值,再以哈希值重命名 ZIP 文件。
MapLibre Native安卓集成实战:从环境配置到地图展示全指南
MapLibre Native 是一个免费且开源的库,用于在各种平台上的应用程序和桌面应用程序中发布地图。由于 GPU 加速的矢量瓦片渲染,地图的快速显示成为可能。
JavaScript 正则陷阱:全局匹配 /g 导致的 test () 方法异常详解
在 JavaScript 正则表达式使用中,一个看似简单的全局匹配标志/g,可能会在循环检测时引发令人困惑的结果。本文将通过实际案例解析这一现象的底层原因,并提供多种解决方案。
你可能忽略的 HTML 细节:lang 属性的作用与避坑指南
在 HTML 标签中,lang属性看似简单,却隐藏着影响用户体验的关键细节。本文将深入解析lang的作用,结合真实案例说明配置不当可能引发的问题,并提供正确的使用方法。
Vue3中Fragment特性的一个bug,需要留意的注意事项
Vue3中的Fragment特性虽然提供了更灵活的组件结构,但在某些特定场景下可能会出现意外的行为。本文详细介绍了一个需要注意的Fragment相关bug及其解决方案。
温习网络协议基础:TCP/IP与OSI模型层级关系详解
本文详细介绍了TCP/IP与OSI网络模型的层级关系,包括各层次的对应关系、功能定位及主要协议,帮助读者建立网络协议栈的完整认知框架。
Android startActivityForResult()废弃替代方案详解及实例
本文详细介绍Android中startActivityForResult()方法被废弃后的替代方案——Activity Result API的使用方法,并通过完整案例展示页面间的数据传递和结果接收流程。
Chrome 浏览器移除 Event.path 后的兼容方案
2023 年 2 月初,Chrome 浏览器(版本 109.0.5414.120)在一次更新中移除了点击等事件中 Event.path 数组参数。值得注意的是...
基于 Vue 自定义指令实现点击事件权限控制
在许多业务场景中,需要对按钮等元素的点击事件添加权限校验:当用户拥有权限时,正常触发点击事件;无权限时,则拦截事件或执行其他提示逻辑。若通过封装组件实现,在使用第三方 UI 库(如 Element Plus)的场景下,会导致封装成本过高。本文将介绍如何通过 Vue 自定义指令低成本实现这一需求。