最近在做一个服务器能耗监测相关的工具,因为涉及到微服务,最终选定了Kubernetes作为平台。既然涉及到性能监控,一番搜索后,自然离不开该领域的“明星”Prometheus。

Prometheus是一个非常通用的性能数据收集工具。有多通用呢?通用到它几乎无法直接从任何性能数据源获取任何数据,必须通过类似驱动的中间件(官方称呼为exporter,译为导出器)对数据进行文本化的格式化处理,才能被Prometheus解析并记录下来。这一方面意味着Prometheus本身“一无是处”,而又意味着开发团队可以不用顾及任何数据源的兼容性,可以专心开发与监控相关的核心功能。

那么问题就来了:Prometheus是作为一个单体应用而设计的,接入方式可以说是“四通八达”,而性能数据收集往往涉及系统底层访问,时常需要提权操作;而Kubernetes可以说是一个半封闭式的系统,通过隔离性削减了很大一部分的特权级别的功能。好在Docker和Kubernetes做出了妥协,我们还是有机会通过参数强制开放危险权限以达成目的的。

CoreOS作为云计算领域的明星角色,在相当广泛的领域提供了大量开源组件的实现,比如CoreOS本体,Kubernetes网络层插件Flannel(据说是最好配置的CNI,但我就从来没安装成功过),等等。这次的主角Prometheus Operator也是源自CoreOS项目组。

默认情况下Service基于selector自动创建Endpoints,但是由于ipmi_exporter暂时没办法部署在容器里,所以用Service+Pod的方法行不通。Prometheus Operator只能用Service里定义的端口进行数据监控,所以改端口没什么用,必须创建包含目标端口的服务。思路是,先手动创建Endpoints,再基于Endpoints创建Service,这样Service就可以用现有的Endpoints提供服务。

Probe和Monitor好像不是同一种用法,所以就没用了。

  1. Service要与Endpoints重名,这样才能让Endpoints覆盖Service以提供服务
  2. Service不能写selector,不然会覆盖Endpoints
  3. 在一个Endpoints里写多个address即可
  4. serviceMonitorselector要与Servicelabel相对应

参考: https://devops.college/prometheus-operator-how-to-monitor-an-external-service-3cb6ac8d5acb
https://www.jianshu.com/p/005112fd2f0a

利用的是find命令。

具体使用的参数是:

  • -type:声明find要包含的文件类型,单字符,比如d表示目录(directory),f表示普通文件(file)等等,在此不做详细介绍;
  • -empty:只包含空文件;
  • -delete:删除找到的匹配项。

组合起来,即:

find . -type d -empty -delete

即可删除当前目录下的所有空文件夹。将-type d换成-type f即可达成删除空文件的效果。

在使用bt下载大型文件的时候,可能面临下载软件要初始化文件的问题。这是为了避免相同逻辑地址残留的历史数据无意或有意损坏文件的完整性(盲猜哈希碰撞)。对于固态硬盘来说,无疑是对底层Flash芯片的一次折磨(即便是置零,大多数情况下也会被主控识别为有效数据,写真实数据的时候还要再进行一次擦除,白白浪费了一次读写寿命);对于机械硬盘来说,受到读写速率的限制,会在相当一段时间内影响该磁盘的整体读写性能。因而,无论使用哪种存储介质,都会下意识尽可能避免该种情况。

方法是从reddit上看来的:确保设置中的disk.no_zerotrue,并使用管理员权限启动uTorrent。

目测原理是给了管理员权限之后,uTorrent可以调用Windows创建类空洞文件的权限(即声明空间但暂不分配、初始化)。

提供类似功能的工具为fsutil

fsutil file createnew <filename> <length-in-bytes>

检查wim镜像中各系统版本及其索引:

Dism /Get-ImageInfo /imagefile:X:\sources\install.wim

联网修复系统:

Dism /Online /Cleanup-Image /RestoreHealth

有时使用的系统版本过老,官网不再提供在线的镜像恢复功能,用上面的命令时可能会出现远程RPC调用失败的错误。
这时可以使用如下命令,从本地镜像修复系统:

Dism /Online /Cleanup-Image /RestoreHealth /source:wim:X:\sources\install.wim:1 /limitaccess

这里install.wim:1中的1就是上文所提到的,目标系统版本在wim镜像中的索引。这个索引是从1开始的。

简简单单配环境

本来配个rtsp服务十分简单,加个协议配个地址就成,结果因为巨硬把插件的下载链接关闭了,找资源就花了近一个小时。。QAQ

好在最终找到有好心人在archive上做了备份,最终还是成功了。

为了报复巨硬和万恶的C(吃)S(屎)D(大)N(娘),决定把下载链接放在这:点我下载

安装时遇到一个小问题就是,直接装会提示需要IIS7以上版本,即使Windows 10安装的IIS版本已经是10.0。这时需要在安装过程中修改注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InetStp下的MajorVersion为9,安装即可正常进行(装完记得改回原来的值)。

后来看了一下,OBS只支持rtmp协议的推流,而IIS的推流协议只支持HTTP= =
于是愉快地决定去用nginx了