ELK日志分析系统

ELK日志分析系统,第1张

       随着软件行业的发展,软件系统的生产部署结构日趋复杂。对于一个分布式的系统,同一应用通常部署在不同的节点上,通过负载均衡的方式将请求分发到各个不同的节点进行处理。此时就会相对增加生产运维的复杂度,在进行问题查询的时候很难判断本次请求是在哪台机器上执行的,也就无法快速的对日志进行查询从而定位问题,因此,就需要对日志进行统一的处理和分析,以便方便开发和运维人员的问题处理速度。

本文介绍的是elastic stack开源的ELK组件,主要包括elasticsearch(简称es),logstash,kibana三个核心组件。
es是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能,对外提供REST和java api,可扩展性的分布式系统。
Logstash是一个用来搜集、分析、过滤日志的工具,几乎支持所有类型的日志,能够接收多种来源的日志,包括syslog、mq,并且能够输出到多种介质中,包括es,邮件等等。
Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户定制仪表板视图,还允许用户使用es语法进行 *** 作。

但是,在实际使用的过程中发现,logstash会占用很多系统资源,因此决定加入一个更轻量的日志收集组件(也是elastic stack的组件之一)filebeat。因此在加入filebeat之后,整个部署架构变成了如下图所示。

安装包:
    elasticsearch-662targz
    kibana-662-linux-x86_64targz
    logstash-662targz
    filebeat-660-linux-x86_64targz
    jdk-8u192-linux-x64targz
机器:
    19216845174,19216845175,19216845176(ES集群)
    192168452(logstash,kibana)
    19216845136(应用服务器,安装filebeat)

   注(1):由于ELK组件都是使用java开发的,因此需要安装18以上版本的jdk
      jdk的安装方法: >按Alt + 回车键,将会生成eureka-serverzip,解压缩后得到一个maven 项目,将该项目录入IDE。

我们首先来看一下pom文件,可以看出项目中引用了spring-cloud-starter-netflix-eureka-server, 并且springboot 的版本号为:212RELEASE, Spring Cloud的版本号为:GreenwichRC2RC2 表示还没有正式发布,只是第二个Release Candidate。
接下来我们只需要两个步骤,
a、修改EurekaServerApplication, 在@SpringBootApplication的注解上面,加入一个新的注解:@EnableEurekaServer
b、在resources 目录中加入applicationyml 文件, 并配置以下信息:

一个简单的Eureka 注册中心就已经可以使用了,我们运行一下这个spring boot 应用,找开浏览器:localhost:8761,即可看到我们的注册中心就已经运行启来了。并且EUREKA-SERVER也注册到自己的注册中心了。

单节点的注册中心已经搭建完毕,但单节点的注册中心存在单点故障的可能,不能用于生产环境。生产环境的Eureka一般采用集群方式进行部署。

通过clientserviceUrldefaultZone配置多个peer节点,因为是在单机上测试,所以修改了host文件,并且使用不同的端口号来启动注册中心。正式的生产环境请根据自己的实际情况进行配置,比如:第一台Eureka的IP地址为:1921680100,则defaultZone配置其他三台注册中心>用户组管理所涉及的文件有2个:\plugins\GroupManager\worlds\world下的“groupsyml”和“usersyml”(注意yml格式要用写字板打开,推荐EmEditor等软件)。
权限有两种添加方法,一种是在游戏中使用命令添加(前提是你有添加的权限,OP即可),另一种是更改文件来添加权限(比命令的一个一个添加快,适合老手),
groupsyml
说明(注意格式一定要保持如下):
开头不空格的是“groups”,文件固定设置不要更改;
开头空2格的是组别,默认有(级别依次提高):“default(默认)”、“Builder(建筑家)”、“Moderator(调解人)”、“SemiAdmin(副管理)”、“Admin(总管理)”;
开头空4格的是各组的各项设置,名称不需要修改;
开头为“ - ”的是权限和功能,由插件提供;
开头空6格的是用户组的属性信息。
文件组设置一般格式:
groups: (这个要保持在文件最上处)
XXX: (XXX的含义是你可以自行增减用户组,名称任意,只要保持各设置格式相同即可)
default: false (该项设置玩家第一次进入游戏时,是否自动归入改组,true是,false否,下同)
permissions: (该项设置玩家的权限,在下一行之后添加,该项请看完后面的设置再更改)
- essentials (代表ESS插件某一权限,例如“sethome”为设置家等,如果保持,该组则拥有Essentials插件的所有权限)
- '' (仅仅为''(注意引号)则是指该组拥有所有的权限(包括上面的))
- XXXXXX (这是其他插件的权限格式,长短,点数量不定,作者应该在帖子中作说明)
inheritance: (意为继承,在下一行之后添加其它某一组(级别相邻或相同即可),之后XXX组就拥有所添加的组的所有权限,没有则改为“ inheritance: []”,下方组也不添加)
- default (例如该项设置了默认组,则XXX组就拥有默认组所有权限(你不用再在“permissions”中添加命令了))
info: (用户组属性)
prefix: '&e' (前缀,若将引号中的内容改为“&c[VIP]&2”,该组所有玩家名则会显示为:[VIP]绿名,输入“/list”查看在线人数时就可以看到。颜色设置在这里看)
build: true (该组是否能修改地形(注:刚安装插件时,默认组此项为false))
suffix: '' (尾缀,好吧,这项我没用过,应该和“prefix”一样功能,不过在昵称尾部)
usersyml
说明(注意格式一定要保持如下 ):
开头不空格的是“users:”,文件固定设置不要更改;
开头空2格的是玩家;
开头空4格的是各组的各项设置,名称不需要修改;
该项设置很简单,一般格式:
users: (该项固定在文件顶部)
123: (我们以一个名叫“123”的玩家举例吧)
subgroups: [] (子用户组,类似于上面的“继承”,单独对该玩家有效(上面的“继承”同样有效),冒号后接空格+[]表示“无”,下同)
permissions: [] (权限,仅该玩家拥有(添加方法同groupsyml),该两项设置一般不需更改)
group: XXX (玩家所在用户组)
P·S:若保持空的状态,通过下文的命令来进行编辑,则需要改为:
users: {}
复制代码
以上两个文件,所有同一横行后有设置的项,冒号后都有一个空格。
用户组命令(在游戏中和服务器中进行修改)
注意:在游戏中输入命令前需要加“/”,在服务器中则不用;在游戏中输入“/help”(第1页)或“/help ”(为页数)可查看命令及英文说明。
进行更改前提命令:
manselect world 选择world为需要更改权限的地图;
mantogglevalidate 允许更改不在线的用户(若只更改在线的,则无需输入);
请确认输入此命令后server窗口显示如下字样:
[INFO] Validade if player is online, now set to: false (玩家在线时才生效,现在设置为:否(意思就是不在线的也能修改了))
[INFO] From now on you can edit players not connected BUT: (从现在起你能编辑未连接的玩家…但是:)
[INFO] From now on you should type the whole name of the player, correctly (从现在开始你需要正确地输入被更改玩家的全名。)
若显示为:
[INFO] Validade if player is online, now set to: true
则需要再输入一遍命令,确保为false(这样你才能修改不在线的)。
以下是自行用户及组设置(man后接u是对用户,接g是对组设置):
manuadd 123 XXX 将玩家123添加到XXX用户组;
manudel 123 将玩家123变为默认组;
manuaddsub 123 XXX 将XXX用户组添加到玩家123的子用户组列表中;
manudelsub 123 XXX 将XXX用户组从玩家123的子列表中剔除;
manuaddp 123 essentials 为玩家123单独增加essentials权限(由于大部分权限都由Essentials基础插件提供,所以这是一般形式);
manudelp 123 essentials 删除玩家123拥有的essentials权限;
manulistp 123 列出玩家123所拥有的权限;
manucheckp 123 essentials 检查玩家123是否拥有essentials权限,并寻找出处(用户组);
manuaddv 123 prefix &1 设置玩家123的prefix变量为&1(变量目前有prefix(前缀)、suffix(尾缀)、build(破坏方块)三种,已有效);
manudelv 123 prefix 删除玩家123的prefix变量;
manulistv 123 列出玩家123所拥有的变量(虽然无效,但看还是能看的);
manucheckv 123 prefix 查看玩家123的prefix变量属性(这里看的是用户组里的);
mangadd XXX 添加名为XXX的用户组;
mangdel XXX 删除名为XXX的用户组;
mangaddp XXX essentials 为用户组XXX增加essentials权限;
mangdelp XXX essentials 删除用户组XXX拥有的essentials权限;
manglistp XXX 列出用户组XXX所拥有的权限;
mangcheckp XXX essentials 检查用户组XXX是否拥有essentials权限,并寻找出处;
mangaddv XXX prefix &1 设置用户组XXX的prefix变量为&1;
mangdelv XXX prefix 删除用户组XXX的prefix变量;
manglistv XXX 列出用户组XXX所拥有的变量;
mangcheckv XXX prefix 查看用户组XXX的prefix变量属性;
mangaddi XXX1 XXX2 使用户组XXX1继承用户组XXX2的权限;
mangdeli XXX1 XXX2 将用户组XXX2从用户组XXX1的继承列表中删除(这个命令经测试发现有问题,删除不了);
manpromote 123 XXX 将玩家123升级到XXX用户组;
mandemote 123 XXX 将玩家123降级到XXX用户组(其实这两个命令都是改变组别的,升级降级无实在含义);
listgroups 列出目前所存在的用户组。
资料来源 我比较尊重原帖作者
>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13469968.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-13
下一篇 2023-08-13

发表评论

登录后才能评论

评论列表(0条)

保存