【监控】【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)网络新安全目标与功能

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

java日志框架之Log4j

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

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

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

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

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

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

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

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

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

【深度学习】(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;但通常以牺牲准确性为代价——对于医疗保…

基于51单片机的手环设计仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机&#xff0c;DHT11温湿度采集温湿度&#xff0c;滑动变阻器连接ADC0832数模转换器模拟水位传感器检测水位&#xff0c;通过LCD1602显示信息&#xff0c;然后在程序里设置好是否…

C++/CLI编程知识点小记

1.前言 本篇博文并非详细的C/CLI教程&#xff0c;仅是博主就学习和实践总结的部分知识点记录。 第一次接触C/CLI是2017年了&#xff0c;用C编写底层库&#xff0c;C/CLI编写wrapper层&#xff0c;在C#项目中进行调用&#xff0c;开发应用。 2.内容 C/CLI是一种混合编程&…

哈希简单介绍

1.直接定址法&#xff08;值的分布范围集中&#xff09; 比如统计字符串中字符出现的字数&#xff0c;字符范围是集中 2.除留余数法&#xff08;值的分布范围分散&#xff09; hashkey%n 哈希冲突&#xff1a;不同的值映射到相同的位置 解决哈希冲突的方案&#xff1a; 闭散…

Kafka集群扩容(新增一台kafka节点)

kafka集群扩容、kafka topic迁移 现有环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3 扩容之后环境 IP组件角色192.168.17.51kafka01broker1192.168.17.52kafka02broker2192.168.17.53kafka03broker3192.168.17.54ka…

三端全隔离压接端子485中继器磁耦隔离数据双向透传工业级2口信号放大器抗干扰防雷

美思联压接端子485中继器磁耦隔离工业级2口信号放大器抗干扰防雷https://item.taobao.com/item.htm?ftt&id736247434823 MS-H312S是一款专为工业自动化通信而生解决RS-485总线星型结构组网&#xff0c;解决复杂电磁场环境下RS-485大系统要求而设计的RS-485总线分割集线器(…