Docker 日志管理 - ELK
Author:rab
目录
- 前言
- 一、Docker 日志驱动
- 二、ELK 套件部署
- 三、Docker 容器日志采集
- 3.1 部署 Filebeat
- 3.2 配置 Filebeat
- 3.3 验证采集数据
- 3.4 Kibana 数据展示
- 3.4.1 创建索引模式
- 3.4.2 Kibana 查看日志
- 总结
前言
如何查看/管理 Docker 运行容器的日志?我们会想到 docker logs
、docker attach
来查看日志,这两个命令是 docker 原生命令,用于查看 docker 运行的容器日志,Docker 会将日志发送到容器的标准输出设备(STDOUT)和标准错误输出设备(STDERR)。而这些都要归功于 docker 的日志驱动(如json-file、journald、syslog、fluentd、gelf、splunk)等
。每个驱动程序都有自己的配置选项和目标,允许你将日志发送到特定的日志聚合工具或目标。
关于 Docker 的日志驱动基本配置可看我之前的文章《你真的了解 Docker 日志吗?》。
一、Docker 日志驱动
Docker 默认的日志驱动为 json-file
,如下图所示:
docker info |grep -i "logging driver"
json-file
会将容器的日志保存在 json 文件中,Docker 负责格式化其内容并输出到标准输出
,我们可以在 Host 的容器目录中找到此 json 文件,默认路径为:/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
,当然,如果你 Docker 数据存储路径为不是默认的 /var/lib/docker/
,则为你指定的具体路径。
让我们看看这些 json 文件日志格式:
tail -f /var/lib/docker/containers/05213f4e11f4bb335462ad3b143b09a981809351fbba780344531454570a0d44/05213f4e11f4bb335462ad3b143b09a981809351fbba780344531454570a0d44-json.log
更多日志驱动请看官方文档:https://docs.docker.com/config/containers/logging/configure/
二、ELK 套件部署
ELK 原理这里就不详细介绍了,大家可以看看我前面的博客《基于 Docker 的 ELK 高可用集群架构》,博客中案例是每个博客是分布部署的,这里为了实验、节约时间,就进行集中部署了。
1、Host 系统初始化
echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p
2、运行 ELK 容器
mkdir -p /data/elk-data
docker run -itd --name elk --restart always \-p 5601:5601 \-p 9200:9200 \-p 5044:5044 \-v /data/elk-data:/var/lib/elasticsearch \-v /etc/localtime:/etc/localtime \sebp/elk:6.8.22# 说明
# 5601:kibana端口
# 9200:es端口
# 5044:Logstash
# sebp/elk:latest 镜像包含了整个ELK Stack
3、ELK 验证
http://192.168.56.120:5601/
三、Docker 容器日志采集
3.1 部署 Filebeat
目前是没有任何日志数据的,如下图 kibana 也是没有发现任何监控数据:
再来调用 es 的 JSON 接口 http://192.168.56.120:9200/_search?pretty
,如下图:
可见,es 并没有日志相关的 index(如上图采样数据 hits 为空的),接下来我们将通过 filebeat
进行数据采集,并将日志导入 ELK。至于为什么要使用 filebeat,我之前的博客已经有提到过,一句话“主打一个轻量”
。
这里的部署就不再重复造轮子了,具体部署就看我前面《你真的了解 Docker 日志吗?》中的文章中的2.7.2 部署及应用
部分。
3.2 配置 Filebeat
配置也很简单,无非就是两个问题:日志从哪里来,去往哪里?
,只需解决这两个问题即可,配置文件为 filebeat.yml
输入输出配置均在该配置文件完成配置。
1、配置输入
2、配置输出
3、启动 filebeat
创建一个测试容器(nginx)
docker run -itd --name nginx --restart always nginx:latest
然后启动 filebeat 对 nginx 容器日志进行采集并将采集的日志内容输出到 es 进行存储。
./filebeat -e -c filebeat.yml
3.3 验证采集数据
再次请求接口 http://192.168.56.120:9200/_search?pretty
,如下图,此时就已经采集到数据了(看 hits 中已经获取到了 JSON 格式数据了),其中索引名为 filebeat-6.8.23-2023.10.01
及监控的日志目录。
3.4 Kibana 数据展示
3.4.1 创建索引模式
有了数据,为了能将日志数据更直观地显示出来,我们可以配置 Kibana 来查询和分析 es 中存储的日志数据。
首先看看 kibana 上的索引管理:
数据已经被采集上来了。
接下来就是创建索引模式(index patterns):
注意:你创建的索引模式必须要与上图已经存在的 index 匹配得上(如下图 Success 字样)。
继续点击Next step
按钮,选择 @timestamp
点击创建即可!
3.4.2 Kibana 查看日志
点击菜单栏
的Discover
即可看到我们刚刚创建的索引模式,如下图所示:
以上就是如何将 docker 容器日志输出到 elk 栈的基本流程,更多关于 kibana 的相关查询、图表制作,大家可以看我前面的文章《kibana 基础操作》。
总结
其实这个流程还是很简单的,本次作文的目的就是让你知道 Docker 日志是如何管理的,且是如何结合 ELK 技术栈应用的。但要注意的是,在实际生产中架构并没这么简单,服务基本上是分布式进行部署的,但是以上案例的基本流程还是要搞懂的。好了,希望本文能够帮你更好地理解 Docker 日志的管理方式。
—END
相关文章:
Docker 日志管理 - ELK
Author:rab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言 如何查看/管理 Docker 运行容器的日志?…...
windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改
windows系统下利用python对指定文件夹下面的所有文件的创建时间进行修改 不知道其他的朋友们有没有这个需求哈,反正咱家是有这个需求 需求1、当前有大量的文件需要更改文件生成的时间,因为不可告知的原因,当前的文件创建时间是不能满足使用的…...
线性表的链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除;
#include <iostream> #include <algorithm>//fill() #define InitSize 5using namespace std;/*线性表:链式表示——单链表;头插,尾插,按值查找,按序号查找,插入,删除*/ typedef st…...
【Spring Cloud系统】- Zookeer特性与使用场景
【Spring Cloud系统】- Zookeer特性与使用场景 一、概述 Zookeeper是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。如:统一命名服务、状态同步服务、集群管理、分布式应用配置…...
最新AI智能创作系统源码SparkAi系统V2.6.3/AI绘画系统/支持GPT联网提问/支持Prompt应用/支持国内AI模型
一、智能AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统,已支持OpenAIGPT全模型国内AI全模型,已支持国内AI模型 百度文心一言、微软Azure、阿里云通义千问模型、清华智谱AIChatGLM、科大讯飞星火大模型等。本期针对源码…...
R | R包默认安装路径的查看及修改
R | R包默认安装路径的查看及修改 一、R包安装位置查看二、已安装R包查询三、R包安装位置修改四、R包安装位置永久修改 在【R: R package安装的几种方式】【R: R版本更新及R包迁移(详细步骤)】两篇文章中介绍过R包的常见安装方式,以及在不同R…...
将conda虚拟环境打包并集成到singularity镜像中
1. 使用yml文件打包 conda activate your_env conda env export > environment.yml编写cond.def文件 Bootstrap: dockerFrom: continuumio/miniconda3%filesenvironment.yml%post/opt/conda/bin/conda env create -f environment.yml%runscriptexec /opt/conda/envs/$(hea…...
Android Studio 是如何和我们的手机共享剪贴板的
背景 近期完成了target33的项目适配升级,随着AGP和gradle的版本升级,万年老版本Android Studio(后文简称AS)也顺便升级到了最新版Android Studio Giraffe | 2022.3.1,除了新UI外,最让我好奇的是这次的Running Devices功能(官方也称为Device mirroring)可以控制真机了. 按照操…...
大数据面试题:Spark和MapReduce之间的区别?各自优缺点?
面试题来源: 《大数据面试题 V4.0》 大数据面试题V3.0,523道题,679页,46w字 可回答: 1)spark和maprecude的对比;2)mapreduce与spark优劣好处 问过的一些公司:阿里云…...
【开发篇】十八、SpringBoot整合ActiveMQ
文章目录 1、安装ActiveMQ2、整合3、发送消息到队列4、使用消息监听器对消息队列监听5、流程性业务消息消费完转入下一个消息队列6、发布订阅模型 1、安装ActiveMQ docker安装 docker pull webcenter/activemqdocker run -d --name activemq -p 61616:61616 -p 8161:8161 webce…...
QTcpSocket 接收数据实时性问题
一、开发背景 使用 Qt 的 QTcpSocket 接收数据的时候发现数据接收出现粘包的现象,并且实时性很差,通过日志的时间戳发现数据接收的误差在 100ms 以内。 二、开发环境 Qt5.12.2 QtCreator4.8.2 三、实现步骤 在 socket 连接的槽函数设置接收延时时间&…...
前端el-select 单选和多选
el-select单选 <el-form-item label"部门名称" prop"departId"><el-select v-model"dataForm.departId" placeholder"请选择" clearable:style{ "width": "100%" } :multiple"false" filtera…...
【MySQL】Linux 中 MySQL 环境的安装与卸载
文章目录 Linux 中 MySQL 环境的卸载Linux 中 MySQL 环境的安装 Linux 中 MySQL 环境的卸载 在安装 MySQL 前,我们需要先将系统中以前的环境给卸载掉。 1、查看以前系统中安装的 MySQL rpm -qa | grep mysql2、卸载这些 MySQL rpm -qa | grep mysql | args yum …...
机器学习算法分类
学习视频黑马程序员 监督学习 无监督学习 半监督学习 强化学习...
Mysql bin-log日志恢复数据与物理备份-xtrabackup
主打一个数据备份与恢复 binlog与xtarbackup bin-log日志恢复开启bin-log配置bin-log日志恢复 物理备份-xtrabackup三种备份方式安装xtrabackup备份全量备份增量备份差异备份 bin-log日志恢复 bin-log 日志,就记录对数据库进行的操作,什么增删改的操作全…...
JAVA 学习笔记 2年经验
文章目录 基础String、StringBuffer、StringBuilder的区别jvm堆和栈的区别垃圾回收标记阶段清除阶段 异常类型双亲委派机制hashmap和hashtable concurrentHashMap 1.7和1.8的区别java的数据结构排序算法,查找算法堆排序 ThreadLocal单例模式常量池synchronizedsynch…...
网络安全--安全认证、IPSEC技术
目录 1. 什么是数据认证,有什么作用,有哪些实现的技术手段? 2. 什么是身份认证,有什么作用,有哪些实现的技术手段? 3. 什么是VPN技术? 4. VPN技术有哪些分类? 5. IPSEC技术能够…...
Mysql——创建数据库,对表的创建及字段定义、数据录入、字段增加及删除、重命名表。
一.创建数据库 create database db_classics default charsetutf8mb4;//创建数据库 use db_classics;//使用该数据库二.对表的创建及字段定义 create table if not exists t_hero ( id int primary key auto_increment, Name varchar(100) not null unique, Nickname varchar(1…...
第1篇 目标检测概述 —(4)目标检测评价指标
前言:Hello大家好,我是小哥谈。目标检测评价指标是用来衡量目标检测算法性能的指标,可以分为两类,包括框级别评价指标和像素级别评价指标。本节课就给大家重点介绍下目标检测中的相关评价指标及其含义,希望大家学习之后…...
前端和后端是Web开发中的两个不同的领域,你更倾向于哪一种?
前端和后端是Web开发中的两个不同的领域,你更倾向于哪一种? 你可以从以下几个维度谈谈你对前端开发和后端开发的看法。此为内容创作模板,在发布之前请将不必要的内容删除 一、引言 提示:可对前端开发和后端开发进行简要介绍并提出…...
SpringBoot集成MyBatis-Plus实现增删改查
背景 因为学习工具的时候经常需要用到jar包,需要增删查改接口,所以参考文章实现了基于mybatis-plus的增删查改接口。 参考文章:第二十二节:SpringBoot集成MyBatis-Plus实现增删改查 原文中的git地址不存在,本文内容是原文代码修…...
基于STM32设计的智能水产养殖系统(华为云IOT)
一、设计简述 基于STM32设计的智能水产养殖监测系统 1.1 项目背景 随着经济的发展和人口的增长,对水产养殖的需求不断增加。然而,传统的水产养殖方式存在一系列问题,如水质污染、鱼病爆发等。因此,智能化水产养殖技术成为当前热门研究领域。其中,基于物联网技术的智能水产…...
运行软件找不到mfc140u.dll怎么解决,mfc140u.dll是什么文件
"找不到 mfc140u.dll"是一条错误信息,表示您的计算机上缺少一个名为 mfc140u.dll 的动态链接库(DLL)文件。这个文件通常与 Microsoft Visual C Redistributable 相关。Mfc140u.dll 是 Microsoft 基础类库(MFC࿰…...
数据结构(2-5~2-8)
2-5编写算法,在单链表中查找第一值为x的结点,并输出其前驱和后继的存储位置 #include<stdio.h> #include<stdlib.h>typedef int DataType; struct Node {DataType data; struct Node* next; }; typedef struct Node *PNode; …...
浅谈智能安全配电装置在老年人建筑中的应用
摘要:我国每年因触电伤亡人数非常多,大多数事故是发生在用电设备和配电装置。在电气事故中,无法预料和不可抗拒的事故是比较少的,大量用电事故可采取切实可行措施来预防。本文通过结合老年人建筑的特点和智能安全配电装置的功能&a…...
【ES】笔记-ES6模块化
暴露数据引入模块语法 规范基本语法分别暴露 (按需暴露)统一暴露 export {暴露内容1,暴露内容2}默认暴露 (适合只暴露一个数据) 只能暴露一次同时使用在app.js中引入 规范 每个文件都是一个模块要借助Babel和Browserify依次编译代码,才能在浏览器端运行…...
阿里云/腾讯云国际站代理:腾讯云国际站开户购买EdgeOne发布,安全加速一体化方案获业内认可
作为下一代CDN产品面世的腾讯云EdgeOne,历时一年服务,腾讯云国际站凭借安全加速一体化的解决方案,用All in One 架构构筑边缘应用无限想象。 近年来,随着5G网络、物联网、边缘计算的快速发展,爆炸式增长的数据量和市场…...
AIGC AI绘画 Midjourney 的详细使用手册
Midjourney参数提示与用法。 常见的命令有: --seed:种子值 --q:品质 --c:混乱 --no:负面提示 --iw:权重(0.5-2) ::(多重提示) -- repeat(重复) --stop(停止) --title(无缝贴图:适用于模型版本 1、2、3、5) --video(过程动画,适用于模型版本 1、2…...
Lua系列文章(1)---Lua5.4参考手册学习总结
windows系统上安装lua,下载地址: Github 下载地址:https://github.com/rjpcomputing/luaforwindows/releases 可以有一个叫SciTE的IDE环境执行lua程序 1 – 简介 Lua 是一种强大、高效、轻量级、可嵌入的脚本语言。 它支持过程编程, 面向对…...
Leetcode.121 买卖股票的最佳时机
题目链接 Leetcode.121 买卖股票的最佳时机 esay 题目描述 给定一个数组 p r i c e s prices prices ,它的第 i i i 个元素 p r i c e s [ i ] prices[i] prices[i] 表示一支给定股票第 i i i 天的价格。 你只能选择 某一天 买入这只股票,并选择在…...
内蒙网站开发/seo新手入门教程
第一版: # 拿到页面源代码 requests # 通过re来提取想要的有效信息 re # csv 数据存储 import requests import re import csv# 现在要提取名字,年份url "https://movie.douban.com/top250"headers {"User-Agent": "Mozilla…...
vs做的网站如何使用/优化提升
我们来了解一下MySQL的基本特性:1.内部构件和可移植性使用C和C编写用众多不同的编译器进行了测试能够工作在众多不同的平台上。请参见2.1.1 “MySQL支持的操作系统”。使用GNU Automake、Autoconf和Libtool进行移植。提供了用于C、C、Eiffel、Java、Perl、PHP、Pyth…...
网站的图片滚动怎么做的/爱站网长尾关键词挖掘查询工具
针对每个测试需求设计测试用例,测试用例设计的遵守的原则: 1.每一个测试需求至少有一个测试用例与之对应; 2. 每个测试用例包含的测试步骤尽量不要超过10个;如果过多就进行拆分; 3. 每一步step只包含有一种情况&#x…...
常州全景网站制作/东莞网络推广平台
从2.0开始Spring Security对服务层的方法的安全有了实质性的改善。他提供对JSR-250的注解安全支持象框架原生的Secured注解一样好。从3.0开始你也可以使用新的基于表达式的注解。你可以应用安全到单独的bean,使用拦截方法元素去装饰Bean声明,或者你可以在整个服务层…...
湖南省造价管理站官网/微信引流被加软件
文章目录前言系列文章目录,Vue学习目录,每一章都有代码例子说明二、Vue组件初次使用2.1 创建组件的第一种方式: 使用Vue.component创建一个组件2.2 创建组件的第二种方式:在Vue实例里注册,先定义好对象,然后在实例的co…...
全站加速 wordpress/营销自动化
我们常在 Linux 系统中使用 dd 命令做文件或设备的读取和写入操作,只是 dd 对读写进度和速度显示不是实时的,下面以两个磁盘设备之间的备份为例说明两种如何在 dd 命令运行过程中得到进度和速度的方法。1、通过 dd 的信号得到进度和速度:新的…...