基于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 数据源

  1. 在左侧导航栏中选择 “Settings” -> “Data Sources”。
  2. 点击 “Add your first data source”。
  3. 选择 “Loki”。
  4. 配置 Loki 数据源的 URL(http://loki:3100)。
  5. 点击 “Save & Test”,确保数据源配置正确。

3.3 创建 Loki 数据源的 Dashboard

  1. 在左侧导航栏中选择 “+” -> “Dashboard”。
  2. 点击 “Add new panel”。
  3. 在 “Query” 中输入 Loki 查询语句,例如 '{job="nginx"}'
  4. 完成其他可视化配置,点击 “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外卖订购系统
  • 【数据结构学习】从零起步:学习数据结构的完整路径

在这里插入图片描述

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

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

相关文章

231126 刷题日报

1. 高楼扔鸡蛋 O(N*logN) 2. 698. 划分为k个相等的子集 没做出来,和划分两个子集不同 3. 300. 最长递增子序列 LIS petencie sorting 没看懂,明天看吧 4. 518. 零钱兑换 II 完全背包问题:每个物品数量是无限的 注意:dp的定义…

【刷新:重新发现商业与未来】书笔记

收获 同理心:站在他人角度考虑他人感受,他人需要什么,我能提供什么;他人可以是员工,家人等;对于员工来讲核心四件事:1、薪水;2、有结果;3、有成长;4、工作开…

openssl + ECDH + linux+开发详解(C++)

一、什么是ECDH ECDH(Elliptic Curve Diffie-Hellman)是一种基于椭圆曲线密码学的密钥交换协议,用于在通信双方之间安全地协商共享密钥。ECDH是Diffie-Hellman密钥交换协议的一种变体,它利用椭圆曲线上的离散对数问题&#xff0c…

微服务系列(三)--通过spring cloud zuul过滤器实现线上流量复制

思路 补充一下,为什么这里我会想到使用"pre"类型的过滤器实现流量复制/流量镜像。 刚开始的时候,参考了阿里的流量镜像实现方案: 配置流量复制策略,阿里的方案本身是对基于云原生envoy做的,这确实是istio原…

关于嵌入式系统一些名词的小结(ARM/CORTEX/STM32等)

Microcontroller和Microprocessor啥区别? Microcontroller通常包括CPU和外设在一起,CPU通常计算能力没那么强,而且比较便宜。 Microprocessor通常只包括一个计算能力很强的CPU,比较贵。它会连到其它外设。 CPU ARM 是ARM公司开发…

使用不平衡数据集练习机器学习

一、介绍 在当今世界,机器学习和人工智能几乎被广泛应用于每个领域,以提高绩效和结果。但如果没有数据,它们还有用吗?答案是否定的。机器学习算法严重依赖我们提供给它们的数据。我们提供给算法的数据质量在很大程度上决定了机器学…

2023年第十六届山东省职业院校技能大赛中职组“网络安全”赛项竞赛正式试题

第十六届山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题 目录 一、竞赛时间 二、竞赛阶段 三、竞赛任务书内容 (一)拓扑图 (二)A模块基础设施设置/安全加固(200分) (三&#xf…

Centos 7.9 Install Docker Insecure Registry

文章目录 1. 镜像存储规划2. 安装定制 docker3. 部署 registry4. 验证镜像仓库 1. 镜像存储规划 linux LVM /dev/sdb mount dir /data【linux LVM 磁盘挂载目录】 创建两个目录 一个 docker 数据存储目录 :/data/docker,默认一般为linux为 /var/lib/d…

boomYouth

周一&#xff1a; 1. action异步写法&#xff1a; <script setup> import sonCom1 from /components/sonCom1.vue import sonCom2 from /components/sonCom2.vue import {useCountStore} from /store/counter import {useChannelStore} from /store/channel const count…

力扣打卡 1410-HTML实体解析器

Problem: 1410. HTML 实体解析器 思路 当处理 HTML 实体解析时&#xff0c;先构建一个映射&#xff0c;将特殊字符实体与它们的替换字符对应起来。 接下来&#xff0c;使用迭代的方法遍历输入的文本字符串。当遇到&字符时&#xff0c;开始检查可能的字符实体。 如果找到了…

1、nmap常用命令

文章目录 1. 主机存活探测2. 常见端口扫描、服务版本探测、服务器版本识别3. 全端口&#xff08;TCP/UDP&#xff09;扫描4. 最详细的端口扫描5. 三种TCP扫描方式&#xff08;1&#xff09;TCP connect 扫描&#xff08;2&#xff09;TCP SYN扫描&#xff08;3&#xff09;TCP …

PTA-7-55 判断指定字符串是否合法

题目&#xff1a; 输入一个字符串&#xff0c;判断指定字符串是否合法&#xff0c;要求字符串由7个字符组成&#xff0c;并且第一位必须是大写字母&#xff0c;2-4为必须是小写字母&#xff0c;后3为必须是数字字符&#xff0c;要求使用正则表达式来实现。 根据题目要求&#x…

防火墙命令行基础配置实验(H3C模拟器)

嘿&#xff0c;这里是目录&#xff01; ⭐ H3C模拟器资源链接1. 实验示意图2. 要求3. 当前配置3.1 PC配置3.2 FW配置&#xff08;防火墙&#xff09;[^7][^8]3.2.1 FW1配置3.2.2 FW2配置 3.3 R配置3.3.1 R1配置3.3.2 R2配置 3.4 SW配置3.4.1 SW1配置3.4.2 SW2配置3.4.3 SW3配置…

1.9 字符数组

1.9 字符数组 一、字符数组概述二、练习 一、字符数组概述 所谓字符数组&#xff0c;就是char类型的数组&#xff0c;比如 char a[]&#xff0c;是C语言中最常用的数组类型&#xff0c;先看一个程序 #include <stdio.h> #define MAXLINE 1000 //最大行长度限制 int get…

gradle构建项目速度优化及排查方式

文章目录 一、前言二、Android项目优化1、相关配置2、构建速度分析 三、Gradle项目通用优化1、分析构建耗时2、使用配置进行优化3、优化依赖解析a. 避免不必要和未使用的依赖项b. 优化存储库顺序 c. 最小化动态和快照版本d. 通过构建扫描查找动态和变化的版本e. 通过构建扫描可…

⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 目录 ⑤Redis Zset 操作命令汇总1. zadd 添加或…

[C/C++]数据结构 堆的详解

一:概念 堆通常是一个可以被看做一棵完全二叉树的数组对象,它是一颗完全二叉树,堆存储的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并且需要满足每个父亲结点总小于其子节点(或者每个父亲结点总大于其子节点) 堆可以分为两种: 小堆: 任意一个父亲节点都小于其子…

AIGC创作系统ChatGPT网站源码、支持最新GPT-4-Turbo模型、GPT-4图片对话能力+搭建部署教程

一、AI创作系统 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI…

Rust逆向学习 (6)

文章目录 Reverse for Stringpush_str 与 format!bytes方法chars方法 总结 Reverse for String 上一篇文章简单分析了Vec变长数组的结构&#xff0c;今天来介绍String。实际上Rust的字符串类型对于我们并不陌生&#xff0c;在前面几篇文章的几乎任何一个示例中都可以找到它们。…

项目开发的大致流程

一、需求分析 功能界面… 二、前后端沟通 传递参数类型接口请求方式&#xff08;GET POST PUT DELETE.&#xff09;传参的方式… 三、后端编写接口文档&#xff08;包括但不限于以下几个方面&#xff09; 接口名称是否清晰 接口地址是否完整 接口请求方式是否正确 请求参…