【监控】【Nginx】使用 Docker 部署 ELK Stack 监控 Nginx

目录

  • 1. 什么是 ELK Stack?
  • 2. 准备工作
  • 3. 使用 Docker Compose 部署 ELK Stack
    • 创建 Logstash 配置文件
  • 4. 配置 Nginx 日志收集
    • 安装并配置 Filebeat
  • 5. 访问 Kibana 并可视化数据
  • 总结

在现代云原生应用中,使用 Docker 容器化部署 ELK Stack(Elasticsearch、Logstash 和 Kibana)来监控 Nginx 日志,能够有效提高系统的可维护性和扩展性。本文将详细介绍如何使用 Docker 部署 ELK Stack,并配置其监控 Nginx。

1. 什么是 ELK Stack?

ELK Stack 是一个强大的日志管理和分析平台,由以下组件组成:

  • Elasticsearch:用于存储和搜索日志数据。
  • Logstash:用于处理和转发日志数据。
  • Kibana:用于可视化和分析数据。

通过将 Nginx 日志发送到 ELK Stack,用户可以实时监控网站的访问情况和性能。

2. 准备工作

在开始之前,请确保您的系统上已安装以下软件:

  • Docker:容器化平台,用于构建和运行容器。
  • Docker Compose:用于定义和管理多容器应用的工具。

可以通过以下命令安装 Docker 和 Docker Compose(以 Ubuntu 为例):

sudo apt update
sudo apt install docker.io docker-compose

安装完成后,确保 Docker 服务正在运行:

sudo systemctl start docker
sudo systemctl enable docker

3. 使用 Docker Compose 部署 ELK Stack

创建一个新的项目目录,例如 elk-nginx-monitor,并在该目录下创建 docker-compose.yml 文件:

version: '3.7'services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:8.6.3container_name: elasticsearchenvironment:- discovery.type=single-node- ELASTIC_PASSWORD=changeme  # 设置 Elasticsearch 密码ports:- "9200:9200"  # 映射端口volumes:- esdata:/usr/share/elasticsearch/data  # 持久化数据logstash:image: docker.elastic.co/logstash/logstash:8.6.3container_name: logstashports:- "5044:5044"  # Logstash 输入端口volumes:- ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf  # Logstash 配置文件depends_on:- elasticsearch  # 确保 Elasticsearch 先启动kibana:image: docker.elastic.co/kibana/kibana:8.6.3container_name: kibanaports:- "5601:5601"  # Kibana 用户界面端口environment:- ELASTICSEARCH_URL=http://elasticsearch:9200  # Elasticsearch 地址- ELASTICSEARCH_USERNAME=elastic  # Elasticsearch 用户名- ELASTICSEARCH_PASSWORD=changeme  # Elasticsearch 密码depends_on:- elasticsearch  # 确保 Elasticsearch 先启动volumes:esdata:  # 定义数据卷

创建 Logstash 配置文件

在同一目录下创建 logstash.conf 文件,用于配置 Logstash 的输入、过滤和输出:

input {beats {port => 5044  # 定义接收 Beats 输入的端口}
}filter {grok {match => { "message" => "%{IPORHOST:client_ip} - - \[%{HTTPDATE:timestamp}\] \"%{WORD:method} %{URIPATHPARAM:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:bytes}" }}date {match => ["timestamp", "dd/MMM/yyyy:HH:mm:ss Z"]  # 时间格式解析}
}output {elasticsearch {hosts => ["http://elasticsearch:9200"]  # 输出到 Elasticsearchindex => "nginx-access-%{+YYYY.MM.dd}"  # 定义索引名称user => "elastic"password => "changeme"}
}

4. 配置 Nginx 日志收集

接下来,确保 Nginx 将日志发送到 Logstash。可以使用 Filebeat 来收集 Nginx 日志并将其发送到 Logstash。

安装并配置 Filebeat

  1. 创建一个新的 Dockerfile,为 Filebeat 创建镜像:
FROM docker.elastic.co/beats/filebeat:8.6.3  # 使用官方 Filebeat 镜像COPY filebeat.yml /usr/share/filebeat/filebeat.yml  # 复制配置文件
  1. 创建 filebeat.yml 配置文件,内容如下:
filebeat.inputs:
- type: logenabled: truepaths:- /var/log/nginx/access.log  # 定义 Nginx 日志路径output.logstash:hosts: ["logstash:5044"]  # 定义 Logstash 地址
  1. 修改 docker-compose.yml 文件,添加 Filebeat 服务:
  filebeat:build: .  # 使用当前目录下的 Dockerfilevolumes:- /var/log/nginx:/var/log/nginx:ro  # 只读挂载 Nginx 日志depends_on:- logstash  # 确保 Logstash 先启动

5. 访问 Kibana 并可视化数据

  1. 启动 ELK Stack

在项目目录下运行以下命令启动所有服务:

docker-compose up -d
  1. 访问 Kibana

打开浏览器,访问 http://localhost:5601,确认 Kibana 是否正常运行。

  1. 配置索引模式

在 Kibana 中,进入 “Management” -> “Index Patterns”,创建新的索引模式,输入 nginx-access-*,选择时间字段为 @timestamp

  1. 创建可视化

在 Kibana 中,选择 “Visualize”,可以创建各种图表,如请求量趋势、响应状态分布等。

总结

通过 Docker 部署 ELK Stack 来监控 Nginx,可以简化环境的配置和管理。使用 Filebeat 作为日志收集工具,可以轻松将 Nginx 日志发送到 Logstash,并利用 Kibana 实现数据的可视化。


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

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

相关文章

FLStudio21Mac版flstudio v21.2.1.3430简体中文版下载(含Win/Mac)

给大家介绍了许多FL21版本,今天给大家介绍一款FL Studio21Mac版本,如果是Mac电脑的朋友请千万不要错过,当然我也不会忽略掉Win系统的FL,链接我会放在文章,供大家下载与分享,如果有其他问题,欢迎…

Spring后端直接用枚举类接收参数,自定义通用枚举类反序列化器

在使用枚举类做参数时,一般会让前端传数字,后端将数字转为枚举类,当枚举类很多时,很可能不知道这个code该对应哪个枚举类。能不能后端直接使用枚举类接收参数呢,可以,但是受限。 Spring反序列默认使用的是J…

投资学 01 定义,投资

02. 03. 3.1 直接投资:使用方和提供方是一个人

yolov8模型在Xray图像中关键点检测识别中的应用【代码+数据集+python环境+GUI系统】

yolov8模型在X yolov8模型在Xray图像中关键点检测识别中的应用【代码数据集python环境GUI系统】 1.背景意义 X射线是一种波长极短、穿透能力极强的电磁波。当X射线穿透物体时,不同密度和厚度的物质会吸收不同程度的X射线,从而在接收端产生不同强度的信号…

WordPress建站钩子函数及使用

目录 前言: 使用场景: 一、常用的wordpress钩子(动作钩子、过滤器钩子) 1、动作钩子(Action Hooks) 2、过滤器钩子(Filter Hooks) 二、常用钩子示例 1、添加自定义 CSS 和 JS…

实战OpenCV之直方图

基础入门 直方图是对数据分布情况的图形表示,特别适用于图像处理领域。在图像处理中,直方图通常用于表示图像中像素值的分布情况。直方图由一系列矩形条(也被称为bin)组成,每个矩形条的高度表示某个像素值(…

信息安全工程师(8)网络新安全目标与功能

前言 网络新安全目标与功能在当前的互联网环境中显得尤为重要,它们不仅反映了网络安全领域的最新发展趋势,也体现了对网络信息系统保护的不断加强。 一、网络新安全目标 全面防护与动态应对: 目标:建立多层次、全方位的网络安全防…

微服务常见面试题总结

文章目录 1 概念1.1 你对微服务是怎么理解的1.2 微服务带来了哪些挑战?1.3 说下微服务有哪些组件?🔥 2 注册中心2.1 注册中心有什么用?🔥2.2 SpringCloud可以选择哪些注册中心?2.3 说下Eureka 和 Nacos的区…

java日志框架之Log4j

文章目录 一、Log4j简介二、Log4j组件介绍1、Loggers (日志记录器)2、Appenders(输出控制器)3、Layout(日志格式化器) 三、Log4j快速入门四、Log4j自定义配置文件输出日志1、输出到控制台2、输出到文件3、输出到数据库 五、Log4j自…

【Docker】基于Dockerfile创建携带最新cuda版本以及与其配套的cudnn环境的ubuntu20.04镜像

基于Dockerfile创建携带最新cuda版本以及与其配套的cudnn环境的ubuntu20.04镜像 最近涉及到一个在 x86 上机器上使用英伟达GPU资源做加速计算的项目,包括模型推理加速和编解码加速。 为了保持两个模块开发cuda环境的一致性,故构建该基础镜像。 编写Docke…

WPF自定义Dialog模板,内容用不同的Page填充

因为审美的不同,就总有些奇奇怪怪的需求,使用框架自带的对话框已经无法满足了,这里记录一下我这边初步设计的对话框。别问为啥要用模板嵌套Page来做对话框,问就是不想写太多的窗体。。。。 模板窗体(XAML)…

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢) 大家写的时候可以参考一下我的代码思…

如何在堆和栈上分别创建一个`QObject`子类对象

在堆上创建QObject子类对象的例子 在Qt中,QObject是许多Qt类和对象的基类,提供了对象模型的核心功能,如信号和槽机制、事件处理等。当一个QObject对象在堆上创建时,意味着这个对象是通过new操作符在堆(heap&#xff0…

基于单片机的智能校园照明系统

由于校园用电量较大,本设计可以根据实际环境情况的改变,实现实时照明的控制。本设计以单片机芯片为控制芯片,热释电传感器采集教室中学生出入的信息,并把信息传递给单片机芯片,单片机芯片根据传感器传递过来的信息来控…

【STL】 set 与 multiset:基础、操作与应用

在 C 标准库中&#xff0c;set 和 multiset 是两个非常常见的关联容器&#xff0c;主要用于存储和管理具有一定规则的数据集合。本文将详细讲解如何使用这两个容器&#xff0c;并结合实例代码&#xff0c;分析其操作和特性。 0.基础操作概览 0.1.构造&#xff1a; set<T&…

Project Online 专业版部署方案

目录 前言 1. 部署前的准备 1.1. 硬件和软件要求 1.2. 网络和安全性要求 1.3. 用户角色和权限 2. 注册和订阅 Project Online 专业版 2.1. 访问 Office 365 管理中心 2.2. 订阅 Project Online 2.3. 激活服务 3. 初始配置 3.1. 创建 Project Online 实例 3.2. 配置基…

聚簇索引和非聚簇索引的定义和区别

1.聚簇索引&#xff1a; 也叫聚集索引、主键索引&#xff0c;是将索引和数据放在一起&#xff0c;聚簇索引的 BTree 的叶子节点存放的是实际数据&#xff0c;所有完整的用户记录都存放在主键索引的 BTree 的叶子节点里&#xff1b;找到索引也就找到了数据。数据行的物理顺序与…

【深度学习】(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果&#xff0c;我们可以知道&#xff0c;在学习深度学…

Android 开发高频面试题之——Flutter

Android开发高频面试题之——Java基础篇 flutter高频面试题记录 Flutter1. dart中的作用域与了解吗2. dart中. .. ...分别是什么意思?3. Dart 是不是单线程模型?如何运行的?4. Dart既然是单线程模型支持多线程吗?5. Future是什么6. Stream是什么7. Flutter 如何和原生交互…

身份安全风险不断上升:企业为何必须立即采取行动

在推动安全AI 模型的过程中&#xff0c;许多组织已转向差异隐私。但这种旨在保护用户数据的工具是否阻碍了创新&#xff1f; 开发人员面临一个艰难的选择&#xff1a;平衡数据隐私或优先考虑精确结果。差分隐私可以保护数据&#xff0c;但通常以牺牲准确性为代价——对于医疗保…