前言
前几天了解了 WebRTC 服务,并且基于 webrtc 官方的 apprtc 项目搭建一个1v1的音视频对话,参见尝鲜:如何搭建一个简单的webrtc服务器。有了1v1的实战,再来看多方音视频通信的方案,看看和1v1的方案的关系与不同。
前几天了解了 WebRTC 服务,并且基于 webrtc 官方的 apprtc 项目搭建一个1v1的音视频对话,参见尝鲜:如何搭建一个简单的webrtc服务器。有了1v1的实战,再来看多方音视频通信的方案,看看和1v1的方案的关系与不同。
前段时间grafana监控出问题,定位发现磁盘满了。今天grafana监控又出问题了,是去一看磁盘又满了。肯定是某一个服务在不停的吃磁盘,才7天时间,就吃掉了近200G。
通过df和du命令一点点定位找到真凶:/var/lib/grafana.db。此文件已经占用486G了。
我们grafana用的是sqlite存储配置相关信息,grafana.db文件就是sqlite的数据文件,登录sqlite:
1 | $> sqlite3 /var/lib/grafana.db |
Google、百度各种关键词都查不到相关问题,没办法,只好去github上看Issues了。搜索grafana.db和dashboard_version找到原因。这是grafana的一个bug,5.2.2、5.3.0都有这个问题,我们的版本是5.1.4也有这个问题。这个问题在今年1月份由bergquist提供了解决方案。
dashboards的来源中2个不同的文件夹下有一个相同的json文件
By mistake, I put twice the same JSON file in two different folders, which are used as a source of provisioned dashboards. And after some time I noticed, that MySQL databases were growing infinitely. After some quick check, I found, that the table "dashboard_version" was the biggest (with millions of "revisions" for "duplicated" dashboard).
在文件devenv/dashboards.yaml中增加一句:
1 | // https://github.com/bergquist/grafana/commit/2ea46fa925013abbf92871c3aec17250250a9250 |
这个问题在新版本已经解决了,原因是dashboard的json配置文件中的uid有相同的,导致相互间覆盖。但我验证时,导出所有的dashboard的配置文件,没有发现有相同uid的配置,这个难道是我之前对各配置文件分组引起的?我删除了几个不常用的dashboard,把所有配置都合并到一个文件夹中,没办法证实了。
但现在的问题是,已经有400多G数据,需要先解决这个问题再使用新版本。首先想到的是迁移到一个新的服务器上,但有个问题,配置文件的导出只能一个个导出dashboard,而且还不能导出类似数据源这类数据。本来这种配置数据迁移可以通过直接迁移数据库解决,但现在本来就是解决数据库太大的问题。
我正在学习Istio,正巧碰到阿里云的服务网格(Alibaba Cloud Service Mesh,简称 ASM)进入UAT环境 [1],于是报名并有幸能抢先体验一把阿里的Service Mesh。阿里这边对UAT的要求是「以真实客户视角从产品开通、控制台易用性、功能完整性和有效性以及帮助文档的完整性、准确性和易读性等维度体验评测产品,在规定时间完成产品评测后按照提交建议和评分模板完成最后的体验建议提交和评分。」UTA评分标准如下图:
创建 ASM 实例,参见 创建 ASM 实例。
添加集群到 ASM 实例,参见添加集群到 ASM 实例。
为 ASM 实例中的集群部署入口网关,参见添加入口网关。
将应用部署到 ASM 实例,参见部署应用到 ASM 实例。
定义虚拟服务和 Istio 网关
已开通以下服务:
服务网格 ASM
容器服务
资源编排(ROS)服务
弹性伸缩(ESS)服务
访问控制(RAM)服务
已创建至少一个标准托管ACK集群
前面两篇文章已经介绍了如何部署和如何使用。后面主要是如何写.drone.yml文件了,而.drone.yml文件,是由一个个插件执行一个个的步骤。上一篇也以一个实际的例子简单讲了一些插件的使用与作用,本篇对主要的几个插件进行稍详细的说明。
正常来说,任何一个镜像都可以作为一个插件(如上一篇用到的golang:alpine镜像,就是一个普通的golang镜像)。但在配置文件中使用了settings字段(如使用到了Secrets)或者使用drone自带的环境变量(如DRONE_BUILD_NUMBER),这时就需要对镜像进行一些特殊处理,我们在后续的篇章会专用介绍如何写Drone插件,本篇暂不详述。
实例:
1 | kind: pipeline |
说明:
1 | 1. kind: 设定为管道命令(默认值:pipeline,暂没有发现有其他可用值) |
实例:
1 | - name: 编译 |
实例:
1 | - name: 编译Build |
说明: