4 月 14 日 北京 |架构即未来作者陈斌: 可扩展性架构设计的 N 个原则
Linux/Unix 系统管理员对服务器的系统运行时间有一种奇怪的痴迷. 这里有一个关于这个主题的 xkcd 漫画, 一个好的系统管理员是一股不可阻挡的力量, 他伫立在你家猫咪博客的服务器之前, 对抗黑暗势力.
Fig.01: Devotion to Duty https://xkcd.com/705/
我们可以使用 uptime 命令或 w 命令 https://www.cyberciti.biz//www.cyberciti.biz/faq/unix-linux-w-command-examples-syntax-usage-2/ 或 top 命令来判断 Linux 系统运行了多久. 我可以使用 tuptime 工具保留每次重新启动的运行时间, 以获得系统运行时间的历史和统计报告 https://www.cyberciti.biz/hardware/howto-see-historical-statistical-uptime-on-linux-server/ .
这就像 uptime 命令一样, 但输出结果更令人印象深刻. 最近我发现了另一种称为 uptimed 的工具, 用于记录关于机器的系统运行时间和统计信息. 让我们看看如何使用 Linux 操作系统上的 uptimed 和 uprecords 来获得运行时间的记录统计信息.
查找系统运行时间非常简单, 只需在基于 Linux 的系统上键入以下命令即可:
$ uptime -p
up 2 weeks, 4 days, 7 hours, 28 minutes
要保留有关 uptime 的历史统计信息, 请使用 tuptime https://www.cyberciti.biz/hardware/howto-see-historical-statistical-uptime-on-linux-server/ 或 uptimed 工具.
安装 uptimed
安装 uptimed 的最简单的方式是通过你的软件包管理器, 比如 apt/apt-get/yum 这些你的 Linux 发行版的朋友.
在 Debian/Ubuntu Linux 上安装 uptimed
键入以下 apt 命令 https://www.cyberciti.biz//www.cyberciti.biz/faq/ubuntu-lts-debian-linux-apt-command-examples$apt-get 命令 https://www.cyberciti.biz//www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html :
$ sudo apt-get install uptimed
示例输出:
- Reading package lists... Done
- Building dependency tree
- Reading state information... Done
- The following additional packages will be installed:
- libuptimed0
- The following NEW packages will be installed:
libuptimed0 uptimed
0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded.
Need to get 40.7 kB of archives.
After this operation, 228 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
- Get:1 http://mirrors.linode.com/ubuntu xenial/universe amd64 libuptimed0 amd64 1:0.3.17-4 [9,050 B]
- Get:2 http://mirrors.linode.com/ubuntu xenial/universe amd64 uptimed amd64 1:0.3.17-4 [31.6 kB]
- Fetched 40.7 kB in 0s (2,738 kB/s)
Preconfiguring packages ...
Selecting previously unselected package libuptimed0.
(Reading database ... 39163 files and directories currently installed.)
Preparing to unpack .../libuptimed0_1:0.3.17-4_amd64.deb ...
Unpacking libuptimed0 (1:0.3.17-4) ...
Selecting previously unselected package uptimed.
Preparing to unpack .../uptimed_1:0.3.17-4_amd64.deb ...
Unpacking uptimed (1:0.3.17-4) ...
Processing triggers for systemd (229-4ubuntu21) ...
Processing triggers for ureadahead (0.100.0-19) ...
Processing triggers for man-db (2.7.5-1) ...
Setting up libuptimed0 (1:0.3.17-4) ...
Setting up uptimed (1:0.3.17-4) ...
Processing triggers for libc-bin (2.23-0ubuntu9) ...
Processing triggers for systemd (229-4ubuntu21) ...
Processing triggers for ureadahead (0.100.0-19) ...
在 CentOS/RHEL/Fedora/Oracle/Scientific Linux 上安装 uptimed
首先 在 CentOS/RHEL 使用 EPEL 仓库 https://www.cyberciti.biz/faq/installing-rhel-epel-repo-on-centos-redhat-7-x/ :
$ sudo yum -y install epel-release
然后, 键入以下 yum 命令 https://www.cyberciti.biz//www.cyberciti.biz/faq/rhel-centos-fedora-linux-yum-command-howto/ :
$ sudo yum install uptimed
示例输出:
- Loaded plugins: fastestmirror
- Loading mirror speeds from cached hostfile
- * base: centos.excellmedia.net
- * epel: ftp.cuhk.edu.hk
- * extras: centos.excellmedia.net
- * updates: centos.excellmedia.net
Resolving Dependencies
--> Running transaction check
---> Package uptimed.x86_64 0:0.4.0-6.el7 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
- ===============================================================================
- Package Arch Version Repository Size
- ===============================================================================
- Installing:
- uptimed x86_64 0.4.0-6.el7 epel 47 k
- Transaction Summary
- ===============================================================================
- Install 1 Package
- Total download size: 47 k
- Installed size: 98 k
- Is this ok [y/d/N]: y
- Downloading packages:
- uptimed-0.4.0-6.el7.x86_64.rpm | 47 kB 00:01
- Running transaction check
- Running transaction test
- Transaction test succeeded
- Running transaction
- Installing : uptimed-0.4.0-6.el7.x86_64 1/1
- Verifying : uptimed-0.4.0-6.el7.x86_64 1/1
- Installed:
- uptimed.x86_64 0:0.4.0-6.el7
- Complete!
如果你正在使用 Fedora Linux, 运行以下 dnf 命令:
$ sudo dnf install uptimed
在 Arch Linux 上安装 uptimed
键入以下 pacman 命令:
$ sudo pacman -S uptimed
在 Gentoo Linux 上安装 uptimed
键入以下 emerge 命令:
$ sudo emerge --ask uptimed
如何配置 uptimed
使用文本编辑器编辑 /etc/uptimed.conf 文件, 例如 vim 命令:
$ sudo vim /etc/uptimed.conf
最少设置一个 email 地址来发送记录. 假定有个兼容 sendmail 的 MTA 安装在 /usr/lib/sendmail.
EMAIL=vivek@server1.cyberciti.biz
保存并关闭文件.
如何在系统启动时启动 uptimed 服务?
使用 systemctl 命令启动 uptimed 服务:
$ sudo systemctl enable uptimed
我该如何 启动 / 停止 / 重启 或者查看 uptimed 服务的状态?
$ sudo systemctl start uptimed ## start it ##
$ sudo systemctl stop uptimed ## stop it ##
$ sudo systemctl restart uptimed ## restart it ##
$ sudo systemctl status uptimed ## view status ##
示例输出:
uptimed.service - uptime record daemon
- Loaded: loaded (/lib/systemd/system/uptimed.service; enabled; vendor preset: enabled)
- Active: active (running) since Thu 2017-11-09 17:49:14 UTC; 18min ago
- Main PID: 11137 (uptimed)
- CGroup: /system.slice/uptimed.service
- 11137 /usr/sbin/uptimed -f
- Nov 09 17:49:14 gfs04 systemd[1]: Started uptime record daemon.
如何查看 uptime 记录
只需键入以下命令即可查看 uptimed(8) 程序的统计信息:
$ uprecords
示例输出:
Fig.02: uprecords in action
uprecords 有一些选项:
$ uprecords -?
示例输出:
usage: uprecords [OPTION]...
-? this help
-a do not print ansi codes
-b sort by boottime
-B reverse sort by boottime
-k sort by sysinfo
-K reverse sort by sysinfo
-d print downtime seen before every uptimes instead of system
-c do not show current entry if not in top entries
-f run continously in a loop
-s do not print extra statistics
-w wide output (more than 80 cols per line)
-i INTERVAL use INTERVAL seconds for loop instead of 5, implies -f
-m COUNT show a maximum of top COUNT entries instead of 10
-M show next milestone
-v version information
结论
这是一个极好的小工具, 可以显示服务器正常运行时间的记录, 以证明机器正常运行时间和你的业务连续性. 在相关说明中, 你可以看到官方的 XKCD 系统管理员 T 恤 https://store.xkcd.com/collections/apparel/products/sysadmin 因为漫画被制作成衬衫, 其中包括背面的新插图.
Fig.03: Sysadmin XKCD shirt features the original comic on the front and a new illustration on the back.
来源: http://os.51cto.com/art/201804/569960.htm