ELK多租户方案

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: 本文主要介绍如何实现一套ELK日志系统同时给多套环境、多个系统共同使用/测试,并实现相互之间的数据与视图相互隔离互不影响。

一、前言

日志分析是目前重要的系统调试和问题排查的重要手段之一,而目前分布式系统由于实例和机器众多,所以构建一套统一日志系统是非常必要的;ELK提供了一整套解决方案,并且都是开源软件,之间互相配合使用,完美衔接,高效的满足了很多场合的应用,是目前的主流选择之一。

本文主要介绍如何实现一套 ELK日志系统 同时给 多套环境多个系统 共同使用/测试,并实现相互之间的数据与视图相互 隔离 互不影响。

 

二、隔离方式

常见的 ELK 架构如下图所示,分别由 ElasticsearchLogstashKibanaFileBeat 组成。
elk架构图.png

分别在每个应用服务器里部署一个 FileBeat 组件作为日志收集器,通过输入插件从文件中获取数据,然后传输给 Logstash 将通过过滤插件加工并结构化处理日志数据后发送至 Elasticsearch 存储,最后通过 Kibana 进行可视化展示分析。

PS:需要对上图中 ELK 的各个组件分别做 隔离 处理

 

2.1. FileBeat隔离

由于每台机器上都会部署一个 Beat 实例作为日志收集,所以 FileBeat 本身无需做任何隔离配置,但是作为数据的入口需要把所属 租户 相关的信息传递给下游,如下图所示

filebeat配置.png

通过 project(项目名) 和 env(环境) 作为 租户 隔离标识

 

2.2. Logstash隔离

主要是每个项目的日志格式可能会不一样,所以会存在不同的个性化配置文件,这个 日志解析配置文件 需要定义隔离规则进行分离;

使用以下命令启动 logstash 指定 config/conf/ 为配置存放目录,并指定配置文件热加载。

bin/logstash -f config/conf/ --config.reload.automatic

 

日志解析配置文件隔离方法可参考下图方式:

logstash配置.png

(1)01-input-beats.conf

为通用 输入 配置,每个租户共享,用于接收来自 Filebeat 的数据

input {
  beats {
    port => 5044
  }
}

 

(2)02-output-es.conf

为通用 输出 配置,每个租户共享,用于把日志数据按照定义好的 索引命名规则 创建索引写入到es中

需要在数据来源中添加 projectenvdocType 三个字段分别代表项目名、环境与日志类型

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隔离

可通过多工作区的方式进行隔离,每个租户创建自己独立的工作空间,用于隔离自己的索引数据、展示视图等对象,并且 相互不可见

工作区的配置流程如下:

  1. 创建工作区
  2. 创建角色(配置权限)
  3. 创建用户(关联角色)

2.3.1 创建工作空间

2.3.1.1 超级管理员登录

使用超级管理员账号 elastic 登录Kibana,选择 默认工作区
选择工作区.png

2.3.1.2 进入管理页面

进入管理界面.png

2.3.1.3 创建工作空间

创建工作区,并可定制显示的功能点(默认全部显示)
创建工作空间.png

 

2.3.2 创建角色绑定工作空间

创建一个新的角色,并分配对应的 索引权限工作区权限 等权限给该角色
创建角色.png

 

2.3.3 创建用户

创建用户,并绑定自己 工作空间 下的角色
创建用户.png

PS:该用户只能看到自己所属 工作区 下的 索引仪表板 等对象

 

三、总结

每个 租户 需对 ELK 的各个组件分别做 隔离 处理

  1. Filebeat:负责把区分 租户 相关的信息传递给下游
  2. Logstash:独立分开每个租户的个性化 Filter 配置文件
  3. Elasticsearch:通过规范的索引命名,各租户独立的创建索引实现物理隔离
  4. Kibana:通过多工作区的方式进行隔离,数据与仪表板等互不可见

 

PS:隔离步骤虽然有点繁琐,但是后期大家可以自行开发产品化日志系统,把上述的步骤放在图形化界面上操作实现。

 

扫码关注有惊喜!

陶陶技术笔记公众号二维码.png

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
目录
相关文章
|
存储 缓存 运维
|
消息中间件 存储 SQL
【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务
大概一年多前写过一个部署ELK系列的博客文章,前不久刚好在部署一个ELK的解决方案,我顺便就把一些基础的部分拎出来,再整合成一期文章。大概内容包括:搭建ELK集群,以及写一个简单的MQ服务。
552 0
【ELK解决方案】ELK集群+RabbitMQ部署方案以及快速开发RabbitMQ生产者与消费者基础服务
|
监控 Java 网络安全
五分钟带你玩转Elasticsearch(九)生产环境ELK监控spring boot方案
五分钟带你玩转Elasticsearch(九)生产环境ELK监控spring boot方案
302 0
五分钟带你玩转Elasticsearch(九)生产环境ELK监控spring boot方案
|
消息中间件 监控 NoSQL
ELK日志分析方案
针对公司项目微服务化,随着项目及服务器的不断增多,决定采用ELK(Elasticsearch+Logstash+Kibana)日志分析平台进行微服务日志分析。 1.ELK整体方案 1.1 ELK架构图 1.2 ELK工作流程 1.在微服务服务器上部署Logstash,作为Shipper的角色,对微服务日志文件数据进行数据采集,将采集到的数据输出到Redis消息队列。
2657 0
|
4月前
|
存储 监控 数据可视化
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
日志分析对决:揭示 ELK 与 GrayLog 的优势和差异
1007 0
|
4月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
23天前
|
消息中间件 Kafka 开发工具
rsyslog+ELK收集Cisco日志
rsyslog+ELK收集Cisco日志
|
1月前
|
运维 监控 Ubuntu
一键启动日志魔法:揭秘ELK自动安装脚本的神秘面纱!
【8月更文挑战第9天】在数据驱动时代,高效处理日志至关重要。ELK Stack(Elasticsearch、Logstash、Kibana)是强大的日志分析工具,但其复杂的安装配置常让初学者望而却步。本文介绍如何编写ELK自动安装脚本,简化部署流程。脚本适用于Ubuntu系统,自动完成ELK下载、安装及基本配置,包括依赖项安装、服务启动及自启设置,极大降低了使用门槛,助力运维人员和开发者轻松构建日志分析平台。
92 6
|
22天前
|
存储 消息中间件 监控
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统ELK、日志收集分析
Java日志详解:日志级别,优先级、配置文件、常见日志管理系统、日志收集分析。日志级别从小到大的关系(优先级从低到高): ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF 低级别的会输出高级别的信息,高级别的不会输出低级别的信息
|
1月前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志