[Sponge]XyDashboardPoster>>>一款监控运维数据收集插件!

[Sponge]XyDashboardPoster>>>一款监控运维数据收集插件!

Xy718 1,989 2020-03-30

前言

这是本人的SpongeAPI开发生涯中的第三个插件,也是一直想做,并且在做的,与未来相关计划有关的插件。
是一个领域结合型的插件!

话不多说,开始↓

什么是XyDashboardPoster

xydp是一个很简单的插件

利用Sponge提供的接口异步访问(仅获取,不操作)需要检测的数据,再推送到配置的TSDB上形成运维监控数据的生成。

就这么简单。

整体架构

如果你想要把你安装了xydp插件的服务器加入到你的运维监控体系中去,你需要了解一下整个工作的监控架构,不难,看起来像这样:

红圈部分就是我们插件哈哈,所以说xydp插件本体只占了整个架构很小的一部分,更多的是InfluxDBGrafana的魔法结合

了解过了?那我们开始吧!

安装部署

InfluxDB安装

InfluxDB作为目前xydp支持且唯一支持的时序数据库是必须要安装
 当然,Influxdb是使用GO语言开发的,以低性能消耗,低硬盘占用,高读写性能为目标开发的时序数据库,所以你不用担心InfluxDB对你机器带来的太大的负面影响(如果你还是担心,你可以装到别的机器上)
 并且,非常值得一提的是,如果你的服务端与InfluxDB所在的机器不在同一个内网,且你安装了InfluxDB的机器暴露了InfluxDB端口的话,你需要配置InfluxDB的用户校验!不然是非常不安全的做法,因为如果你是白嫖Grafana的免费社区版的话,是需要InfluxDB提供外网链接
这是我的安装InfluxDB的教程博客:

如果你真的很懒,并且对于监控运维系统对服务端运维带来效益持观望态度,所以不想花精力安装InfluxDB,那你可以试试阿里云的一元白嫖TSDB的活动:

只需要一元就可以白嫖4H16G的InfluxDB一个月!(爽到)
(目前暂不支持InfluxData官方的InfluxDB Cloud2.0 , 因为太新了哈哈)

Grafana安装

 Grafana 是一款采用 GO 语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。
 Grafana仅是本系统的首选监控面板如果你有其他更适合你的解决方案也可以哟,只要她支持InfluxDB即可(比如Chronograf)
 现在,你可以在任何机器上部署你的Grafana只要开放Grafana的端口,以及Grafana能够访问到你的InfluxDB就行了。
如果你想自己本地安装,你可以看我的这篇教程:

当然,像InfluxData一样,GrafanaLabs的GrafanaCloud也提供了免费的Grafana面板

你可以通过访问:

插件安装:

开源地址:https://github.com/Xy718/XyDashboardPoster
请下载最新版本的xydp:

目前xydp支持的SpongeAPI版本:

  • 7.X.X

也就是说你的服务端核心API7.0.0版本以上都是支持的(待验证)

你需要下载最新的XyDashBoardPoster插件本体,丢入你的服务端mods文件夹,然后运行一次你的服务端,用于生成默认的配置及语言文件。
当然,在你的服务端启动之后会报错,这是因为:

  • 可能用默认的配置文件中的数据库配置访问不了你的InfluxDB数据库
  • 你没有在你的系统中安装Sigar扩展库

然后你可以关闭你的服务端,配置你的InfluxDB连接配置和安装Sigar扩展库:

OKOK,现在我们需要的所有东西都安装完了,开始组合!

组合所有的模块

首先是InfluxDB

还记得你的CLI不?就是那个influx.exe文件,Linux的话就是简单的influx指令来进到你的CLI,我们需要配点东西
记得用auth指令登录哦,我们前面的教程中已经打开了InfluxDB的用户鉴权

创建一个数据库mcserver
指令:
CREATE DATABASE mcserver

PS:如果你mcserver来做命名也可以,只不过xydp默认的数据库名就是mcserver,待会配置一下就行

然后创建mcserver的保留策略
选中我们刚创建的的数据库mcserver
USE mcserver

然后使用SHOW RETENTION POLICIES来显示所有的保留策略:

这里给大家解释一下四个属性的含义:

  • duration: 决定InfluxDB中数据保留多长时间。在数据存在duration的时长之后的数据会自动从database中删除掉。0则为用不删除,这里建议大家储存7天左右即可,也就是7d
  • shardGroupDuration: “数据块”。可以这么解释⑧,就是按照设定时长来分组数据,这里大家不需要配置,默认即可。
  • replicaN: 决定在集群模式下数据的副本的个数。InfluxDB在N个数据节点上复制数据,其中N就是replication factor。大家也不需要配置。
  • default: 该保留策略是否是默认策略。

其实没什么可以配置的,默认的autogen策略足矣。若大家想自己配置一下策略细节的百度就行了嗷,不难。

到这里InfluxDB的配置内容就结束了。

不要松懈,还有两个要配的呢[○・`Д´・ ○]!

然后是插件配置

这一部分的话配置完就可以先让你的服务器跑起来收集数据了,毕竟InfluxDB也好了,这两个部分不需要Grafana可以自己工作。

前面不是让你启动过服务器了嘛,嘻嘻
找到你的配置文件,她在config/xydashboardposter中,打开
找到这一段

#所有数据收集器的启用设置!重要!
modules {
	#该项代表是否启用世界相关数据的收集
    world=false,
    #该项代表是否启用服务器相关数据的收集
    server=false,
    #该项代表是否启用用户相关数据的收集
    player=false,
}

默认的配置文件中所有的收集器模块是关闭的,你需要改一下配置,全部打开。
像这样就行了:

#所有数据收集器的启用设置!重要!
modules {
	#该项代表是否启用世界相关数据的收集
    world=true,
    #该项代表是否启用服务器相关数据的收集
    server=true,
    #该项代表是否启用用户相关数据的收集
    player=true,
}

然后找到这个部分:

#数据中心的连接配置!重要!
data-center {
    #数据库地址
    host="http://localhost",
    #数据库端口
    port="8086",
    #连接用户
    user="root",
    #用户密码
    password="123456",
    #使用哪一个数据库
    database="mcserver",
    #InfluxDB的保留策略(默认保存策略autogen)
    retention-policy="autogen",
}

这些配置选项都很熟悉⑧?你都填好就行了

然后启动服务器(* *)!!!!!!!!!!!!!
你会看到:


这样,xydp就开始工作了!
并且按照默认配置,会以间隔1s的时长获取数据,每隔10s推送数据到InfluxDB。
再次打开你InfluxDB的CLI:

看!
oh~code,M A G I C!!!!!!

哈哈,这里说明插件已经成功的把数据推送到你的InfluxDB了,接下来我们安心的配置Grafana即可

最后是Grafana

最后的Grafana部分可以说是整个系统的画龙点睛之笔
gkd,提起精神,最后冲刺了嗷!

打开并且登录你的Grafana

然后点击Create a data source来配一个数据源

选择InfluxDB(当然的!)

上面要配置的部分有:

Name: 写死为 influxdb-mcserver 我建议你不要改,真的,这个名字挺好
URL:  你的数据库连接,就像xydp配置中的链接一样,不同的是,这里要把端口带上,就像http://IP:PORT

Default: 可选可不选,我建议选上
Database: 你插件中配置的数据库名(提醒没有做笔记的同学是:mcserver)
User:     连接用户名,跟插件配置一致即可
Password: 这个用户的密码
HTTP Method: 选GET

然后点最下面的Save & Test

出现这样就说明连接成功啦!!!!

配置完数据库,还剩下最最重要的面板!

这里的话已经为大家准备好了一个预设面板~

博客链接:[面板预设]xydp主面板预设20200330
下载或复制里面的Json文件!
然后来你的Grafana面板
这样↓

你可以选择上传下载的.json文件,也可以选择在框中输入复制下来的json代码,都没有关系,你开心就好~

你也可以使用我在Grafana上公开的面板来直接导入!都是一样的
链接:Main-Server

然后点击Load导入!!!!!!!!!!!!!

这个地方需要你最终确认一些事项

最下面的influxdb-mcserver一栏需要配置,
influxdb-mcserver注意不要选错了嗷,我这里显示的这么多是因为之前有配过别的,所以有多,你别乱选就行了知道吧?

然后点击Import

???Wow,Amazing?

这波你嗯了没有

结语

哈哈,xydp插件的所有相关内容到这里就结束啦!
这几天xydp还有新的面板预设与检测内容在开发中,所以请大家有兴趣的话关注一下群里,更新了我会说的
然后mcbbs和ore的话帖子我还没发,这两天我也把她发了。也会在群里说的嗷(原谅我的不要脸)
别的不讲了,我先来群里吹水了,今天写了一整天累死


如果你喜欢的话,点一下下面的Support,请我喝杯香飘飘可以嘛嘤嘤嘤


冶心·练体·得技