dsh 监视器
监视插件 深搜索策略:机器健康,运行时状态,您工作的git寄存器,以及您开发的Kubernetes集群——从一个侧边栏条目,而不离开应用程序.
这个 赛斯泰姆 条目包含四个子视图,从面板顶端的标签切换: 机器 答案是 这机器健康吗, 库伯涅斯 回答“集群中运行的是什么,退化的是什么,为什么?”, 贝多斯 答案是“工作空间的状况如何,还有什么可以推动?” 应用程序 回答“这个Mac上安装了什么,什么是过时的?” 四个界面用法语书写.
显示什么
- 机器 ——CPU,内存,磁盘,负载平均值,电池,互换,顶端流程和a 处理器 随时间推移绘制处理器的卡片。 样本附于
cpu.jsonl每60 s,无论面板是否打开,并保留了24 h;卡片读出文件回放在三个窗口之一(1 h,6 h,24 h——它打开在1 h上),将每个桶的平均取出为一曲线,每点说平均和峰值超过其测量,将窗口(当前,最小,平均,最大)相加起来,并解释自己,而不是在文件尚不持有时显示空白地块. 内存遵循活动监视器定义( app + 有线 + 压缩) 而不是天真total - free,当操作系统保持不活跃的页面时,其位置为~99%。 CPU是两个平台上实时窗口上的三角洲: a/proc/statlinux 上的样本, 第二个top -l 2 -s 1在macOS上的样本。 Linux 读取/proc/meminfo, (中文(简体) ),/proc/stat, (中文(简体) ),/proc/swaps财务报告和审定财务报表/sys/class/power_supply直接说 Colima 出现时,其 VM 磁盘是通过colima ssh -- df -kP和主机磁盘分开报告. - DSH 数字 ——活动会话,运行任务,24h以上的启动出错,缓存大小,最近会话,以及今天的成本何时
costLedger指JSON分类账. - 贝多斯 git 工作空间读作任务板:一个横幅在一句话中说明工作空间(有多少存储器被监视,有多少携带了剩余部分,公关是否失效);六个标题数字(存储器、可观看的存储器、脏存储器和文件、后面、任务工作树、任务公关); • 特性 将其余的按原因分组——一个僵化的克隆人、未经承诺的文件、一个从未离开过机器的特派团——每个原因一张卡及其证据(
git命令、其范围和所触及的存储器 贝多斯 表格列出每个寄存器及其分支、状态、同步、上游、最后承诺和PR,可按表态和工作树过滤; 奥维特·来历 显示克隆及其相联的工作树,每次检查时使用其PR或“不按”旗; 团 团 以公关方式加入特派团; 活动中心 将每次检查的最后24小时承诺数合在一起; 鸡尾酒 解释数字并打开一个12个任期的词汇表。 一个寄存器打开一个抽屉(分支和上游,取出,拉出请求,最后承诺,更改文件,工作树状态,最后原始读取),一个原因打开其证据. 一切只读:面板从不运行 git 写入,命令作为副本而不是按钮提供. - 应用程序 (macOS)——Mac读作已安装的地产:每
.app在其中找到捆绑/Applications它的子文件夹,/Applications/Utilities财务报告和审定财务报表~/Applications,加入了Homebrew。 。 横幅以一句表示地产; 有六个标题数字( 应用程序、 捆绑由 Homebrew 管理、 已知更新、 水缸脱离同步、 无效捆绑、 最后一个)brew update(三); • 特性 组合需要由原因决定的东西——一个不再打开的捆绑,一个水缸,其水缸版本和Info.plist版本有异议,在Homebrew以外的应用程序——每个原因一张卡及其证据 应用程序 表格列出每个捆绑及其版本、来源(Homebrew cask、直接安装、macOS系统链接)、安装日期和状态,按来源、调节状态和无效捆绑可过滤 套装无效 图本身就是过滤器:点击会将表格缩小到不再打开的捆绑上,其芯片和被按下的数字显示过滤器已经打开,以及 图图 或第二次点击后将整个地产带回; 没有无效的捆绑, 数字不带焦点并说原因, 和一个没有行名的过滤表, 不显示空正文 国民卫队 在水缸管理的捆绑上以同样的方式过滤图,其芯片和按住状态都这么说; 土生土长 显示已安装的公式和水缸、其年龄以及水龙头后面的距离FETCH_HEAD· ; 长水缸 按行将库与磁盘比较; 鸡尾酒 解释每个数字并打开一个十期词汇表. 一个捆绑打开了抽屉(识别器,签名和团队,架构,大小,隔离,两边的版本,两个命令面板运行),一个原因打开了它的证明. A 类 土生土长 在所请求的设置中切换brew --version, (中文(简体) ),brew list财务报告和审定财务报表brew outdated(公式和水缸);用它离开视图仍然读取捆绑并保持同步。 阅读自己从不写作——面板安装一无所有——两个手势写作. 第一个 预览器..,在 Homebrew 区域的标题中: 它打开了一个模式,命名它将要运行的命令——brew update, (中文(简体) ),brew upgrade --formula,然后一个brew upgrade --cask --greedy <token>每个桶,都写出它所不做的事,只在确认后运行。 磁盘上的捆绑比公布的食谱更新颖的桶被从计划外省出并取出名来,因为取而代之会使捆绑向后走;没有桶被重新安装,也没有被降级. 步骤按部就班,每个步骤都得到判决:update失败会阻止升级,而不是让他们在被打烂的水龙头上工作;失败的升级不会阻止下一个水龙头。 每一个酿酒呼叫都会用它的stdin闭合和有界限的超时来运行,因此一个需要管理员密码的水缸——Cloudflare WARP,为一号——在自己的一行失败了,而不是在隐形的提示上冻结整个手势. 面板从不要求该密码:收件名称是失败的命令并给出复制,因此水缸在终端完成. 模式在收货时结束——每步一行有期限,它所写的输出结束,之后仍然过时的东西——整个手势是一行homebrew/synchroniser输入日记。 第二个手势是取出——现在可以取出一捆:倒行尾的"被取出"和"被取出"的"被取出"("Supprimer.")在抽屉中打开同样的模式,它首先说明将要走的. 它显示了捆绑,块对应用程序的数据属性(caches, HTTP 存储, 容器, 应用程序脚本, 日志, 保存状态, 以及~/Library/Application Support/<name>当一个文件夹以应用程序命名时——这些行被标记为“refnu par le nom ” , 首选列表、每个组一个复选框、每行大小、目的地和面板不会触及的三件事:共享组容器、您的个人文件夹和/Library/Application Support。捆绑和检查的条目将转到 废物 通过Finder,可以将它们带回,直到回收站被清空;macOS在第一次移除时请求自动化许可,拒绝则会停止手势而不是倒回rm取出一个土人水缸brew uninstall --cask,它把捆绑和库房 在同一动作。 应用程序运行时没有被删除:模式名称为PID并关闭其按钮直到应用程序退出. 两个案件继续结案——一个捆绑的macOS拥有(A/Applications系统链接)和捆绑包收件报销(pkgutil --file-info名称pkgid)),因为取出捆绑会留下收据,它的守护进程和帮助者会被放倒,管理简介会将应用程序放回下一次的入帐. 每次删除都写在日记上apps/supprimer,带有元素,大小和目的地. - Kubernetes \上下文e ——页眉带取上下文器:它列出上下文
kubectl在机器上声明外加一个跟随当前上下文的自动条目,并将选择直接写入k8sContext旁边是 a 资源 窗口列出部署、吊舱、工作、状态集、守护进程、 cronjob 和无约束卷,并附有每个名称的空间过滤和补救手势. - 库伯内特斯 克兰 ——集群读作工作地,不是目录. 有条横幅用一句话(多少个吊舱运行,多少个节点,多少个秘密被卡住,一个服务是否下降)来表示集群;有六个头条数字; • 特性 将因故而退化的东西——每个原因一张卡,携带其证据、其范围和所触及的命名空间; (原始内容存档于2018-09-21) (英语). Ou ournevisimei 绘制机器 → 节点 → 四个域( Applicatif, Données, Observatorbilité, Plateforme) → HTTP 条目,每个吊舱一个点 命名空间 表格将工作量、吊舱、重新启动、秘密和每个命名空间的状态合并在一起; 国家指挥中心 将保留与可表达性相比较; 混成剂 检查上下文、集装箱运行时间、Kubectl、入侵、CoreDNS、计量服务器和外部机密; 活动中心 重述最后24小时的句子; 鸡尾酒 解释每个数字并打开一个12个任期的词汇表。 一个取名空间打开了抽屉(什么可以观看,吊舱,工作量,Azure秘密,网络),一个原因打开了它的解释. 每个数字都是从Kubernetes读取的;一个没有来源的数字是这么说的,而不是显示零.
- 空块隐藏自己 - 仓库块消失时
projectsRoot不存在,则分组部分kubectl不存在, 应用程序选项卡除了macOS。 他们自己回来.
小组在开放、窗口焦点和每60秒可见的情况下进行更新——没有背景投票。 最后一个快照被缓存到 localStorage {\fn黑体\fs20\shad2\2ah82\3ah20\4ah33\fscx95\3ch592001\be1}然后立刻在下一个空地上画画.
/systeme/api/etat 总是用最新的快照(Stale-while-revalidate)来回答,并在背景中重建,因此面板从来不会挡住慢探测器. 每15秒最多重建一个快照,每节缓存为昂贵的部分(存储器3分,拉取请求60分,运行时间90分,集群20分,应用程序60分,机器和Colima磁盘15分). 拉动请求被读取 gh pr list 何时 gh 已安装和认证;没有它,栏就保留在"-",其余的视图仍然保留. ?refresh=1 强制进行修复后的重建.
空闲空间模式读取 GET /systeme/api/disque 当它打开.. docker system df, 科利马文件系统, 以及大小 node_modules 和30天内没有承诺的储存库的人工文件夹。 读取需要十秒多docker system df 单靠一个完整的多克商店就花费了大约7个成本),所以模式等待在取名于它的装货机上:"旋转器","Analysis des Cibles...",它开始的时间和它测量的三个家庭,与 aria-busy 在对话框上; 装入器在读取降落后立即行走, 而一个错误取去平坦的横幅 . Fermer,闭合按钮和上覆部分会一直持续——分析是读取,没有可锁定的.
机器风景也暴露了 GET /systeme/api/cpu?fenetre=1h|6h|24h:存储的CPU历史在所请求的窗口上缩小到大约120个点,每个点携带它的平均值,峰值和加入多少样本,加上窗口的当前,最小,平均和最大值以及被读取的文件路径. 任何其他 fenetre 倒计时 1h。文件由面板本身的采样人编写——一个 {"at","cpu"} 每行60 s, 从面板开始时开始, 以及标签是否打开—— 当加载时重新写出, 而不需要过期的行; 快照本身不再带有 CPU 历史 .
应用程序视图也会曝光 /systeme/api/app?name=<bundle>,它返回标识符,两侧的版本,签名,架构,大小和隔离 一个捆绑,它的子捆绑,两个命令面板运行,以及一个防止名称离开扫描文件夹的守护符:名称是针对上一张快照解决的,决不针对磁盘,以及一个可选的 path 选择两个同名的捆绑之一。 快照被重新使用,所以抽屉需要几分钱 plutil 财务报告和审定财务报表 codesign 电话和从来没有 brew 电话.
应用程序视图也会曝光 GET /systeme/api/app/footprint?name=<bundle>&path=<path>,删除目录:捆绑、数据和配置面板属性——每行都有其大小 nom 标记一个以应用程序命名的文件夹——共享的分组容器和它不会触及的全系统文件夹,应用程序是否运行,以及是否拒绝删除(system 对于捆绑的macOS自有, pkg 包件收据报销单 pkgid ”)). 它只读,成本一 du,一个 pkgutil 和一个 pgrep。删除本身是 POST /systeme/api/action 与 {famille: 'apps', action: 'supprimer', name, path, data, config, confirm: true}: 服务器重算存货, 并且从不从客户端走路径, 对运行中的应用程序回答 409 , 对被拒绝的捆绑或未获得自动化许可的 Finder 回答 422 , 返回日记项加 a receipt (元素,字节,查找者是什么 brew 留下的东西.
应用程序视图曝光 GET /systeme/api/homebrew/plan,作为面板运行的同步计划:已过时的公式和水缸符号,将水缸与捆绑和食谱版本放在一起,命令顺序有序. 不费钱 brew 它读取了快照 手势本身就是 POST /systeme/api/action 与 {famille: 'homebrew', action: 'synchroniser', confirm: true}:服务器从自己的快照重建计划,从不从客户端取出一个令牌,当没有升级时回答409,并返回日记条目加一 receipt (计划,每步一个带有持续时间和输出尾声的判断,从未跑过的步骤,以及重新读取后留下的数).
库视图也暴露 /systeme/api/depot?name=<repository>,它返回最后四个承诺,原始 git status --porcelain=v2 --branch 输出和一个寄存器的隐藏; 名称仅限于直接子 projectsRoot。 。 。 .
配置
插件在其上配置 cordis.patch.yml 条目,从软件包带来的页面 插件 – Système。保存页面将数值写入配置图补丁(下面的YAML),因此配置保留在配置图自己的文件中.
页面分为四节: 总经理 首先,用面板刷新 cadence,然后 德语, (中文(简体) ), 库伯涅斯 财务报告和审定财务报表 应用程序. 应用程序部分只在 macOS 上显示;其第一个开关隐藏了分页,第二个询问Homebrew(没有它捆绑读取仍然运行). 取上下文者坐落在Kubernetes视图的页眉: 它列出了上下文 kubectl 在机器上声明,加上一个自动条目,即默认,它遵循当前上下文,并将选择直接写到 k8sContext。分组检查询问其版本的上下文,不假设该分组的风味。 后两部每部开出一个隐藏相匹配标签的开关——开关只改变面板显示的内容,藏品在背景中不断运行,所以再次开机时视图会随其当前值而回.
| 密钥 | 默认 | 含义 |
|---|---|---|
projectsRoot | ~/projects | 持有要监视的 git 寄存器目录 |
showRepos | true | 显示 Dépôts 标签 |
k8sContext | '' | 观看 kubectl 上下文,在机器检测到的上下文中从面板的Kubernetes卡中选择;空的跟随当前上下文 |
showK8s | true | 显示 Kubernetes 段落 |
showApps | true | 显示应用程序标签( 只有macOS) |
showBrew | true | 询问Homebrew何时读取应用程序标签.. brew --version, (中文(简体) ), brew list, (中文(简体) ), brew outdated; 将标签限制为捆绑 |
costLedger | ~/.dsh/storages/cost-meter/ledger.json | 编剧: dsh-cost-meter (单位:千美元)days.<YYYY-MM-DD>.cost, (中文(简体) ), .calls, (中文(简体) ), config.currency编号 :config.symbol; 空隐藏成本行. 未显示在页面上 —— 只有在分类账生活在别处时才会在YAML中覆盖它 |
refreshSeconds | 60 | 面板刷新 Cadence, 以秒计, 夹住在 15 财务报告和审定财务报表 900 |
- insert:
- id: systeme
name: '@daedalforge/dsh-monitor'
config:
refreshSeconds: 60
projectsRoot: '~/projects'
showRepos: true
k8sContext: ''
showK8s: true
一个空域清除了它的密钥,回到了计划默认状态. 小组如下: refreshSeconds 和两个不重新启动的卡开关:它们是可变值,在状态的每个构造上读取.
阈值从面板上编辑并存储在 ~/.dsh/storages/dsh-monitor/config.json数字 :
| 措施 | 请注意 | 警报 |
|---|---|---|
| 免费磁盘( 主机和 Colima VM) | < 20% | < 10% |
| 使用的内存 | > 80% | > 90% |
| 装入 | > 1× 个核心 | > 2× 个核心 |
| 电池 | < 20% | < 10% |
| 肮脏的仓库 | > 3天时间 | > 7天时间 |
| Pod 重新启动 | > 2 | > 5 号 |
日刊: ~/.dsh/storages/dsh-monitor/journal.jsonl最后的Kubernetes声明: ~/.dsh/storages/dsh-monitor/k8s-last.json。CPU历史 : ~/.dsh/storages/dsh-monitor/cpu.jsonl每60 s 和24 h 保留一个样本.
补救
每项行动都需要确认指定目标和所测量的影响。 没有东西会跑 confirm: true;结果写入了日记并刷新了面板.
| 家属 | 行动 |
|---|---|
| 进程 | SIGTERM 然后SIGKILLLL在 5 s — PID 1, 系统进程, DSH 主机和容器运行时间受到保护 |
| DSH 数字 | 停止当前会话的工作, 为空 ~/.dsh/cache |
| 磁盘 | 没有卷数 DSH 缓存, node_modules 在30天内无犯罪记录的存放者, dist/build/.next/target 这些储存库的文物——从未有被跟踪的文件 |
| 库伯涅斯 | rollout restart 配置, 删除一个吊舱, 清除一个完成的工作 |
从未移除过多克体积,没有读取秘密,没有执行git写作,没有自动补救运行.
先决条件
- 深搜索策略
>=0.2.1-rc.5 <0.3.0-0范围engines.dsh,因此外部主机拒绝插件,而不是装入从未测试过的面板. - 应用程序自有"节点跑时","20"或"后". 没有其他装置可供面板工作.
- macOS 或 Linux. (原始内容存档于2018-09-29). 不支持 Windows : 打开机器收藏器分支
process.platform并读作procfs. - 可选工具. 每个都使面板有一个部分;没有它,该部分被隐藏或读取
—,从不错误 :
| 工具 | 没有它 |
|---|---|
gh,认证 | 拉动请求栏显示 — |
kubectl附加时 docker 或者说 colima附加时 kind | 页:1 Kubernetes 选项卡已隐藏 |
git,在 projectsRoot | 页:1 Dépôts 选项卡已隐藏 |
- 不需要配置文件 : 默认( N)
~/projects,一个60个刷新,仅当地同源请求)仍然适用.
安装
dsh plugin --profile desktop add @daedalforge/dsh-monitor
完全重新启动应用程序(CmdQQ)——客户端重新加载不会取回新的服务器路由.
从柏油球或取出:
dsh plugin --profile desktop add file:/path/to/daedalforge-dsh-monitor-<version>.tgz
卸载 :
dsh plugin --profile desktop remove @daedalforge/dsh-monitor
下方的文件 ~/.dsh/storages/dsh-monitor/ 留在原地;如果想要干净的表格,用手删除.
建筑
lib/index.js——服务器方面:收藏家,阈值,动作,日记. 路线/systeme/api/etat, (中文(简体) ),/systeme/api/disque, (中文(简体) ),/systeme/api/action, (中文(简体) ),/systeme/api/journal, (中文(简体) ),/systeme/api/reglages, (中文(简体) ),/systeme/api/app, (中文(简体) ),/systeme/api/app/footprint, (中文(简体) ),/systeme/api/cpu. 请求必须是本地和同一来源的;其他任何请求都可获得403.lib/apps.js——macOS读取:应用程序文件夹扫描,每个捆绑Info.plist和签名, Homebrew 配方和水缸, 和加入 说一个水缸及其捆绑是否一致。 以一为界brew呼叫批次和每批plutil当Homebrew被关闭时 完全跳过了.lib/k8s.js- 库伯内特人读:生kubectl对象,一个模型出(计数器、容量、原因、命名空间行、地形、组件、活性)。 纯度和单位度测试,因此面板逻辑在没有活集的情况下被验证.lib/client.js——由DSH客户端加载的反应面板——Système,带有Machine, (中文(简体) ),Kubernetes, (中文(简体) ),Dépôts财务报告和审定财务报表Applications视图 - 缩放在下面的样式.dsh-systeme财务报告和审定财务报表.dsh-kube。 。 。 .cordis.patch.yml- 插入systeme输入.
释放
版本从不手工设定. 每一次推动 main 阅读自上次以来的承诺 vX.Y.Z 标记并使用他们要求的信息中最高的凸起:
| 提交自上次标签以来的信件 | 版本 |
|---|---|
一个开头 feat: | 未成年人 -- -- y 加上一个, z 返回到零 |
一载 ! 在结肠之前( a)feat!:, (中文(简体) ), fix!:或一个 BREAKING CHANGE: 页脚 | 重大 -- -- x 加上一个, y 财务报告和审定财务报表 z 返回到零 |
其它东西fix:, (中文(简体) ), chore:, (中文(简体) ), docs:,一个简单的句子) | 补丁 - z 加一个 |
它将这个版本写到 package.json 通过 GitHub API 创建一个承诺,所以 GitHub 将它签名; 标记承诺; 并打开 GitHub 释放。 释放承诺被相同的触发器跳过,所以工作流程从不循环. 还没有标记, 版本坐在 package.json 这是第一次释放.
打开发行是出版内容:第二个工作流程运行在 release: published时,检查标签 package.json进行测试,用出处发布到npm,并将焦油丸附在放出. 因此,在GitHub界面上手工发布发行版同样有效.
发布工作流程写给 main,其中分支规则卫兵带有拉取请求和经核实的签名. 它在一个专用的 GitHub App 下这样做,它的安装标志 它薄荷与 actions/create-github-app-token;该应用坐在两个规则的绕行列表上,所以版本在不削弱规则的情况下,承诺,标记和放行地. 有两个秘密 带有这个身份: APP_ID,以及 APP_PRIVATE_KEY 持有应用程序的私人钥匙。 发行时必须使用该应用符号,而不是使用 GITHUB_TOKEN,或 Publish 工作流程永远不会运行.
信任的出版只给已经存在的软件包添加一个版本;它不能创建软件包. 因此,第一个版本必须由持有npm账户的人来推动,并启用了两个因素的认证——一个安全密钥或认证器应用程序,Npm在浏览器中要求它. 从被标记的承诺:
npm login
npm publish --access public
第一个版本是唯一没有出处的版本. 之后的一切都经过了工作流程,该工作流程通过npm可信赖的出版进行认证:在寄存器中不存储任何令牌,工作流程文件就是证书.
npm trust github @daedalforge/dsh-monitor --repo daedalforge/dsh-monitor --file publish.yml --allow-publish
一旦软件包存在,就运行它。 信任配置生活在软件包内,因此删除软件包也会删除它——包括一个已上演的发布等待时自行创建的占位符npm,并在该上演的发布被拒绝时再次去除.
失败的发布可以从动作标签中重放,以标签作为输入发布.
限制
- 机器测量使用macOS工具(
vm_stat, (中文(简体) ),sysctl, (中文(简体) ),pmset, (中文(简体) ),top或Linux上的 procfs/ sysfs;ps财务报告和审定财务报表df两者均使用。 Kubernetes检查只需要kubectl指向可达上下文:活性是API自己的版本端点,因此不需要本地运行时间和特定的集群味. 在地形学中绘制的运行时间是第一个在PATH(单位:千美元)docker, (中文(简体) ),podman或者说nerdctl,与colima); 组本身从未被面板创建、启动或停止。 插件读取了节点,吊舱,部署,状态套接字,守护进程,工作, cronjobs,取名空间,PVC,服务,入侵和外部机密,再加上警告事件,不需要度量服务器: 预订来自吊舱规格,而不是来自所测量的用法. - 应用程序阅读了macOS和Homebrew曝光的内容. App Store 应用程序超出范围, MDM 驱动的捆绑会像其他捆绑一样被读取——面板不知道管理控制台的版本,从不比一个,它拒绝去掉一个捆绑的软件包收件要求,而不是假装知道哪个控制台拥有它——只有水缸没有明确的内容
version区域——version :latest其他人通过自己的更新器更新. - 面板会读取磁盘,寄存器和已安装的应用程序;它从来不会修改一个被git跟踪的文件,也不会运行一个软件包管理器.
- 停止工作只供本届会议使用.
许可证
麻省理工学院——见 自由主义。 。 。 .