信息、图表代理网站:http://screeps.mofengfeng.com/
前言
展示一下去年的全栈学习成果(误
前端使用react(没学过jquery,vue),后端使用python flask(本来想用node,但是轮子少。。),服务端使用nginx和uwsgi部署前后端,使用docker部署grafana和influxdb,
如果网站凉了,我会写在这里。截至 2022/7/19 还没有凉
使用过程中若出现其他问题,可以联系我,我还有心思的话就会修好。。
如何使用
参考hoho对于ScreepsPlus网站上的图表教程https://www.jianshu.com/p/de74baf6fb48
在screeps中向memory加入统计数据
见hoho教程。
例:将如下代码加入到你的主循环的任意部分。不过最好是末尾,方便统计cpu
if (Game.time % 20) return
if (!Memory.stats) Memory.stats = {}
// 统计 GCL / GPL 的升级百分比和等级
Memory.stats.gcl = (Game.gcl.progress / Game.gcl.progressTotal) * 100
Memory.stats.gclLevel = Game.gcl.level
Memory.stats.gpl = (Game.gpl.progress / Game.gpl.progressTotal) * 100
Memory.stats.gplLevel = Game.gpl.level
// CPU 的当前使用量
Memory.stats.cpu = Game.cpu.getUsed()
// bucket 当前剩余量
Memory.stats.bucket = Game.cpu.bucket
如此,你的Memory对象中便有了stats字段,其中储存了你所需的统计信息,以方便外部获取。
*** 注意 *** 由于所用数据库InfluxDB的特点,无法直接储存字典类型的数据。所以对于path中的对象,第二层的对象嵌套会转为json字符串:
(此外,不支持数组)
例:path为stats
Memory:{
...xxx,
stats:{
a:123,
b:123,
c:{
d:123,
e:{
f:123
}
}
}
}
则可视化界面最多可读取到a、b的数据,c中的数据需要对json进行解析后获取。
详情见本文末尾。
注册并登录
首先填写用户名和密码,进行注册并登录。
登录后,填写token,path,shard信息。
(格式样例:token:xxxxxxxx,path:stats,shard:shard3)
点击提交按钮,会向screeps官方服务器发送一次获取数据的请求。若请求通过,则视为测试成功。
提交成功后,会在下方显示已提交的代理列表。
(注:懒得写删除和修改按钮了,如果有需要联系我手动删除,或者我补上按钮)
信息默认两分钟收集一次,保留90天。如果有特殊需要请联系我。
此时这个网站的任务已经完成了。下一步到grafana图标网站。
Grafana
点击登录网页的上方或此地址http://grafana.mofengfeng.com/进入grafana数据可视化网站。
来到网站的首页,可以随便看看。
在左下角Sign in进行登录。
使用你在刚才网站(提交信息的网站)注册的用户名和密码登录即可。
数据源我已经在后端导入好了,无需手动配置。
在左侧菜单选择新建仪表面板。
新建一个数据面板Panel
可以看到下方是这样的数据查询面板
default可以不用管。点击select measurement,选择自己的用户名
(如果没有,请等待两分钟再回来查看)
WHERE 后面的加号可以通过path和shard筛选数据。当然你不选也可以,会显示所有shard和path的数据。
点击SELECT行中的field(value)中的value,可以对你的数据进行选择。
可以看到已经有一些数据。
这意味着我们的数据收集已经正常运行了。
*** 注意 ***
若选择的字段储存前为 js对象 ,则会被转为json后存入。
如何查询?以下是举例
假设你的path stats是这样。
rcl之上的数据都可以直接查询。但rcl这种嵌套对象,需要进行额外处理。
如此
在Transform中,新建Extract fields,并选择你的对象字段,启用Replace all fields
即可获得第一层数据。
若存在更深层次的嵌套,可以如法炮制,但操作较为繁琐。可以尝试自己编写InfluxQL进行查询,或者我更换为可以直接储存并查询多层嵌套json的数据库。
具体的图表制作操作请自行探索!
(可一定程度上参考hoho的教程https://www.jianshu.com/p/de74baf6fb48,然而grafana的版本不同,许多操作已经发生了变化。。)
后记
暂无
Comments | 1 条评论
博主 匿名
谢谢大佬=-=