ElK 8 收集 Nginx 日志

1. 说明

elk 版本:8.15.0

2. 启个 nginx

有 nginx 可以直接使用。我这里是在之前环境下 docker-compose.yml 中启动了个 nginx:

nginx:restart: alwaysimage: nginx:1.26.1ports:- "80:80"- "443:443"volumes:#- ./nginx/html:/usr/share/nginx/html- ./nginx/logs:/var/log/nginx#- ./nginx/certs:/etc/nginx/certs- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf- ./nginx/conf/conf.d:/etc/nginx/conf.d

刚开始如果没有 nginx 配置,可以先不映射配置目录和文件,先启动,然后 docker cp 把配置和目录拷贝出来,再挂载进去。

配置 nginx/conf/conf.d/default.conf

#
upstream kibana_servers {server kibana:5601 weight=1 max_fails=3 fail_timeout=30s;
}server{listen 80;server_name localhost;# root /usr/local/nginx/html ;# rewrite ^(.*) https://$server_name$1 permanent;location / {proxy_pass http://kibana_servers/;proxy_set_header Host $host:$server_port;proxy_set_header X-Forwarded-Host $host:$server_port;proxy_set_header X-Forwarded-Server $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_connect_timeout  30s;proxy_read_timeout     90s;proxy_send_timeout     90s;client_max_body_size   50m;client_body_buffer_size 16k;  # 默认是 8k 或 16k,可以根据需要调整}
}

3. filebeat 接入到 es

根据指引 filebeat 直接接入到 es。
filebeat接入指引

filebeat 安装参考 《Docker compose 安装 ELK》中 “6. 安装 filebeat”。

filebeat 的目录下,设置 nginx 日志路径 modules.d/nginx.yml

- module: nginx# Access logsaccess:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.var.paths: ["/data/docker/elk/nginx/logs/access.log*"]# Error logserror:enabled: true# Set custom paths for the log files. If left empty,# Filebeat will choose the paths depending on your OS.var.paths: ["/data/docker/elk/nginx/logs/error.log*"]

主配置 filebeat.yml

filebeat.config.modules:# Glob pattern for configuration loadingpath: ${path.config}/modules.d/*.ymloutput.elasticsearch:hosts: ["https://10.1.205.165:9200"]username: "filebeat_writer"password: "YOUR_PASSWORD"ssl:enabled: true# fingerprint=$(openssl x509 -fingerprint -sha256 -noout -in certs/ca/ca.crt | awk -F"=" '{print $2}' | sed 's/://g')ca_trusted_fingerprint: "33CB5A3B3ECCA59FDF7333D9XXXXXXXXFD34D5386FF9205AB8E1"# certs/ca 目录从 es 中拷过来certificate_authorities: ["certs/ca/ca.crt"]# output.logstash:
#   hosts: ["10.1.205.165:5044", "10.1.205.166:5044"]setup.kibana:host: "10.1.205.165:5601"logging.level: warning

Dev Tools 创建角色:

PUT /_security/role/filebeat_writer_role
{"cluster": ["monitor"],"indices": [{"names": ["filebeat*"],"privileges": ["create_doc","create","delete","index","write","all","auto_configure","manage"],"allow_restricted_indices": false}],"applications": [],"run_as": [],"metadata": {},"transient_metadata": {"enabled": true}
}

Dev Tools 创建用户:

POST /_security/user/filebeat_writer
{"password" : "YOUR_PASSWORD","roles" : [ "filebeat_writer_role" ],"full_name" : "Filebeat Writer","email" : "filebeat_writer@example.com","metadata" : {}
}

启用模块:

./filebeat modules enable nginx
./filebeat modules enable all-filesets#
./filebeat setup
./filebeat -e

成功后,在 kibana 的 nginx log dashboard 中可以看到数据
成功

4. filebeat 接入 logstash

主配置 filebeat.yml

filebeat.config.modules:# Glob pattern for configuration loadingpath: ${path.config}/modules.d/*.yml# output.elasticsearch:
#   hosts: ["https://10.1.205.165:9200"]
#   username: "filebeat_internal"
#   password: "YOUR_PASSWORD"
#   ssl:
#     enabled: true
#     # fingerprint=$(openssl x509 -fingerprint -sha256 -noout -in certs/ca/ca.crt | awk -F"=" '{print $2}' | sed 's/://g')
#     ca_trusted_fingerprint: "33CB5A3B3ECCA59FDF7333D9XXXXXXXXFD34D5386FF9205AB8E1"
#     # certs/ca 目录从 es 中拷过来
#     certificate_authorities: ["certs/ca/ca.crt"]output.logstash:hosts: ["10.1.205.165:5044", "10.1.205.166:5044"]setup.kibana:host: "10.1.205.165:5601"logging.level: warning

有问题的配置我就不贴了,最终配置在下面,注释有说明解决问题的关键。
启动 filebeat 后,在 kibana Dev Tools 中查询:

GET filebeat-*/_search
{"size": 1,"sort": [{}]
}

结果发现 ingest pipeline 处理异常,经过一段时间排查,找到了 相同问题链接
问题
然后下面是最终的可用 Logstash Pipeline 设置 logstash/pipeline/filebeat.conf

#
input {beats {port => 5044}
}filter {if [@metadata][pipeline] {# 这里解决上面 `[event][original]` 已存在问题ruby {code => "event.remove('[event][original]')"}} else if [log_type] == "k8s" {# 将嵌套字段提升为顶层字段mutate {rename => {"[kubernetes][namespace]" => "kubernetes_namespace""[kubernetes][node][name]" => "kubernetes_node_name""[kubernetes][pod][ip]" => "kubernetes_pod_ip""[kubernetes][pod][name]" => "kubernetes_pod_name""[container][runtime]" => "container_runtime"}}# 使用 prune 过滤器保留所需字段prune {whitelist_names => ["@timestamp", "log_type", "container_runtime", "kubernetes_namespace", "kubernetes_node_name", "kubernetes_pod_ip", "kubernetes_pod_name", "message"]}}
}output {if [@metadata][pipeline] {elasticsearch {hosts => ["https://es01:9200", "https://es02:9200", "https://es03:9200"]user => "logstash_writer"password => "logstash_password"ssl_enabled => truessl_certificate_authorities => "/usr/share/logstash/certs/ca/ca.crt"action => "create"pipeline => "%{[@metadata][pipeline]}"index => "%{[@metadata][beat]}-%{[@metadata][version]}"manage_template => false}} else if [log_type] == "k8s" {elasticsearch {hosts => ["https://es01:9200", "https://es02:9200", "https://es03:9200"]index => "k8s-%{+YYYY.MM.dd}"user => "logstash_writer"password => "logstash_password"ssl_enabled => truessl_certificate_authorities => "/usr/share/logstash/certs/ca/ca.crt"}} else {# 默认索引elasticsearch {hosts => ["https://es01:9200", "https://es02:9200", "https://es03:9200"]index => "logstash-%{+YYYY.MM.dd}"user => "logstash_writer"password => "logstash_password"ssl_enabled => truessl_certificate_authorities => "/usr/share/logstash/certs/ca/ca.crt"action => "create"manage_template => false}}
}

logstash 角色和用户权限同上面 filebeat 角色和用户。

5. 总结

Filebeat 收集 nginx、mysql 等日志,没有特别需求,最好直接接入 ES 中,少了一层 logstash 其实性能更好,问题也相对较少,官方文档推荐的。

参考资料:
[1] https://www.elastic.co/guide/en/logstash/8.15/use-ingest-pipelines.html
[2] https://www.elastic.co/guide/en/elasticsearch/reference/8.15/ingest.html
[3] https://www.elastic.co/guide/en/beats/filebeat/8.15/filebeat-installation-configuration.html
[4] https://discuss.elastic.co/t/aws-ingest-pipeline-error-in-processor-rename-message-to-event-original/341472/8
[5] https://www.elastic.co/guide/en/ecs-logging/overview/master/intro.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/427466.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eigen3 教程基础篇(三)

参考 Eigen3 主页,Eigen3 官网教程 矩阵的本质,通过多种矩阵的应用去感受矩阵本质 3Blue1Brown 的线性代数,用可视化方法来表现线性代数的特性,强推 如何理解复数和虚数,有动画方便理解复数的意义 相关文章 Eigen…

《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)

如图所示: 把第一行拖到最后一行,鼠标up;该行莫名其妙的跳到倒数第二行; 最后发现没有设置 el-table 属性 row-key ,即行数据的 Key,用来优化 table 的渲染; 属性 row-key 描述如下&#xf…

YOLOv10轻量化快速涨点之改进AKConv

目录 1,什么是AKConv? 2,如何使用AKConv使YOLOv10快速长点? 2.1,在ultralytics-main/ultralytics/nn/modules/conv.py里面添加AKConv类 2.2,ultralytics-main/ultralytics/nn/modules/conv.py添加如下 2.3 在E:\czc\YOLOv10\ultralytics-main\ultralytics\nn\tasks.p…

算法.图论-并查集上

文章目录 1. 并查集介绍2. 并查集的实现2.1 实现逻辑2.2 isSameSet方法2.3 union方法(小挂大优化)2.4 find方法(路径压缩优化) 3. 并查集模板 1. 并查集介绍 定义: 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所…

1 elasticsearch安装

【0】官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.11/targz.html 【1】Centos7 下载安装 【1.1】下载 官网:Download Elasticsearch | Elastic 选择好自己想要的相关版本即可; 【2】Centos7.X 前置环境配置(uli…

秦时明月6.2魔改版+GM工具+虚拟机一键端

今天给大家带来一款单机游戏的架设:秦时明月。 另外:本人承接各种游戏架设(单机联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行…

【Vmware16安装教程】

📖Vmware16安装教程 ✅1.下载✅2.安装 ✅1.下载 官网地址:https://www.vmware.com/ 百度云盘:Vmware16下载 123云盘:Vmware16下载 ✅2.安装 1.双击安装包VMware-workstation-full-16.1.0-LinuxProbe.Com.exe,点击…

最新动态一致的文生视频大模型FancyVideo部署

FancyVideo是一个由360AI团队和中山大学联合开发并开源的视频生成模型。 FancyVideo的创新之处在于它能够实现帧特定的文本指导,使得生成的视频既动态又具有一致性。 FancyVideo模型通过精心设计的跨帧文本引导模块(Cross-frame Textual Guidance Modu…

C#和数据库高级:抽象类和抽象方法

文章目录 一、为什么使用抽象类和抽象方法?1.1、父类与子类的相互转换 二、抽象类和抽象方法2.1、抽象类的定义和方法声明规范2.2、使用继承多态的机制解决问题 三、抽象类的概念和使用特点总结 一、为什么使用抽象类和抽象方法? 1.1、父类与子类的相互…

考研数据结构——C语言实现有向图邻接矩阵

首先,定义了一些基本的数据结构和常量: VertexType:顶点的数据类型,这里定义为char。EdgeType:边的数据类型,这里定义为int,用于存储权重。MAXVEX:定义了图中最大顶点数为100。INFIN…

C语言——自定义类型

目录 结构体 概念 结构体变量的创建和初始化 结构体的自引用 结构体的内存对齐 内存对齐存在的原因 合理设计结构体 方法一 方法二 结构体传参 结构体实现位段 什么是位段 位段的内存分配 位段的跨平台问题 注意 联合体 概念 验证 优点 小应用 什么是大小…

【Unity】对象池 - 未更新完

自定义泛型对象池 文章目录 自定义泛型对象池封装泛型类例子 使用Unity自带对象池 封装泛型类 public abstract class MyPool<T> : MonoBehaviour where T :Component {[SerializeField] protected T prefab; // 生成的预制体[SerializeField] protected int defaultNum…

鸿蒙环境服务端签名直传文件到OSS

本文介绍如何在鸿蒙环境下将文件上传到OSS。 背景信息 鸿蒙环境是当下比较流行的操作环境&#xff0c;与服务端签名直传的原理类似&#xff0c;鸿蒙环境上传文件到OSS是利用OSS提供的PutObject接口来实现文件上传到OSS。关于PutObject的详细介绍&#xff0c;请参见PutObject。…

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

记一次键盘f2和f5键被自动触发情况

背景&#xff1a; 联想小新笔记本电脑内置键盘&#xff0c;其中f2键和f5键一直被自动触发&#xff0c;已尝试过更换输入法&#xff0c;重装系统&#xff0c;拆开键帽清灰依旧无效。考虑维修费或者更换键盘&#xff08;内置&#xff09;费都挺贵的&#xff0c;而且f2和f5作用也…

Unity教程(十六)敌人攻击状态的实现

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…

2024java面试-软实力篇

为什么说简历很重要&#xff1f; 一份好的简历可以在整个申请面试以及面试过程中起到非常好的作用。 在不夸大自己能力的情 况 下&#xff0c;写出一份好的简历也是一项很棒的能力。为什么说简历很重要呢&#xff1f; 、 先从面试来说 假如你是网申&#xff0c;你的简历必然…

论文阅读-《Attention is All You Need》

注意力就是一切 【要点】&#xff1a;论文提出了一种全新的网络架构——Transformer&#xff0c;完全基于注意力机制&#xff0c;无需使用循环和卷积&#xff0c;实现了在机器翻译任务上的性能提升和训练效率的显著提高。 【方法】&#xff1a;通过构建一个仅使用注意力机制的…

【计算机网络 - 基础问题】每日 3 题(十三)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

cadence SPB17.4 - allegro - 用板子外形创建整板铺铜

文章目录 cadence SPB17.4 - allegro - 用板子外形创建整板铺铜概述笔记先确定自己板子的 board Geometry/Design_Outline 是否有外形shape为了将软件提示看得更清楚&#xff0c;在每个操作之前&#xff0c;先将命令提示区内容先删了用Z-copy从外形层生成整板的铺铜备注END cad…