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

6月 02

基于iTop的Kubernetes工作流

当面向很多用户时,Kubernetes 的使用方式是一个需要考虑的问题。如果直接让用户写 yaml,一方面是要求每个用户都学 Kubernetes,这对研发人员来说是一个不必要的负担,另一方面 yaml 的管理以及权限分配对运维人员来说也是一个不必要的负担,平添很多琐事。因此,使用一个管理系统来屏蔽 Kubernetes 细节,管理权限等 … Continue reading

6月 01

容器进程树

使用 Docker 运行程序时,需要注意进程数是否正确,能否正确处理退出信号。本文记录几个我遇到过的案例。 Zabbix进程树错误 容器化 Zabbix 后运行不到1分钟就退出,日志如下。 pstree看到进程树不对: cron.sh用于发报警,发完就退出,不应该是zabbix_server的子进程 需要引入init程序,比如dumb-i … Continue reading

5月 27

删除位置错乱的Google自动广告

Google 自动广告总体感觉挺好,不丑,和网页融合也算比较好。但是因为是自动布局的,也会出现一些不理想的情况,比如把广告插入导航条内部。DokuWiki 出现过这种情况,WordPress 也会出现,特别是手机浏览器打开时。难道是我用的模板有什么不符合规范的地方吗? DokuWiki 的解决方案中,把出现在导航条内部的广告移到外部去了, … Continue reading

5月 27

自动更新Harbor仓库的描述信息

Harbor 镜像仓库可以添加描述信息,像 Docker Hub 那样,浏览镜像仓库,就能大致了解镜像的用途及使用方法。但是手动维护描述信息会很麻烦,更好的方案是直接将代码仓库的 README.md 文件自动更新到描述信息。本文记录了一种在 Drone CI 中通过定制 kaniko 插件来自动更新 Harbor 仓库描述信息的方案。 方 … Continue reading