【监控】【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.xdnf.cn/news/1542469.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

猫头虎 分享:Python库 Bottle 的简介、安装、用法详解入门教程

🐯 猫头虎 分享:Python库 Bottle 的简介、安装、用法详解入门教程 大家好,今天猫头虎给大家带来一篇关于Python库 Bottle 的详细入门教程。这是我在开发中经常使用的一款轻量级Web框架,特别适合快速搭建小型应用程序或者API服务。…

自定义类是否能正常运行、类加载器、JIT

一、自定义类是否都能正常运行 1、自定义与系统类同名的类不能正常运行 package java.lang;public class String {public void print(){System.out.println("中秋节快乐");}public static void main(String[] args) {new String().print();} } 解析:在编…

Arthas heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)

文章目录 二、命令列表2.1 jvm相关命令### 2.1.8 heapdump(dump java heap, 类似 jmap 命令的 heap dump 功能)举例1:假设你想生成一个只包含活动对象的堆转储文件,并将其保存为 /tmp/heapdump.hprof举例2:如果你想要进…

加密pdf如何解除加密?pdf解除密码只需掌握这7个方法!(图文详解)

pdf文件通常会设置密码保护,以维护其机密性和隐私。这意味着除了被授权查看文件的人之外,其他任何人都无法访问这些内容。然而,有时候您可能希望与他人分享这些 pdf文档,让他们能够方便地查看,而不必麻烦地输入密码。因…

专业的屏幕录像和视频编辑的软件Camtasia 2024安装激活图文教程

‌Camtasia 2024是一款专业的屏幕录像和视频编辑的软件套装。它由TechSmith公司开发‌,提供了强大的屏幕录像、视频剪辑和编辑、视频菜单制作、视频剧场、视频播放等功能。 Camtasia Studio 2024是该软件套装的核心部分,支持在PC和Mac平台上运行&#xf…

【JavaEE初阶】文件IO(上)

欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 目录 路径 绝对路径 相对路径 文件类型 文件的操作 File类 文件系统操作 创建文件,获取路径 删除文件 列出所有路径 路径修改 创建目录 mkdir和mkdirs 服务器领域,机械…

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型

【永磁同步电机(PMSM)】 5. PMSM 的仿真模型 1. 基于 Simulink 的仿真模型1.1 PMSM 的数学模型1.2 Simulink 仿真模型1.3 模块封装(mask)1.4 三相PMSM矢量控制仿真模型 2. Simscape 的 PMSM 模块2.1 PMSM 模块的配置2.2 PMSM 模块…

Cpp类和对象(中续)(5)

文章目录 前言一、赋值运算符重载运算符重载赋值运算符重载赋值运算符不可重载为全局函数前置和后置的重载 二、const修饰成员函数三、取地址及const取地址操作符重载四、日期类的实现构造函数日期 天数日期 天数日期 - 天数日期 - 天数日期类的大小比较日期类 > 日期类日…

device靶机详解

靶机下载地址 https://www.vulnhub.com/entry/unknowndevice64-1,293/ 靶机配置 主机发现 arp-scan -l 端口扫描 nmap -sV -A -T4 192.168.229.159 nmap -sS -Pn -A -p- -n 192.168.229.159 这段代码使用nmap工具对目标主机进行了端口扫描和服务探测。 -sS:使用…

AI 智能名片链动 2+1 模式商城小程序中的体验策略

摘要:本文探讨了在 AI 智能名片链动 21 模式商城小程序中,体验策略如何服务于用户体验,以及与产品策略的区别。重点分析了该小程序如何通过关注用户在使用过程中的流畅度、视觉体感等方面,实现“让用户用得爽”的目标,…

华为HarmonyOS地图服务 1 -- 如何实现地图呈现?

如何使用地图组件MapComponent和MapComponentController呈现地图,效果如下图所示。 MapComponent是地图组件,用于在您的页面中放置地图。MapComponentController是地图组件的主要功能入口类,用来操作地图,与地图有关的所有方法从此…

【小程序】微信小程序课程 -1 安装与配置

目录 1 微信小程序概述 1.1 什么是微信小程序 1.2 注册微信小程序账号 1.3 微信小程序配置 1.4 小程序开发流程 1.5 小程序成员 2、创建微信小程序项目 2.1 创建项目流程 2.2 创建项目 2.3 本地开发支持http 3 项目目录结构 3.1项目目录结构 3.1.1 目录介绍 3.1.2…

爬虫过程 | 蜘蛛程序爬取数据流程(初学者适用)

蜘蛛程序(也称网络爬虫,是搜索引擎的重要组成部分) 主要功能:遍历互联网,抓取网站信息并建立索引,便于用户在搜索引擎中检索到最新的网页内容工作原理:从初始网站页面的URL开始,发送…

Windows 配置docker和ubuntu系统

windos10 配置docke时,无意间发现wsl功能挺好用,而且是和docker 的linux容器连通的。 记录一下解决的几个问题 error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/images/json: open //./pipe/docker_engine: The system cannot …

【Docker】基于docker compose部署artifactory-cpp-ce服务

基于docker compose部署artifactory-cpp-ce服务 1 环境准备2 必要文件创建与编写3 拉取镜像-创建容器并后台运行4 访问JFog Artifactory 服务 1 环境准备 docker 以及其插件docker compose ,我使用的版本如下图所示: postgresql 的jdbc驱动, 我使用的是…

Origin2021中文版详尽安装教程、附安装包下载

各位小伙伴们呀~ 今天给大家讲解下origin2021如何安装,相信你按照教程来操作,一定可以安装成功的。 废话不多少,正文开始~ tips:提前推出所有杀毒软件可不相干的软件,以免影响安装。 origin2021中文版安装教程 1.下…

御风于海,向阳而生!第六届中国互联网牛友会圆满落幕

近日,第六届中国互联网牛友会近日在大理实力喜来登酒店圆满落幕,本次盛会吸引了超过五百名行业精英与创业者共襄盛举。大会以“御风于海,向阳而生”为主题,聚焦于互联网出海、AI大模型、新媒体及WEB3等前沿科技与趋势,…

MySQL数据库select语句详细用法三(子查询及其select练习)

SELECT *FROM student2 WHERE age > (SELECT age FROM student2 WHERE NAME 欧阳丹丹) 首先解释一下括号中的代码,意思是在查询student2中的name为欧阳丹丹的人的名字,然后解释一下整个语句的意思:在括号中查询出来的字段中再次进行查询…

VUE3学习---【一】【从零开始的VUE学习】

目录​​​​​​​ 什么是Vue 渐进式框架 创建一个Vue应用 什么是Vue应用 使用Vue应用 根组件 挂载应用 模板语法 文本插值 原始HTML Attribute绑定 简写 同名简写 布尔型Attribute 动态绑定多个值 使用JavaScript表达式 仅支持表达式 指令 Directives 指令…

QString 构建SQL语句可以往数据库中添加“\n“字符串

网上找了很多案例关于怎么样能在Mysql数据库中插入带\n的字符串,如图: 本以为很容易的一件事,没想到思考了半天,在这里记录一下,以为\n是转义字符的原因,所以并不是我想的那么简单。网上有用R(“…