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

news2024/12/25 12:30:45

目标:监控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: false

server:
  http_listen_port: 3100
  grpc_listen_port: 9096

common:
  instance_addr: 127.0.0.1
  path_prefix: /tmp/loki
  storage:
    filesystem:
      chunks_directory: /tmp/loki/chunks
      rules_directory: /tmp/loki/rules
  replication_factor: 1
  ring:
    kvstore:
      store: inmemory

query_range:
  results_cache:
    cache:
      embedded_cache:
        enabled: true
        max_size_mb: 100

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

ruler:
  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: 9080
  grpc_listen_port: 0

positions:
  filename: /tmp/positions.yaml

clients:
  - url: http://IP地址或者容器名:3100/loki/api/v1/push

scrape_configs:
- job_name: 填项目名称-英文:如hello
  pipeline_stages:
  - docker: {}
  static_configs:
  - targets:
    - localhost
    labels:
      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.coloradmin.cn/o/747398.html

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

相关文章

[SSM]MyBatis的注解式开发与PageHelper

目录 十五、MyBatis使用PageHelper 15.1 limit分页 15.2PageHelper插件 第一步:引入依赖pom.xml 第二步:在mybatis-config.xml文件中配置插件 第三步:编写Java代码 十六、MyBatis的注解式开发 16.1Insert 16.2Delete 16.3Update 1…

Java设计模式之结构型-外观模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色设计 四、案例分析 五、总结 一、基础概念 外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 二、UML类图 三、角色设计 角…

自动驾驶与智能网联场地测试一体化装备应用

自动化驾驶层级与结构 L1:能够辅助驾驶员玩车某些驾驶任务制动防抱死系统 (ABS),车身电子稳定系统 (ESP)等,这些配置就是L1级别的运用。 L2:部分自动化,在L2的级别里,必须要具备的是自适应巡航系统,主动车道保持系统自动刹车辅助系统以及自动泊车系统等系统。 L3:有条件…

JavaWeb(2)——HTML、CSS、JS 快速入门

一、JavaScript快速入门 一个完整的JavaScript实现由3个不同部分组成:核心(ECMAScript)、文档对象模型(DOM)和浏览器对象模型(BOM),如图所示。 ECMAScript是一种通过ECMA-262标准化…

iview table选中项显示在上方tag标签并可以取消

如图表格多选功能选中项显示在table的上方并且支持跨页&#xff0c;table上方加tag标签 <spanclass"select_tips"><Tagv-for"item in selection":key"item.id":name"item.id"closableon-close"handleClose">{{…

Python GUI编程利器:Tkinker中的消息对话框(13)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 和猫妹学Python&#xff0c;一起趣味学编程。 今日目标 学习Tkinter中的消息对话框的使用&#xff0c;实现如下效果&#xff1a; 文本消息对话框 可以通过showinfo()创建文…

AtcoderABC258场

A - When? A - When? 题目大意 给定一个整数K&#xff0c;表示从日本标准时间21:00开始经过的分钟数。要求将该时间转换为24小时制的时间&#xff08;HH:MM格式&#xff09;。 思路分析 可直接分时间打印。关于格式&#xff0c;填充0&#xff0c;打印时间&#xff0c;题解…

DP83TG720RWRHARQ1汽车以太网PHY,NTHL020N120SC1 通孔 N-CH 1200V 103A(MOSFET)

DP83TG720RWRHARQ1汽车以太网PHY是一款符合IEEE 802.3bp和Open Alliance标准的汽车以太网物理层收发器。该器件通过屏蔽/屏蔽单双绞线提供传输和接收数据所需的所有物理层功能。该器件支持RGMII与MAC连接。 应用&#xff1a; 远程信息处理控制单元&#xff08;TCU、TBOX&#x…

接口测试 [分享] 自动化测试与持续集成方案--Jmeter 测试接口及性能

目录 前言&#xff1a; 一、什么是接口测试&#xff1f; 二、接口测试的流程 三、编写接口测试脚本 四、接口持续集成 补上性能测试报告&#xff1a; 前言&#xff1a; 接口测试是软件测试中的重要环节&#xff0c;它用于验证系统的不同组件之间的通信和数据传输是否正常…

一起学SF框架系列5.7-模块Beans-BeanDefinition使用

SF如何使用BeanDefinition达成其目标IoC&#xff0c;我们通过跟踪BeanDefinition使用来了解。 使用起点 跟踪SF初始化过程&#xff0c;第一个点在&#xff1a;DefaultListableBeanFactory.preInstantiateSingletons。如下图&#xff1a; RootBeanDefinition是运行时Spring B…

前端白屏检测方案

早期因为浏览器、技术、兼容性等诸多问题&#xff0c;导致网页的显示效果非常的单一&#xff0c;基本都是静态页&#xff0c;后续随着Angular、React、Vue等前端框架的出现&#xff0c;采用SPA单页面应用的方案越来越多。 用户和企业对于页面的稳定性、性能有了更高的诉求&…

openssl为什么从1.1跳跃到3.0,为什么没有2.0版本?

OpenSSL在版本号上从1.1跳跃到3.0是因为在其发展过程中发生了一些特定的情况和变化&#xff0c;导致开发团队做出了这样的决定。以下是一些可能的原因&#xff1a; 历史背景&#xff1a;OpenSSL的版本号体系并不是连续递增的&#xff0c;而是根据项目的发展和变化进行调整。在过…

UFS 15 - UFS RPMB操作

UFS 15 - UFS RPMB操作 1 Request Type Message Delivery&#xff08;请求类型消息传递&#xff09;2 Response Type Message Delivery&#xff08;响应类型消息传递&#xff09;3 Authentication Key Programming3.1 Authentication Key Programming3.2 报文示例3.2.1 Authent…

【工具使用】使用J-link离线下载芯唐MCU固件

一&#xff0c;简介 本文主要介绍如何使用J-link工具&#xff0c;离线下载M483的程序。 二&#xff0c;操作步骤 主要分为以下三个步骤&#xff1a; 1&#xff0c;使用SWD接口连接硬件&#xff1b; 2&#xff0c;配置上位机工程&#xff1b; 3&#xff0c;下载程序到芯片&am…

LiveGBS流媒体平台GB/T28181功能-作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备

LiveGBS作为上级平台对接海康大华华为宇视等下级平台监控摄像机NVR硬件执法仪等GB28181设备 1、背景说明2、部署国标平台2.1、安装使用说明2.2、服务器网络环境2.3、信令服务配置 3、监控摄像头设备接入3.1、海康GB28181接入示例3.2、大华GB28181接入示例3.3、华为IPC GB28181接…

图像处理之比特平面分层和重构

一、比特平面分层 像素是由比特组成的数字。例如在256级灰度图像中&#xff0c;每个像素的灰度是由8比特&#xff08;一个字节&#xff09;组成。如下图所示&#xff0c;一幅8比特图像由8个1比特平面组成&#xff0c;其中平面1包含图像中所有像素的最低阶比特&#xff0c;而平…

Linux开发工具gdb篇

文章目录 &#x1f3bb;0.前言&#x1f3bc;debug版本&#x1f3bc;release版本 &#x1fa95;1. gcc/g的默认版本&#x1f3b8;2. gdb使用&#x1f3b5;进入 & 退出&#x1f3b5;查看代码&#x1f3b5;断点 & 跳断点&#x1f3b5;逐过程 & 逐语句&#x1f3b5;监视…

Spring Boot 核心运行原理介绍

Spring Boot 核心运行原理介绍 引言整体介绍1. 核心运行原理图2. 自动配置的整体流程3. 各核心功能和组件初步介绍 总结 引言 还记得&#xff0c;笔者在前面的博文《Spring Boot 项目介绍》中提到了&#xff0c;Spring Boot 最核心的功能就是自动配置&#xff0c;该功能的实现…

编辑距离算法(Levenshtein Distance Algorithm)的概念理解及其应用

概念&#xff1a; 编辑距离&#xff0c;由俄罗斯科学家Vladimir Levenshtein于1965年提出&#xff0c;因此又称为Levenshtein Distance&#xff0c;简称LD&#xff0c;是指两个字串之间&#xff0c;由一个转成另一个所需的最少编辑操作次数。 可用的编辑操作包括&#xff1a;…

使用docker的常见bug

BUG1&#xff1a;磁盘被占满导致docker无法使用 docker ps 【查看docker能否正常使用】 正常的话会打印下图信息: 不正常的话打印如下图信息&#xff1a; journalctl -u docker 【查看docker无法正常使用的原因】&#xff0c;本次测试中遇到下图bug&#xff0c;意思是/var/l…