多种工具协同创建一个基于CentOS,包含最新版本sysstat的镜像

服务器上部署了sysstat,通过sar可以保留系统监控记录,从服务器下载数据在别处分析时,不是很方便,因此考虑构建一个方便使用的Docker镜像辅助工作。

sysstat: https://github.com/sysstat/sysstat

1. Bing AI 创建 Dockerfile

直接让 AI 帮忙写 Dockerfile

内容复制如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 基于CentOS7镜像
FROM centos:7

# 安装git和编译工具
RUN yum install -y git gcc make

# 通过git克隆sysstat仓库
RUN git clone https://github.com/sysstat/sysstat.git

# 进入sysstat目录,编译并安装
WORKDIR /sysstat
RUN ./configure && make && make install

# 清理缓存数据和源码
RUN yum clean all && rm -rf /sysstat

创建完成后在我本地构建过程中,git clone 下载不了,换一种方式构建。

2. GitHub Codespaces

2.1 打开 sysstat 的页面,创建一个运行环境

2.2 检查一下是否支持 docker 环境

1
2
@abel533 ➜ /workspaces/sysstat (master) $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

2.3 创建 Dockerfile

没有问题,从左侧资源管理器创建 Dockerfile,输入上面的内容。

为了方便我本地使用,把CentOS镜像版本从7改成了具体的7.6.1810

2.4 执行命令构建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@abel533 ➜ /workspaces/sysstat (master) $ docker build -t sysstat:23-0323 .
[+] Building 79.1s (11/11) FINISHED
=> [internal] load build definition from Dockerfile 0.5s
=> => transferring dockerfile: 398B 0.0s
=> [internal] load .dockerignore 0.4s
=> => transferring context: 2B 0.1s
=> [internal] load metadata for docker.io/library/centos:7.6.1810 3.0s
=> [auth] library/centos:pull token for registry-1.docker.io 0.0s
=> [1/6] FROM docker.io/library/centos:7.6.1810@sha256:62d9e1c2daa91166139b51577fe4f4f6b4cc41a3a2c7fc36bd895e2a17a3e4e6 4.9s
=> => resolve docker.io/library/centos:7.6.1810@sha256:62d9e1c2daa91166139b51577fe4f4f6b4cc41a3a2c7fc36bd895e2a17a3e4e6 0.1s
=> => sha256:62d9e1c2daa91166139b51577fe4f4f6b4cc41a3a2c7fc36bd895e2a17a3e4e6 534B / 534B 0.0s
=> => sha256:747b2de199b6197a26eb1a24d69740d25483995842b2d2f75824095e9d1d19eb 529B / 529B 0.0s
=> => sha256:f1cb7c7d58b73eac859c395882eec49d50651244e342cd6c68a5c7809785f427 2.18kB / 2.18kB 0.0s
=> => sha256:ac9208207adaac3a48e54a4dc6b49c69e78c3072d2b3add7efdabf814db2133b 75.16MB / 75.16MB 0.9s
=> => extracting sha256:ac9208207adaac3a48e54a4dc6b49c69e78c3072d2b3add7efdabf814db2133b 3.0s
=> [2/6] RUN yum install -y git gcc make 46.6s
=> [3/6] RUN git clone https://github.com/sysstat/sysstat.git 3.7s
=> [4/6] WORKDIR /sysstat 0.3s
=> [5/6] RUN ./configure && make && make install 13.0s
=> [6/6] RUN yum clean all && rm -rf /sysstat 1.5s
=> exporting to image 5.2s
=> => exporting layers 5.2s
=> => writing image sha256:03d82c85a1f5df4f21558e8d43a9632a1119b6a4d52456ed3139bf76fb72c349 0.0s
=> => naming to docker.io/library/sysstat:23-0323

2.5 运行镜像验证一下功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@abel533 ➜ /workspaces/sysstat (master) $ docker run -it --rm sysstat:23-0323 /bin/bash
[root@38451f6af593 sysstat]# sar 1 10
Linux 5.4.0-1104-azure (38451f6af593) 03/23/23 _x86_64_ (2 CPU)

02:17:43 CPU %user %nice %system %iowait %steal %idle
02:17:44 all 3.54 0.00 5.05 0.00 0.00 91.41
02:17:45 all 0.51 0.00 1.02 0.00 0.00 98.47
02:17:46 all 1.51 0.00 4.02 0.50 0.00 93.97
02:17:47 all 7.69 0.00 6.67 0.00 0.00 85.64
02:17:48 all 16.24 0.00 6.09 0.00 0.00 77.66
02:17:49 all 3.54 0.00 2.02 0.00 0.00 94.44
02:17:50 all 2.02 0.00 3.03 0.00 0.00 94.95
02:17:51 all 1.02 0.00 1.02 0.00 0.00 97.97
02:17:52 all 2.54 0.00 3.55 0.00 0.00 93.91
02:17:53 all 2.01 0.00 2.51 0.00 0.00 95.48
Average: all 4.05 0.00 3.50 0.05 0.00 92.40

2.6 推送镜像

在DockerHub创建一个公开的镜像,重新命名tag:

1
docker tag sysstat:23-0323 abel533/sysstat:23.03.23

登录Docker

1
docker login -u用户名 -p密码

推送镜像

1
2
3
4
5
6
7
8
9
@abel533 ➜ /workspaces/sysstat (master) $ docker push abel533/sysstat:23.03.23
The push refers to repository [docker.io/abel533/sysstat]
68867ac04a78: Pushed
574e22f85afb: Pushed
5f70bf18a086: Pushed
b5e26a4e7785: Pushed
6a7f717fb326: Pushed
89169d87dbe2: Pushed
23.03.23: digest: sha256:e5fdcb8c11f34a43e96e25ffef4572cc71113a47691980655f47871ef981346d size: 1581

至此完成了一个最新版本的 sysstat 镜像。

3. 镜像地址

如果有需要,你可以直接下载该镜像使用:

https://hub.docker.com/r/abel533/sysstat/tags

4. 特别注意

在Windows上使用时,如果挂载本地目录到容器使用时,WSL2 在容器和宿主机操作文件非常的慢(几乎没有反应),建议把文件拷到容器其他目录进行操作,输出到容器目录(速度特别快),然后在拷贝到挂载的本地目录中。

想要将sar导出为svg图表时,可以参考下面的命令使用:

1
2
3
4
5
6
7
# 设置起止时间
sadf -s 8:30:00 -e 17:30:00 -t -g sa27 -- -A > sa27.svg

# 不设置时间
sadf -t -g sa27 -- -A > sa27.svg

# 不同系统的时间不一样,如果使用 -t 起至时间不是0时,可以改成 -T 试试

产生的图表示例如下:

上面 -- -A 包含了所有的监控数据,上图有缩放,下图是一个没缩放的系统负载图:


多种工具协同创建一个基于CentOS,包含最新版本sysstat的镜像
https://blog.mybatis.io/post/d35b8388.html
作者
Liuzh
发布于
2023年4月28日
许可协议