ELK多租户方案
一、前言
日志分析是目前重要的系统调试和问题排查的重要手段之一,而目前分布式系统由于实例和机器众多,所以构建一套统一日志系统是非常必要的;ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前的主流选择之一。
本文主要介绍如何实现一套 ELK日志系统
同时给 多套环境 、多个系统 共同使用/测试,并实现相互之间的数据与视图相互 隔离 互不影响。
二、隔离方式
常见的 ELK
架构如下图所示,分别由 Elasticsearch
、Logstash
、Kibana
与 FileBeat
组成。
分别在每个应用服务器里部署一个 FileBeat
组件作为日志收集器,通过输入插件从文件中获取数据,然后传输给 Logstash
将通过过滤插件加工并结构化处理日志数据后发送至 Elasticsearch
存储,最后通过 Kibana
进行可视化展示分析。
PS:需要对上图中
ELK
的各个组件分别做 隔离 处理
2.1. FileBeat隔离
由于每台机器上都会部署一个 Beat
实例作为日志收集,所以 FileBeat
本身无需做任何隔离配置,但是作为数据的入口需要把所属 租户 相关的信息传递给下游,如下图所示
通过 project(项目名) 和 env(环境) 作为 租户 隔离标识
2.2. Logstash隔离
主要是每个项目的日志格式可能会不一样,所以会存在不同的个性化配置文件,这个 日志解析配置文件 需要定义隔离规则进行分离;
使用以下命令启动 logstash
指定 config/conf/
为配置存放目录,并指定配置文件热加载。
bin/logstash -f config/conf/ --config.reload.automatic
日志解析配置文件隔离方法可参考下图方式:
(1)01-input-beats.conf
为通用 输入 配置,每个租户共享,用于接收来自 Filebeat 的数据
input {
beats {
port => 5044
}
}
(2)02-output-es.conf
为通用 输出 配置,每个租户共享,用于把日志数据按照定义好的 索引命名规则 创建索引写入到es中
需要在数据来源中添加
project
、env
和docType
三个字段分别代表项目名、环境与日志类型
output {
elasticsearch {
hosts => ["localhost"]
user => "elastic"
password => "changeme"
index => "%{[fields][project]}-%{[fields][env]}-%{[fields][docType]}-%{+YYYY.MM.dd}"
}
}
ip、用户名和密码按实际情况修改
(3)mp.conf
为个性化 日志解析 配置,每个租户单独新建一个配置文件配置自己的 filter
内容
filter {
if [fields][project] == "mp" and [fields][env] == "pre" and [fields][docType] == "syslog" {
grok {
..........
}
}
}
PS:必需增加
if
语句来确认是否属于自己租户的日志数据!
2.3. Elasticsearch隔离
通过不同的索引命名,创建各自独立的索引实现物理隔离;由前面的 Logstash
在结构化数据后生成索引时,已自动通过 Filebeat
的入参变量动态生成规定的索引名。
索引的命名规则为:${项目名}-${环境}-${日志类型}-%{+YYYY.MM.dd}
例如:mp-pre-syslog-2020.12.01
2.4. Kibana隔离
可通过多工作区的方式进行隔离,每个租户创建自己独立的工作空间,用于隔离自己的索引数据、展示视图等对象,并且 相互不可见。
工作区的配置流程如下:
- 创建工作区
- 创建角色(配置权限)
- 创建用户(关联角色)
2.3.1 创建工作空间
2.3.1.1 超级管理员登录
使用超级管理员账号 elastic
登录Kibana,选择 默认工作区
2.3.1.2 进入管理页面
2.3.1.3 创建工作空间
创建工作区,并可定制显示的功能点(默认全部显示)
2.3.2 创建角色绑定工作空间
创建一个新的角色,并分配对应的 索引权限
与 工作区权限
等权限给该角色
2.3.3 创建用户
创建用户,并绑定自己 工作空间
下的角色
PS:该用户只能看到自己所属
工作区
下的索引
和仪表板
等对象
三、总结
每个 租户 需对 ELK
的各个组件分别做 隔离 处理
- Filebeat:负责把区分 租户 相关的信息传递给下游
- Logstash:独立分开每个租户的个性化
Filter
配置文件 - Elasticsearch:通过规范的索引命名,各租户独立的创建索引实现物理隔离
- Kibana:通过多工作区的方式进行隔离,数据与仪表板等互不可见
PS:隔离步骤虽然有点繁琐,但是后期大家可以自行开发产品化日志系统,把上述的步骤放在图形化界面上操作实现。
扫码关注有惊喜!
ELK多租户方案的更多相关文章
- ELK + kafka 日志方案
概述 本文介绍使用ELK(elasticsearch.logstash.kibana) + kafka来搭建一个日志系统.主要演示使用spring aop进行日志收集,然后通过kafka将日志发送给l ...
- FreeSql 将 Saas 租户方案精简到极致[.NET ORM SAAS]
什么是多租户 维基百科:"软件多租户是指一种软件架构,在这种软件架构中,软件的一个实例运行在服务器上并且为多个租户服务".一个租户是一组共享该软件实例特定权限的用户.有了多租户架构 ...
- FreeSql 将 Saas 租户方案精简到极致[.NET ORM]
什么是多租户 维基百科:"软件多租户是指一种软件架构,在这种软件架构中,软件的一个实例运行在服务器上并且为多个租户服务".一个租户是一组共享该软件实例特定权限的用户.有了多租户架构 ...
- ELK日志分析方案
针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析. 1.ELK整体方案 1.1 ELK架构图 ...
- 实现saas多租户方案比较
看到一篇比较多租户数据隔离方案的文章,总结挺不错.其实大部分内容在我前几年写的文章都有. 文章翻译自: https://blog.arkency.com/comparison-of-approache ...
- saas系统多租户数据隔离的实现(一)数据隔离方案
0. 前言 前几天跟朋友聚会的时候,朋友说他们公司准备自己搞一套saas系统,以实现多个第三方平台的业务接入需求.聊完以后,实在手痒难耐,于是花了两天时间自己实现了两个saas系统多租户数据隔离实现方 ...
- 云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)
2013年,云计算领域从此多了一个名词“Docker”.以轻量著称,更好的去解决应用打包和部署.之前我们一直在构建Iaas,但通过Iaas去实现统一功 能还是相当复杂得,并且维护复杂.将特殊性封装到 ...
- 初探 ELK - 每天5分钟玩转 Docker 容器技术(89)
在开源的日志管理方案中,最出名的莫过于 ELK 了.ELK 是三个软件的合称:Elasticsearch.Logstash.Kibana. Elasticsearch一个近乎实时查询的全文搜索引擎.E ...
- 多租户实现之基于Mybatis,Mycat的共享数据库,共享数据架构
前言 SaaS模式是什么? 传统的软件模式是在开发出软件产品后,需要去客户现场进行实施,通常部署在局域网,这样开发.部署及维护的成本都是比较高的. 现在随着云服务技术的蓬勃发展,就出现了SaaS模式. ...
- SpringBoot使用ELK日志收集
本文介绍SpringBoot应用配合ELK进行日志收集. 1.有关ELK 1.1 简介 在之前写过一篇文章介绍ELK日志收集方案,感兴趣的可以去看一看,点击这里-----> <ELK日志分 ...
随机推荐
- 【终极指南】使用Python可视化分析文本情感倾向
本文分享自华为云社区<Python理解文本情感倾向的终极指南>,作者: 柠檬味拥抱. 情感分析是一种通过自然语言处理技术来识别.提取和量化文本中的情感倾向的方法.Python在这一领域有着 ...
- NOIP模拟89(多校22)
T1 谜之阶乘 解题思路 二分答案,发现 \(a-b\) 至多为 19,毕竟 \(20!\) 已经大于 \(10^{18}\) 了. 对于每一种可能的差值,每一次二分 \(b+1\) 直接枚举乘积进行 ...
- js 设置复选框选中后不勾选
今天在解决bug的时候,明明觉得这是个小问题,但是在我去调试的时候,发现使用setAttribute一直没得效果,虽然input框已经设置了checked属性,但是无法勾选,于是在网上找了一大堆,发现 ...
- wordpress博客系统报错
第一种,只显示nginx的默认网页 说明wordpress的网页配置文件没有被系统读取 我们就需要去查看nginx的配置文件/etc/nginx/conf.d/default.conf 首先,查看是不 ...
- 忘记root密码,破解root密码
破解root用户密码: 1.按e进入内核参数重置界面 2.找到开头Linux的段落,行尾输入rd.break 3.按ctrl+x 进入可选步骤 5.以读写方式挂载sysyroot 修改root密码要挂 ...
- liquibase常用操作
1.概述 Liquibase是一个用于跟踪.管理和应用数据库变化的开源的数据库重构工具.它将所有数据库的变化(包括结构和数据)都保存在XML文件中,便于版本控制. 本文旨在将平时工作中常用的一些操作进 ...
- C#窗体内控件大小随窗体等比例变化
一.首先定义全局变量 1 private float X;//当前窗体的宽度 2 private float Y;//当前窗体的高度 3 private bool IsFirst = true; 二. ...
- 荣耀无5G开关,荣耀手机,荣耀80GT
荣耀无5G开关,荣耀手机,荣耀80GT. Magic OS 版本号是:7.0.0.138(C00E135R2P6). 解决方法: 1.进入设置-关于手机-连续点击7次版本号. 会提示,开发者选项已开启 ...
- EF MYSQL 出现:输入字符串的格式不正确
实体类字段和数据库类型不一致. 比如:数据库是char类型字段,程序里声明为int.
- 哎,被这个叫做at least once的玩意坑麻了。
你好呀,我是歪歪. 前几天遇到一个生产问题,同一个数据在数据库里面被插入了两次,导致后续处理出现了一些问题. 当时我们首先检讨了自己,没有做好幂等校验.甚至还发现了一个低级错误:对应的表,针对订单号, ...