利用 Gitea Doctor自助诊断工具帮助管理员排查问题
我常常在Gitea论坛或者Hostea为网友解答Gitea版本升级方面的问题,但发现少有人知道利用 gitea doctor 命令行工具排查问题,因此这篇博文将给大家带来通俗易懂的介绍。
- 你知道吗?我们现在已经开通了微信公众号和哔哩哔哩视频栏目,欢迎关注、点赞、一键三连!
- 点击链接加入群聊【Gitea 官方技术群】:328432459
什么是 Doctor?
gitea doctor 是 Gitea 程序自带的一个命令行工具,它可以扫描 Gitea 系统工作状况,诊断出常见的故障。这项功能已经发布超过两年了,我们希望借助它让 Gitea 管理员的运维工作变得更加简单。
注意事项
- 本文基于容器创建的 Gitea 1.17.0 实例进行示范。如果你还没有安装,请参阅文档~
- gitea doctor 兼容相邻的几个 Gitea 版本,跨越多个版本可能会出现意料之外的问题。
- 在 Docker 容器中,Gitea 采用有限权限的 git 账号作为程序运行环境。因此当你进入到容器内操作 gitea doctor 前,你需要为当前终端指定账号名称和工作路径,如下所示:
docker exec -it --user git --workdir=/tmp gitea bash
开始使用 Gitea Doctor
如果你想要完整检查整个系统的工况,请确保至少初始化一个仓库。完成操作后再次执行命令:
$ gitea doctor --all
[1] Check paths and basic configuration
- [I] Configuration File Path: "/data/gitea/conf/app.ini"
- [I] Repository Root Path: "/data/git/repositories"
- [I] Data Root Path: "/data/gitea"
- [I] Custom File Root Path: "/data/gitea"
- [I] Work directory: "/app/gitea"
- [I] Log Root Path: "/data/gitea/log"
OK
[2] Check if there is garbage storage files
OK
[3] Check Database Version
OK
[4] Check consistency of database
OK
[5] Check if user with wrong type exist
OK
[6] Check if OpenSSH authorized_keys file is up-to-date
OK
[7] Check if SCRIPT_TYPE is available
- [I] ScriptType bash is on the current PATH at /bin/bash
OK
[8] Check if hook files are up-to-date and executable
OK
[9] Recalculate Stars number for all user
- [I] No check available for User Stars numbers (skipped)
OK
[10] Check old archives
- [I] 0 old archives in repository need to be deleted
OK
[11] Check that all git repositories have receive.advertisePushOptions set to true
- [I] Checked 1 repositories, 0 need updates.
OK
[12] Check for incorrectly dumped repo_units (See #16961)
- [I] Found no broken repo_units
OK
[13] Recalculate merge bases
- [I] All 0 PRs in 1 repos have a correct mergebase
OK
[14] Check git-daemon-export-ok files
- [I] Checked 1 repositories, 0 need updates.
OK
[15] Check if users has an valid email address
- [I] All users have a valid e-mail.
OK
检查结果看起来一切正常,这很好!
Doctor 还可以干什么?
如果把 doctor 类比为 fsck (一款知名的文件系统检查工具),我们可以在不影响软件系统正常工作的情况下进行一些更细致和精确的诊断。打开终端,使用 gitea doctor --list 可以列出所有可用的常规诊断方法:
$ gitea doctor --list
Default Name Title
* paths Check paths and basic configuration
storages Check if there is garbage storage files
* check-db-version Check Database Version
check-db-consistency Check consistency of database
* check-user-type Check if user with wrong type exist
* authorized-keys Check if OpenSSH authorized_keys file is up-to-date
script-type Check if SCRIPT_TYPE is available
hooks Check if hook files are up-to-date and executable
recalculate-stars-number Recalculate Stars number for all user
check-old-archives Check old archives
enable-push-options Check that all git repositories have receive.advertisePushOptions set to true
fix-broken-repo-units Check for incorrectly dumped repo_units (See #16961)
recalculate-merge-bases Recalculate merge bases
check-git-daemon-export-ok Check git-daemon-export-ok files
check-user-email Check if users has an valid email address
例如,我们想检查 OpenSSH 的 authorized_keys 文件是否是最新的,可以运行:
$ gitea doctor --run authorized-keys
[1] Check if OpenSSH authorized_keys file is up-to-date
OK
以上便是,doctor目前可用的全部功能。如果你还想了解它是如何工作的,可以直接切入源码本身,doctor.go 是命令入口点,doctor 目录包含每一项检查的细节,如果你还发现了新的问题解决方法欢迎提交PR。
遇到问题时别担心,即便你不知道如何编写Go程序,我们也欢迎你加入我们的社区一起讨论。
- 中文QQ群:328432459
- GitHub Issues(英语,汇聚了世界各地的项目维护者):https://github.com/go-gitea/gitea/issues>
- 官方论坛(支持中文):https://discourse.gitea.io/c/5-category/5
检查过程不会影响软件工作
Doctor 可以检查系统完整性,并且丝毫不影响正在运行的 Gitea 服务,它会给出以下两种提示:
- [I] 表示 Information,只是一些常规的信息提醒,可以忽略
- [W] 表示 Warning,是一些值得注意的问题,但是并不严重
我们可以举个形象的例子,例如首先人为造成破坏,从我们的存储库中删除 hooks 的可执行权限:
chmod -x /data/git/repositories/user/test.git/hooks/post-receive
此时运行 gitea doctor --run hooks,应该会发现问题:
$ gitea doctor --run hooks
[1] Check if hook files are up-to-date and executable
- [W] old hook file /data/git/repositories/user/test.git/hooks/post-receive is not executable
修复问题,使用 gitea doctor --run hooks --fix:
$ gitea doctor --run hooks --fix
[1] Check if hook files are up-to-date and executable
- [W] Regenerated hooks for user/test
- [W] old hook file /data/git/repositories/user/test.git/hooks/post-receive is not executable
再次检查:
$ docker exec gitea gitea doctor --run hooks
[1] Check if hook files are up-to-date and executable
OK
以上操作足够修复简单的问题。如果故障仍未解决,我们还可以检查当前工作目录下生成的doctor.log 日志,获得更充足的情报。使用 --log-file - 可以方便地将日志打印到控制台,例如:
gitea doctor --log-file -
更进一步
如果这对您有帮助,欢迎留言评论,通过 Mastodon 可以联系到原作者 dachary。如果你有更好的想法:你可以进入我们的 GitHub 仓库发送一个PR请求来帮助改善 gitea doctor。
利用 Gitea Doctor自助诊断工具帮助管理员排查问题的更多相关文章
- Java诊断利器Arthas优雅排查生产环境
前言 Arthas 是Alibaba开源的Java诊断工具.在线排查问题,无需重启:动态跟踪Java代码:实时监控JVM状态.对分秒必争的线上异常,Arthas可帮助我们快速诊断相关问题. 下载安装 ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace
DTrace的原理本系列文章详细地介绍了一个 Linux 下的全新的调式.诊断和性能测量工具 Systemtap 和它所依赖的基础 kprobe 以及促使开发该工具的先驱 DTrace 并给出实际使用 ...
- (转)权威支持: 选择正确的 WebSphere 诊断工具
权威支持: 选择正确的 WebSphere 诊断工具 原文:https://www.ibm.com/developerworks/cn/websphere/techjournal/0807_supau ...
- ping(网络诊断工具)
ping(网络诊断工具) Ping是Windows下的一个命令,在Unix和Linux下也有这个命令.ping也属于一个通信协议,是TCP/IP协议的一部分.利用"ping"命令可 ...
- 自助BI工具:Tableau和Smartbi的对比(上)
商业智能(BI)和分析平台长期以来一直是商业的重要组成部分,但由于自助BI工具的兴起,在数据科学家和数据库管理员的支持下,分析的责任已经从IT转移到了商业分析师身上. 因此,BI已经从生成月度报告的记 ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap
Systemtap的原理,Systemtap与DTrace比较,以及安装要求和安装步骤本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprob ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg
生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序 ...
- 阿里云Logtail 快速诊断工具
当日志采集发生异常时,您可以通过Logtail自助检测工具查看客户端是否存在异常情况,根据工具提示快速定位并解决问题. 说明 本工具目前仅支持Linux系统的服务器. 准备工作 下载检测工具脚本. ...
随机推荐
- RPA应用场景-营业收入核对
场景概述营业收入核对 所涉系统名称 SAP ,Excel,门店业务系统 人工操作(时间/次) 4 小时 所涉人工数量 6 操作频率每日 场景流程 1.每日13点起进入SAP查询前一日营业收入记账情况: ...
- archlinux-小米pro15_2020款使用archlinux(MX350显卡驱动安装)
1.官网下载archlinux ISO镜像 https://archlinux.org/download/ 使用磁力链接下载 2.使用软碟通将镜像写入U盘,制作成U盘启动盘 3.进入BIOS 关掉 ...
- colab运行.py文件
!python split_data.py
- 自建批量更改标准BO数据程序
by zyi
- [零基础学IoT Pwn] 复现Netgear WNAP320 RCE
[零基础学IoT Pwn] 复现Netgear WNAP320 RCE 0x00 前言: 这是[零基础学IoT Pwn]的第二篇,上篇我们搭好了仿真环境后,模拟运行了Netgear WNAP320固件 ...
- NC207040 丢手绢
NC207040 丢手绢 题目 题目描述 "丢丢丢手绢,轻轻地放在小朋友的后面,大家不要告诉她,快点快点抓住她,快点快点抓住她." 牛客幼儿园的小朋友们围成了一个圆圈准备玩丢手绢的 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
在日常生活中,邮件已经被聊天软件.短信等更便捷的信息传送方式代替.但在日常工作中,我们的重要的信息通知等非常有必要去归档追溯,那么邮件就是不可或缺的信息传送渠道.对于我们工作中经常用到的系统,里面 ...
- File类获取功能的方法和File类判断功能的方法
File类获取功能的方法-public String getAbsolutePath() :返回此file的绝对路径名字符串 -public String getPath() :将此File转换为路径 ...
- 笔记本USB接口案例分析和是实现
笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能.在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以 ...
- 正睿七连测 DAY5 T2
题是水题,也不难想,本来是想打暴力先过个小数据, 本来就想再搞搞优化试试能不能过,毕竟这个题理论上 O( $n^2$ ) 是能过的 题干 主要是觉得这个优化很有可取之处,本来超时,一加这个优化就好很多 ...