基于Loki + Promtail + Grafana 搭建 Nginx 日志监控
文章目录
- 引言
- 第一部分:Loki 简介与安装
- 1.1 Loki 简介
- 1.2 Loki 安装
- 1.2.1 下载 Loki
- 1.2.2 安装 Loki
- 1.3 启动 Loki
- 第二部分:Promtail 简介与安装
- 2.1 Promtail 简介
- 2.2 Promtail 安装
- 2.2.1 下载 Promtail
- 2.2.2 安装 Promtail
- 2.3 启动 Promtail
- 第三部分:Grafana 配置与可视化
- 3.1 Grafana 安装
- 3.2 添加 Loki 数据源
- 3.3 创建 Loki 数据源的 Dashboard
- 第四部分:Nginx 配置
- 4.1 Nginx 配置
- 4.2 重启 Nginx
- 结论
🎉欢迎来到Java学习路线专栏~探索Java中的静态变量与实例变量
- ☆* o(≧▽≦)o *☆嗨~我是IT·陈寒🍹
- ✨博客主页:IT·陈寒的博客
- 🎈该系列文章专栏:Java学习路线
- 📜其他专栏:Java学习路线 Java面试技巧 Java实战项目 AIGC人工智能 数据结构学习
- 🍹文章作者技术和水平有限,如果文中出现错误,希望大家能指正🙏
- 📜 欢迎大家关注! ❤️
引言
随着Web应用规模的不断扩大,日志监控变得越来越重要。对于Nginx这样的Web服务器,实时监控和分析其日志信息可以帮助我们迅速发现问题、进行性能调优。本文将介绍如何使用Loki、Promtail和Grafana搭建一个高效的Nginx日志监控系统。

第一部分:Loki 简介与安装
1.1 Loki 简介
Loki 是一个由Grafana实验室开发的日志聚合工具,专注于存储和查询大规模的日志数据。它与Prometheus一起使用,可以提供完整的监控解决方案。
1.2 Loki 安装
1.2.1 下载 Loki
# 创建 Loki 配置文件夹
sudo mkdir -p /etc/loki
# 下载 Loki 配置文件
sudo wget https://raw.githubusercontent.com/grafana/loki/main/cmd/loki/loki-local-config.yaml -O /etc/loki/loki-local-config.yaml
1.2.2 安装 Loki
# 下载 Loki 安装脚本
curl -O https://raw.githubusercontent.com/grafana/loki/main/scripts/loki-docker.sh
# 添加执行权限
chmod +x loki-docker.sh
# 执行 Loki 安装脚本
./loki-docker.sh
1.3 启动 Loki
# 启动 Loki
docker run -d --name loki -p 3100:3100 -v /etc/loki:/etc/loki -v /tmp/loki:/tmp/loki grafana/loki
第二部分:Promtail 简介与安装
2.1 Promtail 简介
Promtail 是 Grafana Labs 开发的一个用于将各种日志数据发送到 Loki 的代理工具。它是 Loki 日志收集架构中的一部分,用于从不同的数据源中搜集日志并发送到 Loki 中进行存储。
2.2 Promtail 安装
2.2.1 下载 Promtail
# 创建 Promtail 配置文件夹
sudo mkdir -p /etc/promtail
# 下载 Promtail 配置文件
sudo wget https://raw.githubusercontent.com/grafana/loki/main/cmd/promtail/promtail-local-config.yaml -O /etc/promtail/promtail-local-config.yaml
2.2.2 安装 Promtail
# 下载 Promtail 安装脚本
curl -O https://raw.githubusercontent.com/grafana/loki/main/scripts/promtail-docker.sh
# 添加执行权限
chmod +x promtail-docker.sh
# 执行 Promtail 安装脚本
./promtail-docker.sh
2.3 启动 Promtail
# 启动 Promtail
docker run -d --name promtail -v /var/log:/var/log -v /etc/promtail:/etc/promtail --link loki:loki grafana/promtail
第三部分:Grafana 配置与可视化
3.1 Grafana 安装
# 安装 Grafana
docker run -d --name grafana -p 3000:3000 grafana/grafana
在浏览器中访问 http://localhost:3000,使用默认的用户名和密码(admin/admin)登录 Grafana。
3.2 添加 Loki 数据源
- 在左侧导航栏中选择 “Settings” -> “Data Sources”。
- 点击 “Add your first data source”。
- 选择 “Loki”。
- 配置 Loki 数据源的 URL(http://loki:3100)。
- 点击 “Save & Test”,确保数据源配置正确。
3.3 创建 Loki 数据源的 Dashboard
- 在左侧导航栏中选择 “+” -> “Dashboard”。
- 点击 “Add new panel”。
- 在 “Query” 中输入 Loki 查询语句,例如
'{job="nginx"}'。 - 完成其他可视化配置,点击 “Apply”。

第四部分:Nginx 配置
为了让 Nginx 将日志发送到 Loki,我们需要对 Nginx 进行一些配置。
4.1 Nginx 配置
在 Nginx 的配置文件中添加以下日志格式和日志路径配置:
http {log_format loki 'time="$time_iso8601" level=info msg="$request"';access_log /var/log/nginx/access.log loki;error_log /var/log/nginx/error.log;
}
4.2 重启 Nginx
# 重启 Nginx
sudo service nginx restart
现在,Nginx 的访问日志将被发送到 Loki 中。
结论
通过 Loki、Promtail 和 Grafana 的组合,我们成功搭建了一个Nginx日志监控系统。这个系统能够实时收集、存储和可视化Nginx的访问日志,为我们提供了一个强大的工具来监控和分析Web服务器的性能。

这套监控系统不仅能够提供实时的性能指标,还能够帮助我们及时发现潜在的问题,优化Web应用的性能。希望通过本文的介绍,你能够顺利搭建自己的Nginx日志监控系统,并更好地运维你的Web服务器。
🧸结尾 ❤️ 感谢您的支持和鼓励! 😊🙏
📜您可能感兴趣的内容:
- 【Java面试技巧】Java面试八股文 - 掌握面试必备知识(目录篇)
- 【Java学习路线】2023年完整版Java学习路线图
- 【AIGC人工智能】Chat GPT是什么,初学者怎么使用Chat GPT,需要注意些什么
- 【Java实战项目】SpringBoot+SSM实战:打造高效便捷的企业级Java外卖订购系统
- 【数据结构学习】从零起步:学习数据结构的完整路径
相关文章:
基于Loki + Promtail + Grafana 搭建 Nginx 日志监控
文章目录 引言第一部分:Loki 简介与安装1.1 Loki 简介1.2 Loki 安装1.2.1 下载 Loki1.2.2 安装 Loki 1.3 启动 Loki 第二部分:Promtail 简介与安装2.1 Promtail 简介2.2 Promtail 安装2.2.1 下载 Promtail2.2.2 安装 Promtail 2.3 启动 Promtail 第三部分…...
车载通信架构 —— 传统车内通信网络CAN(可靠性为王)
车载通信架构 —— 传统车内通信网络CAN(可靠性为王) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非…...
visual Studio MFC 绘制单一颜色三角形、渐变颜色边框三角形、渐变填充三角形、边框渐变的正方形与填充渐变的正方形实例
MFC 绘制三角形 本文使用visual Studio MFC 平台实现绘制单一颜色三角形、渐变颜色边框三角形、渐变填充三角形、边框渐变的正方形与填充渐变的正方形. 关于基础工程的创建请参考Visual Studio 使用MFC 单文档工程绘制单一颜色直线和绘制渐变颜色的直线 文章目录 MFC 绘制三角形…...
嵌入式八股 | 笔试面试 | 校招秋招 | 题目精选
嵌入式八股精华版1.0所有216道题目如下: 欢迎关注微信公众号【赛博二哈】并加入嵌入式求职交流群。提供简历模板、学习路线、岗位整理等 欢迎加入知识星球【嵌入式求职星球】获取完整嵌入式八股。 提供简历修改、项目推荐、求职规划答疑。另有各城市、公…...
力扣:180. 连续出现的数字(Python3)
题目: 表:Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | varchar | ---------------------- 在 SQL 中,id 是该表的主键。 id 是一个自增列。 找出所有至少连续…...
【Python篇】详细讲解正则表达式
文章目录 🌹什么是正则表达式🍔语法字符类别重复次数组合模式 ✨例子 🌹什么是正则表达式 正则表达式(Regular Expression),简称为正则或正则表达式,是一种用于匹配、查找和操作文本字符串的工…...
Linux系统分区和挂载超过2T的硬盘
报错信息:DOS partition table format cannot be used on drives for volumes larger than 2199023255040 bytes for 512-byte sectors. Use GUID partition table format (GPT). 转载:Ubuntu(Linux)系统安装扩展硬盘并完成格式化及挂载 - 知乎...
Vue19 列表过滤
直接上代码 以下代码使用了两种实现方式,监视属性和计算属性 当能用计算属性实现时,推荐使用计算属性 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>列表过滤</title><script type&q…...
【一起来学kubernetes】7、k8s中的ingress详解
引言配置示例负载均衡的实现负载均衡策略实现模式实现方案Nginx类型Ingress实现Treafik类型Ingress实现HAProxy类型ingress实现Istio类型ingress实现APISIX类型ingress实现 更多 引言 Ingress是Kubernetes集群中的一种资源类型,用于实现用域名的方式访问Kubernetes…...
[Java] 阿里一面~说一下ArrayList 与 LinkedList 区别
文章目录 是否保证线程安全底层数据结构插入和删除是否受元素位置的影响是否支持快速随机访问内存空间占用: 是否保证线程安全 ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全; 底层数据结构 ● ArrayList 底层使用的是 Obje…...
凸包问题的GRAHAM-SCAN解法 open3d c++ 代码
使用了Open3D库进行点云处理和可视化。下面是代码的大致解释: 引入必要的头文件和命名空间: 定义了三个函数: ComputeTriangleDirArea:计算带符号三角形的面积。Compute2Ddistance:计算两点之间的平面距离。GetConvexHullByGrahamScan:通过Graham Scan方法计算凸包点集。…...
从微软Cosmos DB浅谈一致性模型
最近回顾了微软的Cosmos DB的提供一致性级别,重新整理下一致性模型的相关内容。 0. Cosmos DB Cosmos DB(Azure Cosmos DB)是由微软推出的一个支持多模型、多 API 的全球分布式数据库服务。它旨在提供高度可扩展性、低延迟、强一致性和全球…...
spring-webmvc练习-日程管理-访问后端展示列表数据
1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/schedule.js import request from "../util/request.js";export let getSchedu…...
【Linux系统编程】操作系统详解(什么是操作系统?为什么会存在操作系统?设计操作系统的目的是什么?)
目录 一、前言 二、 什么是操作系统 💦操作系统的引入 💦操作系统的概念理解 💦操作系统设计的目的与定位 💦总结 二、操作系统之上之下分别有什么 三、深度理解操作系统的“管理” 💦场景理解 💦操…...
肖sir __数据库练习__001
建表语句: create table student ( id int(4),age int(8),sex int(4),name varchar(20), class int(4), math int(4)) DEFAULT charsetutf8; INSERT into student VALUES(1,25,1,‘zhansan’,1833,90); INSERT into student VALUES(2,25,1,‘lisi’,1833,67); INSER…...
【数据结构初阶】树,二叉树
树,二叉树 1.树概念及结构1.1树的概念1.2 树的相关概念1.3 树的表示1.4 树在实际中的运用(表示文件系统的目录树结构) 2.二叉树概念及结构2.1概念2.2现实中的二叉树2.3 特殊的二叉树2.4 二叉树的性质2.5 二叉树的存储结构 1.树概念及结构 1.…...
HTML新手入门笔记整理:HTML常用标签总结表
HTML常用标签 标签 英文全称 语义 div division 区块(块元素) span span 区块(行内元素) p paragraph 段落 ol ordered list 有序列表 ul unordered list 无序列表 li list item 列表项 dl definition list 定义列表 dt definition term 定义术语 d…...
Linux7安装mysql数据库以及navicat远程连接mysql
1.下载地址:MySQL :: Download MySQL Community Server 2.创建mysql目录将压缩包上传到该目录 mkdir /opt/mysql cd /opt/mysql3.解压压缩包 gzip mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar tar -zxvf mysql-8.1.0-1.el7.x86_64.rpm-bundle.tar.gz 4.前置检查 ch…...
FFmpeg命令分隔视频
有一个视频如a.mp4,此视频采用帧率为30生成,共有299帧,这里通过FFmpeg命令分隔成1秒一个个的小视频,即每个小视频帧数为30帧。 用到的FFmpeg参数如下所示: (1).-i:指定输入视频文件的名称; (2).-c:指…...
开源与闭源
我的观点: 开源与闭源软件都有各自的优势和劣势,没有绝对的对错之分。.. 一、开源和闭源的优劣势比较 开源的好处与劣处 优势: 创新与合作:开源软件能够吸引更多的开发者参与到项目中来,促进创新和合作。开放的源代码…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...
抽象类和接口(全)
一、抽象类 1.概念:如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象,这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法,包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中,⼀个类如果被 abs…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
