在Kubernetes上搭建日志收集、分析、展示平台ELK(Logstash+Elasticsearch+Kibana)

Kubernetes中部署ELK Stack日志收集平台 kubelet会在/var/log/pods和/var/log/containers下面建立软链接,指向/var/lib/docker/containers/$CONTAINERID目录下的容器日志文件。- dissect: #参考https://www.elastic.co/guide/en/beats/filebeat/current/dissect.html。创建一个软链接/var/log/pods指向数据盘挂载点下的某个目录(ln -s /data/var/log/pods /var/log/) 阅读详情

在Kubernetes上搭建日志收集、分析、展示平台ELK(Logstash+Elasticsearch+Kibana)

背景介绍

第一,对于企业来说,日志的重要性不言而喻,就不赘述了。

第二,日志收集分析展示平台的选择,这里给出几点选择ELK的理由。ELK是一套非常成熟的系统,她本身的构架非常适合Kubernetes集群,这里官网当中也是选用的 Elasticsearch作为Sample的,GitHub上下载的kubernetes二进制包中本身就有这个.yaml文件,所以使用ELK作为收集日志的理由相当充分。

----------

时间:2016年5月2日。
地点:南京某高校。
作者:duweike。
主机系统:Ubuntu14.04。
软件版本:
Docker1.10.3,Kubernetes1.2.1,Etcd2.3.0,Flannel0.5.5.
Logstash2.3镜像,Elasticsearch2.3镜像,Kibana4.5镜像,下载的均是官方镜像。

----------

第一,ELK结构介绍和在Kubernetes上部署规划。

ELK.png


上面的这一套构架相当完善,一目了然,由于我这里是一个测试环境,把中间的Redis和Logstash去掉了,节点上的Logstash把日志直接发向Elasticsearch。

我是这样结合Kubernetes设计的。
一、每个节点上的所有Pod的日志,通过数据卷全部存储在一个固定的目录里面,日志文件通过Pod命或者Pod里面的容器主机命命名,从而来区别不同的Pod的日志文件,同时也解决了日志持久化的问题。
二、每个Node上面部署一个Logstash-pod,监控Node上面指定好的目录里面的日志文件,如果日志文件有更新,则把更新日志发向Elasticsearch。
三、Elasticsearch+Kibana两个容器作为一个Pod,Elasticsearch接收各个Node上的Logstash发来的日志,Kibana用来展示日志信息。

示意图如下

ELK-KUBE.jpg


第二,镜像选择和部署。

一、制作镜像。
首先下载官方镜像,Logstash2.3镜像,Elasticsearch2.3镜像,Kibana4.5镜像。经过分析和尝试,这里Elasticsearch+Kibana是可以直接使用的,但是Logstash需要稍作修改才行。
先看一下官方的Logstash2.3的官方Dockerfile文件。
网址: https://github.com/docker-libr ... rfile
这个官方的Dockerfile修改如下:

ENV PATH /opt/logstash/bin:$PATH #删除该行下面的,

COPY logstash.conf / #然后添加该行
下面是 logstash.conf 文件内容,可以进行详细的设置,这里只是个测试。

input {
file {
path => ["/var/lib/docker/logstash-logs/*.log"]
type => "logstash"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["elasticsearch-kibana.development:9200"]
#上面的地址指向Elasticsearch+Kinana的Pod, elasticsearch-kibana.development表示一个域名,通过Kubernetes DNS解析,development是Namespace。

}
}
然后把修改过的Dockerfile和 logstash.conf 放在一个目录 build 。

/elk/Dockerfile-logstash# ls
Dockerfile logstash.conf
/elk/Dockerfile-logstash# docker build -t logstash:dev .

二、部署。
这部分就相当简单了,直接贴 .yaml 文件就行了,想要知道其中的细节为什么这样部署,建议阅读官方的Dockerfile文件。比如挂在路径为什么是:/usr/share/elasticsearch/data。
启动Elasticsearch+Kibana的Pod。

# kubectl create -f elasticsearch-kibana-svc.yaml
# kubectl create -f elasticsearch-kibana-rc.yaml
svc.yaml文件内容:

apiVersion: v1
kind: Service
metadata:
name: elasticsearch-kibana
labels:
name: elasticsearch-kibana
spec:
type: NodePort
selector:
name: elasticsearch-kibana
ports:
- name: elasticsearch-http
port: 9200
protocol: TCP
targetPort: 9200
- name: elasticsearch-transport
port: 9300
protocol: TCP
targetPort: 9300
- name: kibana
port: 5601
protocol: TCP
targetPort: 5601
nodePort: 30081
#该端口是访问Kubernetes集群的外部端口必须为30000-32767之间。
rc.yaml文件内容

apiVersion: v1
kind: ReplicationController
metadata:
name: elasticsearch-kibana
labels:
name: elasticsearch-kibana
spec:
replicas: 1
selector:
name: elasticsearch-kibana
template:
metadata:
labels:
name: elasticsearch-kibana
spec:
nodeSelector:
node: docker111
#这里是在指定的Node上面创建Pod的,
volumes:
- name: "elasticsearch-storage"
hostPath:
path: "/var/lib/docker/elk-data" 
#上面的路径是自定义设定的,为Elasticsearch的数据库存放位置。
containers:
- name: elasticsearch
image: elasticsearch:2.3
volumeMounts:
- name: "elasticsearch-storage"
mountPath: "/usr/share/elasticsearch/data"
ports:
- containerPort: 9200
name: http
protocol: TCP
- containerPort: 9300
name: transport
protocol: TCP
- name: kibana
image: kibana:4.5
ports:
- containerPort: 5601

下面是部署Logstash的Pod。

根据设计,需要每个Node上面启动一个Pod,不需要RC和Service,这里官方给出一个术语来形容:Daemon Set。
网址: http://kubernetes.io/docs/admin/daemons/

启动Logstash pod

# kubectl create -f logstash-pod.yaml
pod.yaml内容为:

apiVersion: v1
kind: Pod
metadata:
name: logstash-dev
namespace: development
spec:
nodeSelector:
node: docker111
#在有该标签的Node上生成,如果没有该标签,就是所有Node上生成。
volumes:
- name: "logstash-django-log"
hostPath:
path: "/var/lib/docker/logstash-logs"
#该Node上的公共挂载路径,日志保存在这里,Logstash监控改路径。
containers:
- name: logstash-dev
image: logstash:dev
volumeMounts:
- name: "logstash-log"
mountPath: "/gikoo-logs/"
command: ["logstash","agent","-f","/logstash.conf"]
restartPolicy: Always

到此就部署结束了,可以在浏览器中访问UI界面查看了。

----------

第三,注意点。

1、Elasticsearch不允许root权限执行。
2、ELK三个镜像Run的容器都不是root权限,读取日志信息的时候用户用户组要做相应的权限修改。
3、Logstash占用内存比较大,也是为什么一个Node上面只启动一个Logstash pod的原因。
解析ELK(filebeat+logstash+elasticsearch+kibana)日志系统原理以及k8s集群日志采集过程 ELK【ES+LogStash+Kibana】日志分析系统以及k8s集群日志采集 阅读详情

相关推荐

【k8s管理--集群日志管理elk】

k8s安装elk

嘻哈记的运维学习之路 2245

Kubernetes日志采集与分析的最佳实践 资料下载 ...

本次课程以动手环节为主,主要讲解如何采集Kubernetes中的各种日志数据,构建中心化日志仓库,包括业务应用日志、Kubernetes平台日志、ServiceMesh/Istio日志、Ingress日志等。此外还将介绍如何基于日志进行实时数据分析、告警、可视化等。分享嘉宾:阿里云日志服务技术专家 元乙直播视频全程链接:https://yq.ali...

weixin_34127717的博客 158

ELK 圣经:Elasticsearch、Logstash、Kibana 从入门到精通

ELK指的是Elastic公司下面Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。Elasticsearch、Logstash、Kibana三大开源框架首字母大写简称。是一个用于将 Java 应用程序的日志输出转换为 Logstash 可解析的 JSON 格式的库。

架构师尼恩 1373

详解 K8s 日志采集最佳实践

个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈 导读:上一篇文章主要介绍 Kubernetes 日志输出的一些注意事项,日志输出最终的目的还是做统一的采集和分析。在 Kubernetes 中,日志采集和普通虚拟机的方式有很大不同,相对实现难度和部署代价也略大,但若使用恰当则比传统方式自动化程度更高、运维代价更低。本文为日志系列文章的第 4 篇。 第一篇:《6 个 K8...

JKX_geek的博客 2178

【ELK】最新版ELK日志搜集,过滤与展示,手把手教你搭建企业级ELK日志平台

ELFK是一套完整的日志集中处理方案。 E:ElasticSearck ES 分布式索引型非关系数据库 存储logstash输出的日志 全文检索引擎,保存的格式是json格式 L:logstash 基于java语言开发的,数据收集引擎。日志的收集,可以对数据进行过滤,分析,汇总,以标准格式输出 K:Kiabana 是es的可视化工具。对es存储的数据进行可视化展示,分析和检索。 F: FileBeat是一个轻量级日志采集器,Filebeat属于Beats家族的6个成员之一。

景天科技苑 7万+

Kubernetes日志采集与分析的最佳实践

Kubernetes日志采集与分析的最佳实践 分享嘉宾:阿里云日志服务技术专家 元乙

Kubernetes使用loki+prometheus+grafana实现日志收集与分析

日志收集系统Loki grafana loki 是可以组成功能齐全的日志记录堆栈的一组组件 与其他日志记录系统不同,Loki是基于仅索引有关日志的元数据的想法而构建的: 标签。 日志数据本身被压缩并存储在对象存储(例如s3或GCS)中的块中,甚至存储在文件系统本地。 小索引和高度压缩的块简化了操作,并大大降低了Loki的成本。 基于Loki的日志收集系统 Loki- stack子系统 Promtail 将容器日志发送到loki或者grafana服务上的日志收集工具 发现采集目标以及给日志流添加上

邢宁 5088

告别WSL!实测AMD ROCm7预览版在Windows下跑ComfyUI,速度提升与避坑全记录

本文详细记录了在Windows原生环境下部署AMD ROCm7+PyTorch+ComfyUI的全流程,相比WSL环境性能显著提升。涵盖硬件兼容性确认、开发环境配置、Python环境搭建、ComfyUI部署优化及性能对比测试,为AI绘图爱好者提供实用指南。

weixin_42528090的博客 672

Kubernetes 最佳实践 (Kubernetes 监控与日志)

在本章中,我们讨论了在Kubernetes中进行监视和记录的最佳实践。我们将深入探讨各种监视模式,要收集的重要指标以及根据这些原始指标构建仪表板的细节。然后,我们总结一些为Kubernetes集群实施监视的示例。 指标与日志 您首先需要了解日志收集和指标收集之间的区别。它们彼此互补,但具有不同的目的。 Metrics 一段时间内测得的一系列数字 Logs 用于系统的探索性分析 当应用程序性能不佳时...

MatrixGod的博客 1834

ArcGIS Pro 拓扑编辑实战:从‘地图拓扑’到‘共享编辑’,手把手教你批量修改要素

本文详细介绍了ArcGIS Pro中的拓扑编辑功能,从地图拓扑配置到共享编辑技巧,手把手教你如何批量修改要素。通过实战案例展示拓扑编辑在城市规划、地籍管理等场景中的应用,显著提升编辑效率并减少拓扑错误,是现代GIS技术的重要生产力工具。

weixin_30500473的博客 505

Docker部署 SRS rtmp/flv流媒体服务器

SRS(Simple Realtime Server)是一款开源的流媒体服务器,具有高性能、高可靠性、高灵活性的特点,能够支持直播、点播、转码等多种流媒体应用场景。SRS 不仅提供了流媒体服务器,还提供了适用于多种平台的客户端 SDK 和在线转码等辅助服务,是一款十分强大的流媒体解决方案。

m0_56659620的博客 4869

EFK 与ELK k8s

http://dockone.io/article/1259在Kubernetes上搭建日志收集、分析、展示平台ELK(Logstash+Elasticsearch+Kibana)http://www.uml.org.cn/zjjs/201610092.aspKubernetes容器集群中的日志系统集成实践http://www.sohu.com/a/162322525_825425聊聊代码 | 基...

qq_33448670的博客 2546

均值场博弈_平均场博弈(mean field game)

The New Big Fish Called Mean-Field Game Theory原文链接http://www.science4all.org/article/mean-field-games/​www.science4all.org主要内容在经典博弈论中,它对附近其他鱼类的行为做出反应。这是非常复杂的,因为不同的鱼类之间会有大量的相互作用。这意味着经典博弈论对应于一长串高度耦合的方程。...

weixin_34773479的博客 3684

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

 转载:http://www.tuicool.com/articles/YR7RRr ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自: http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。...

weixin_34087307的博客 81

FPGA 学习系列(2):Verilog 语法基础

Verilog 由门级建模数据流建模行为建模门级建模(Gate Level Modeling):使用基本逻辑门描述电路,接近硬件物理结构。数据流建模(Data Flow Modeling):使用assign语句进行组合逻辑建模,类似数学方程式。行为建模(Behavioral Modeling):使用always代码块和if-elsecase等控制语句建模,抽象程度较高。Verilog 代码一般由模块(module)组成,每个模块描述一个独立的硬件功能。

Azperk的博客 989

一文解释电路中常用电子元器件应用和选型01

电容和二极管是电路中最常用的两个电子元器件,种类和系列众多,这里简单总结一下应用场景和选型方式 电容(Capacitor) 电容的种类(20种以上)和应用非常广泛,但是我经常遇到的无非就是下面这几种: 应用 1.隔直流。 2.旁路(去耦) 3.耦合 4.滤波 5.温度补偿 6.计时 7.调谐 8.整流 9.储能 种类 1. 陶瓷电容 2. 云母电容 3. 铝电解电容 4. 钽

weixin_43904073的博客 2238

elk 日志分析系统Logstash+ElasticSearch+Kibana4

elk 日志分析系统 Logstash+ElasticSearch+Kibana4 logstash 管理日志和事件的工具 ElasticSearch 搜索 Kibana4 功能强大的数据显示client redis 缓存 安装包 logstash-1.4.2-1_2c0f5a1.noarch.rpm elasticsearch-1.4.4.noarch.r...

weixin_33896069的博客 111

TXS0104EPWR 4通道电平转换模块原理图设计,已量产

在嵌入式系统设计中,不同模块间的电平不兼容是常见问题 —— 比如 1.8V 的 MCU 与 3.3V 的传感器通信,或是 3.3V 的外设与 5V 的主控交互。这类场景下,一款高效、低功耗的双向电平转换器就成了关键组件。本文将结合实际原理图,深度解析 TI TXS0104 这款 4 通道双向电平转换器的设计要点与应用实践。

不脱发的程序猿 493

K8S搭建ELK(Elasticsearch,Kibana,Logstash和Filebeat)

K8S环境从零搭建ELK(Elasticsearch,Kibana,Logstash和Filebeat),详细、完整的操作步骤,手把手教你搭建自己的ELK日志收集系统。

Soft_Engneer的专栏 1万+

上位机图像处理和嵌入式模块部署(qmacvisual获取边界点)

【声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 在图像处理中,解决了分割的问题之后,下面就是属性信息的提取。在这其中,有一种属性是非常重要的 ,那就是外界轮廓的边界点获取。这个边界点,可以用来计算长度,也可以用来进行直线、圆的拟合,具体的用途取决于现场的实际使用场景。目前qmacvisual支持对边界点的提取,相关控件可以直接用来提取边界点。

嵌入式-老费,一个分享专业嵌入式知识的blog 885

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ELK系列之四---如何通过Filebeat和Logstash优化K8S集群的日志收集和展示

在ELK Stack组件中,有logstash和filebeat都可以实现日志收集,因为filebeat更轻量化,在K8S集群中通常使用filebeat来收集pod的日志,通过daemonSet控制器在每个K8S每个节点上运行一个filebeat来收集每个节点上的pod日志,filebeat官网图如下,filebeat输出支持对接Elasticsearch、Logstash、Kafka、Redis,本文选择对接Kafka,先缓存filebeat收集的日志,这样可以减少对ES的性能要求。

gjjumin的专栏 2522

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

kubernetes中使用ELK进行日志收集

我们这里底层的容器引擎使用的是Docker,且宿主机上的systemd服务可用。因此,我们这里k8s集群系统的日志文件在宿主机的“/var/log”目录下。

weixin_39941298的博客 3436

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

k8s学习--基于k8s的ELK日志收集的详细过程

ELK 是 Elasticsearch、Logstash 和 Kibana 三个开源工具的组合,常用于数据搜索、日志管理和数据可视化Elasticsearch 是一个分布式搜索和分析引擎,基于 Apache Lucene 构建,主要用于存储、搜索和分析大量数据。Logstash 是一个数据收集引擎,能够从多个来源收集数据,进行过滤和转换,然后将数据发送到存储引擎(如 Elasticsearch)。Kibana 是一个数据可视化和分析平台,专为与 Elasticsearch 一起使用而设计。

lwxvgdv的博客 3950

企业级日志系统架构——ELK(Elasticsearch、Filebeat、Kafka、Logstash、Kibana)

文章目录一、概述1)Elasticsearch 存储2)Filebeat 日志数据采集3)Kafka4)Logstash 过滤5)Kibana 展示filebeat和logstash的关系二、ELK相关的备份组件和备份方式1)Elasticsearch的snapshot快照备份2)elasticdump备份迁移es数据3)esm备份迁移es数据 一、概述 大致流程图如下: 1)Elasticsearch 存储 Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有

匠人精神,持之以恒! 6291

ELK Stack日志管理:Elasticsearch、Logstash与Kibana

ELK Stack是云原生环境下强大的日志管理工具,由Elasticsearch、Logstash和Kibana三大组件构成。Elasticsearch负责分布式存储和检索日志数据,Logstash用于日志收集、处理和传输,Kibana则提供可视化分析界面。本文详细介绍了各组件的功能特点、安装配置方法,并展示了如何在Kubernetes环境中通过Filebeat收集容器日志。最后还提供了日志收集失败的常见排查方法,帮助用户构建完整的云原生日志管理系统。

fykam的博客 987

K8s 搭建 FileBeat+ELK 分布式日志收集系统 以及 KQL 语法介绍

Filebeat 是一个轻量级的日志传输工具,它负责收集日志数据并将其传输到Elasticsearch进行索引和存储。ELK是Elasticsearch、Logstash和Kibana三个开源项目的首字母缩写,它们共同构成了一个强大的日志管理和分析平台。

小毕超博客 2604
上一篇: Kubernetes Fluentd+Elasticsearch+Kibana统一日志管理平台搭建的填坑指南
下一篇: Kubernetes主机和容器的监控方案
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值