Loki+promtail+Grafana监控docker容器日志

目标:监控docker容器的日志,适用于生产环境

效果:

 需要的工具:Loki,promtail,Grafana

通过安装promtail容器收集日志,并把日志发送给loki存储处理,由Grafana展示日志。

参考官网的信息:Install Grafana Loki with Docker or Docker Compose | Grafana Loki documentation 

1、在需要监控的主机中,安装容器grafana/loki:2.8.2

创建目录:/home/apps/loki,

进入目录:cd /home/apps/loki,使用wget下载这个配置文件,下载完成后给执行权限chmod +x loki-config.yaml

wget https://raw.githubusercontent.com/grafana/loki/v2.8.2/cmd/loki/loki-local-config.yaml -O loki-config.yaml

如果无法下载,可以复制下方内容,创建loki配置文件vi loki-config.yaml

auth_enabled: falseserver:http_listen_port: 3100grpc_listen_port: 9096common:instance_addr: 127.0.0.1path_prefix: /tmp/lokistorage:filesystem:chunks_directory: /tmp/loki/chunksrules_directory: /tmp/loki/rulesreplication_factor: 1ring:kvstore:store: inmemoryquery_range:results_cache:cache:embedded_cache:enabled: truemax_size_mb: 100schema_config:configs:- from: 2020-10-24store: boltdb-shipperobject_store: filesystemschema: v11index:prefix: index_period: 24hruler:alertmanager_url: http://localhost:9093# By default, Loki will send anonymous, but uniquely-identifiable usage and configuration
# analytics to Grafana Labs. These statistics are sent to https://stats.grafana.org/
#
# Statistics help us better understand how Loki is used, and they show us performance
# levels for most users. This helps us prioritize features and documentation.
# For more information on what's sent, look at
# https://github.com/grafana/loki/blob/main/pkg/usagestats/stats.go
# Refer to the buildReport method to see what goes into a report.
#
# If you would like to disable reporting, uncomment the following lines:
#analytics:
#  reporting_enabled: false

 运行容器

docker run --name loki -d -v /home/apps/loki:/mnt/config -p 3100:3100 grafana/loki:2.8.2 -config.file=/mnt/config/loki-config.yaml

2、创建promtail容器

 进入目录:cd /home/apps/loki,使用wget下载这个配置文件,并给执行权限chmod +x promtail-config.yaml,并参考下方的配置,特别注意要增加两项内容,表示通过流水线操作已经定义的docker容器日志。参考文档Configuration | Grafana Loki documentation

wget https://raw.githubusercontent.com/grafana/loki/v2.8.2/clients/cmd/promtail/promtail-docker-config.yaml -O promtail-config.yaml

pipeline_stages:
  - docker: {}

如果无法下载,可以复制下方内容,创建promtail配置文件vi promtail-config.yaml

server:http_listen_port: 9080grpc_listen_port: 0positions:filename: /tmp/positions.yamlclients:- url: http://IP地址或者容器名:3100/loki/api/v1/pushscrape_configs:
- job_name: 填项目名称-英文:如hellopipeline_stages:- docker: {}static_configs:- targets:- localhostlabels:job: 填标签名-英文:如hello-dev__path__: /var/log/*/*.log

运行promtail容器,这里映射docker的日志路径,一般路径在/var/docker/containers。如果是在本机中运行的有loki,那么在这条运行命令中要加入--link loki,才能支持使用配置中的url填入容器名称。

docker run --name promtail -d -v /var/apps/loki:/mnt/config -v /home/docker/containers/:/var/log grafana/promtail:2.8.2 -config.file=/mnt/config/promtail-config.yaml

 3、安装grafana

docker run -d --name grafana -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -p 3000:3000 grafana/grafana

 4、添加数据源

更改grafana为中文界面

左侧点击connections,连接 

添加连接,搜索Loki,选中数据源

添加URL,地址为http://主机IP:3100,下方点save/test即可 

添加成功 

点击左侧探索, 进入查看页面。完成添加。

tips:做到这里的小伙伴,应该还有疑问,我只想监控单个容器的日志,怎么办呢。那么就需要在创建promtail容器时,path路径指定容器镜像名称。固定的容器ID,就可以了。

 但是还是有疑问,我们的容器环境一但更新重启后镜像ID会改变,这个如何解决。这里我用到了sed替换方法,可以参考如下写法。只要每次创建容器要求容器名称是一样的就行。

sed -i "20c \      __path__: /var/log/`docker inspect -f="{{.Id}}" 容器名称`/*.log" /home/apps/loki/promtail-config.yaml

再重启promtail容器

docker restart promtail 

这里表示使用docker命令获取到完整的容器ID,替换promtail-config.yaml文件第20行的内容。

这样就完美的解决掉容器更新带来的问题了。此方法适用于生产环境,首次创建后,生产环境日志过多,会暂时占用过多CPU资源,等待同步完成后,就可以正常查询显示了,实测22G日志文件,用了一上午promtail同步完成。

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

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

相关文章

Windows bat隐藏运行窗口的几种方案

文章目录 一、背景二、测试数据三、隐藏bat运行窗口方案1. 使用VBScript脚本2. 使用mshta调用js或vbs脚本3. 将bat编译为exe程序4. 使用任务计划程序 一、背景 有些程序在执行批处理脚本时,可能会看到dos窗口,或者看到窗口一闪而过。如果批处理脚本执行…

(EMQX)STM32L+BC20+MQTT协议传输温湿度,ADC,电压,GPS数据到EMQX

1、材料准备 准备以下材料 2、设备连接 2.1 插入物联网卡,天线 首先把BC20核心板从开发板上拆下来 然后将物联卡放置在BC20核心板内 物联卡放置完成将BC20核心板重新插入到开发板内(注意不要弄错方向) 同时接入天线 2.2 连接ST-Link仿真…

Python 算法基础篇:大O符号表示法和常见时间复杂度分析

Python 算法基础篇:大 O 符号表示法和常见时间复杂度分析 引言 1. 大 O 符号表示法 a ) 大 O 符号的定义 b ) 示例代码 2. 常见时间复杂度分析总结 引言 在分析和比较算法的性能时,时间复杂度是一项重要的指标。而大 O 符号表示法是用来描述算法时间复杂…

动态规划01背包之416分割等和子集(第10道)

题目: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例: 解法: 先复习一下01背包问题: dp[i][j]的含义:从下标为[0-i]的物品里…

Linux->初识计算机网络

目录 前言: 1 网络发展背景 2 协议 2.1 网络协议初识 2.2 协议分层 2.3 OSI、TCP/IP层状模型 2.4 协议和操作系统的关系 2.5 根据协议栈的通信 3 网络中的地址管理 前言: 本篇当中没有任何关于网络编程的讲解,全部是对网络的宏观理解…

【数学建模】 灰色预测模型

数学建模——预测模型简介 https://www.cnblogs.com/somedayLi/p/9542835.html 灰色预测模型 https://blog.csdn.net/qq_39798423/article/details/89283000?ops_request_misc&request_id&biz_id102&utm_term%E7%81%B0%E8%89%B2%E9%A2%84%E6%B5%8B%E6%A8%…

MySQL 进阶之王,MySql 性能实战源码 + 笔记 + 项目实战

随着互联网时代的兴起,MySQL 在数据库领域日益显现出举足轻重的地位,它不断扩大的用户群体就是很好的证明。在这样的背景下,需要越来越多的人在知识资源方面为之付出,将自己对 MySQL 数据库的学习过程、运维经验、个人理解等记录下…

scripy其他

持久化 # 爬回来,解析完了,想存储,有两种方案 ## 方案一:一般不用 parse必须有return值,必须是列表套字典形式--->使用命令,可以保存到json格式中,csv中scrapy crawl cnblogs -o cnbogs.j…

Web3 开发指南:使用 NFTScan NFT API 构建一个 NFT 链上追踪器

对于大多数 Web3 团队来说,构建一个完整的链上 NFT 数据追踪系统是一项具有挑战性的任务,构建一个 NFT 链上追踪器更是如此。涉及到处理区块链上的智能合约和交易数据,并将其与外部数据源进行整合和分析工作量是十分巨大的: 区块链…

RocketMQ学习笔记(实操篇)

目录 基本操作 启动 测试 双主双从集群搭建 总体架构 工作流程 服务器环境 Host添加信息 防火墙配置 环境变量配置 创建消息存储路径 broker配置文件 修改启动脚本文件 服务启动 查看进程状态 查看日志 mqadmin管理工具 使用方式 命令介绍 集群监控平台搭…

基于深度学习的高精度刀具检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于深度学习的高精度刀具检测识别系统可用于日常生活中或野外来检测与定位刀具目标,利用深度学习算法可实现图片、视频、摄像头等方式的刀具目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…

谈谈——互联网生活中的隐私保护

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

图形编辑器开发:参考线吸附功能,让图形自动对齐

最近我给图形编辑器增加了参照线吸附功能,讲讲我的实现思路。 我正在开发的图形设计工具: https://github.com/F-star/suika 线上体验: https://blog.fstars.wang/app/suika/ 效果是被移动的图形会参考周围图形,自动与它们进行吸附…

MySQl数据库第八课-------SQL命令查询-------主要命脉

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 目录 查询数据 条件 逻辑运算符 模糊查询 范围查询 in 判断空 UNION 排序 聚合 分组:group by —————————…

c++计算贝塞尔曲线(折线平滑为曲线)坐标方法

效果可查看上一篇博文&#xff1a;js手动画平滑曲线&#xff0c;贝塞尔曲线拟合【代码】js手动画平滑曲线&#xff0c;贝塞尔曲线拟合。https://blog.csdn.net/qiufeng_xinqing/article/details/131711963?spm1001.2014.3001.5502 代码如下&#xff1a; #include <cmath&…

FPGA实验三:状态机的设计

目录 一、实验目的 二、实验要求 三、实验代码 1.design source文件部分代码 2.测试文件代码 四、实验结果及分析 1、引脚锁定 2、仿真波形及分析 &#xff08;1&#xff09;设计好序列检测器 &#xff08;2&#xff09;仿真波形&#xff08;检测11010&#xff09; 3…

【网络系统集成】路由器实验

1.实验名称:路由器RIP协议配置 2.实验目的 在PacketTracer中进行模拟实验,配置RIP协议,验证RIP协议更新时间及路由状态变化,加深对路由器RIP协议相关知识的理解与掌握。 3.实验内容 (1)拓扑结构图 (2)ip地址分配与端口分配

linux - bc 命令安装

一.引言 迁移新机器后发现没有 bc 命令&#xff0c;之前 shell 脚本的一些计算逻辑会出错&#xff0c;下面快速安装一下。 二.安装 bc 请确保在 root 权限下执行该命令&#xff1a; sudo yum install bc 出现下述界面即安装成功&#xff1a; 三.测试 bc 测试下脚本里 % 的…

快速小巧的粘贴应用程序Hasty Paste

什么是 Hasty Paste? Hasty Paste 是一个快速粘贴文本并共享的地方&#xff0c;主要用于共享调试日志等&#xff0c;以帮助开发人员提供技术支持。该项目的目标是既快又小。 命令行安装 在群晖上以 Docker 方式安装。 官方的镜像没有发布在 docker hub&#xff0c;而是在 gh…