6月 23

【树莓派笔记】磁盘读写速度测试

在树莓派 4B 上跑一个 PHP + MySQL 的程序,安装过程需要创建数据库并写入 demo 数据,更新数据库这一步总是遇到 504 Gateway Timeout 错误,一开始怀疑是脚本执行时间不够,将 max_execution_time 参数调整到 300,依然 504。后续又折腾了 Nginx 的 fastcgi 相关参数,依 … Continue reading

6月 22

如何删除隐藏在挂载点下的文件

树莓派4B 的根目录空间满了。一个原因是 TF 卡太小了,只有 16G ,装了个 texlive 就要用掉大概 4G 左右,可能该换个 32G 的 TF 卡了。 排查 挂载点 一开始忘记了检查 /tmp,只看到 /usr/,/var 占空间比较大,但是加起来也只有 8G,不至于占满空间,因此想到可能是挂载点文件夹在挂载之前就有文件?但是挂 … Continue reading

6月 19

【树莓派笔记】温度与风扇转速

树莓派 4B 性能相比前一代提高了不少,同时发热也更多了。有必要使用风扇。但是风扇全速转动时声音还是不小的,如果放在卧室会影响睡眠。 温度监控 获取 CPU 温度:cat /sys/class/thermal/thermal_zone0/temp,获取 GPU 温度:vcgencmd measure_temp。使用 Gnuplot 绘图, … Continue reading

6月 18

Zabbix自动添加端口进程监控

添加端口和进程的监控,一种方案是可以通过模板来定义一组机器需要监控的端口和进程,优点是方案简单且监控准确,缺点是需要维护多套模板,比较适合小规模的团队。当监控规模较大时,需要考虑一种支持自助修改监控项的方案。本文记录一种通过自动发现(Low-Level Discovery)功能来实现自动添加端口进程监控以及支持自助修改的方案。 概述 Za … Continue reading

6月 13

Zabbix自动删除下线机器的监控

由于 Zabbix 自动注册没有删除机制(例如以主机名为规则注册,当服务器主机名变更时,会再次注册,并不删除原主机名的监控),导致有重复项。另外机器下线也需要删除服务器的监控。本文记录一种基于 iTop CMDB 和 Zabbix 接口自动审计 Zabbix 监控服务器的方案。 概述 使用 PHP 语言写脚本,并使用以下 SDK。 脚本使 … Continue reading

6月 12

Linux如何准确获取登录用户名

在文章 登录时显示服务器信息 中,有这样一个需求,/etc/profile.d 中的一个脚本,只在用户登录时执行一次,用户使用 sudo 或者 su 切换到其他用户时不执行。所以需要判断用户是否有变化。文章给出的方案如以下代码。 即判断 who am i 和 who 的结果是否一致,不一致则认为切换过用户,不执行 cat /etc/log … Continue reading

6月 11

使用Zabbix采集服务器基础信息

CMDB 建设中一个比较重要的方面是保证数据的及时更新以及准确性,靠人工肯定是很难做到的,必须通过技术手段用自动化的方式去做。本文记录一种通过 Zabbix inventory 来审计和更新 iTop CMDB 中服务器基础信息的方案。 概述 大致流程如下: 服务器基础信息的采集,通过 Zabbix 的自定义 Key 功能来实现。 服务器 … Continue reading

6月 10

登录时显示服务器信息

/etc/motd 里可以设置登录 Linux 服务器时显示的信息,但是只能显示静态信息,如果需要动态信息,可以通过 /etc/profile.d/ 下的脚本来实现。本文记录一种通过脚本调用 CMDB 接口获取服务器的业务,机房,状态以及联系人信息,在登录时显示的方法。效果如下图。 CMDB接口规格 为简化 Shell 脚本的调用,CMD … Continue reading

6月 06

Kubernetes节点维护脚本

Kubernetes Node 节点上,可能有一些基于 docker 命令的维护需求,可以通过脚本调用 docker inspect 等获取到更易读的信息。 列出所有业务容器 docker ps 列出的容器名称很长,不容易看出是哪个业务。通过 docker inspect,将获取到的容器输出为以下格式: 查看业务容器日志 查看容器TCP状 … Continue reading

6月 04

DokuWiki容器化实践

DokuWiki 使用 Docker 做容器化,主要解决以下问题。 插件和模板的安装 插件和模板的默认配置和配置文件的传递 持久化存储 插件模板安装 使用容器之后就不能在使用插件管理器来安装插件了,否则容器重启后插件将丢失。需要将插件代码打包到镜像里。基本思路是使用多段构建,在 builder 过程中下载并解压插件和模板代码,然后复制到运 … Continue reading