运维面试问题
一、 网络基础
- 请简述 OSI 七层网络模型有哪些层及各自的含义?
参考答案:
- 物理层:底层数据传输,比如网线、网卡标准。
- 数据链路层:定义数据的基本格式、如何传输、如何标识,比如网卡 MAC 地址。
- 网络层:定义 IP 编码和路由功能,比如不同设备间的数据转发。
- 传输层:端到端传输数据的基本功能,比如 TCP、UDP。
- 会话层:控制应用程序之间的会话能力,比如不同软件的数据分发。
- 表示层:数据格式标识,基本压缩、加密功能。
- 应用层:各种应用软件,包括 Web 应用。
- 简述 DNS 进行域名解析的过程?
参考答案:
DNS 解析分为迭代查询(返回最优结果)和递归查询(本地找 DNS)。用户要访问 www.baidu.com:
-
先查找本机 hosts 文件;
-
再找本地设置的 DNS 服务器,如果也没有找到,就去网络中找根服务器;
-
根服务器反馈只能提供一级域名服务器
.cn,就去找一级域名服务器; -
一级域名服务器说只能提供二级域名服务器
.com.cn,就去找二级域名服务器; -
二级域名服务器只能提供三级域名服务器
.baidu.com.cn,就去找三级域名服务器; -
三级域名服务器正好有 www.baidu.com,返回给请求的服务器,保存一份缓存之后再发给客户端。
-
什么是正向代理?
参考答案:
正向代理是位于客户端和原始服务器之间的服务器。客户端向代理发送请求并指定目标(原始服务器),代理向原始服务器转交请求并将结果返回给客户端。
一句话总结:正向代理代理的是客户端。例如 OpenVPN 等场景。
- 什么是反向代理?
参考答案:
反向代理是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将结果返回给请求的客户端,此时代理服务器对外表现为一个反向代理服务器。
一句话总结:反向代理代理的是服务端。
- a 与 b 服务器不在同一网段怎么设置?设置完还 ping 不通怎么排查?
参考答案:
- 首先把不同 IP 段的服务器划分给不同的 VLAN;
- 通过三层交换机添加虚拟 IP 路由,实现不同网段 VLAN 的互通。
设置完 ping 不通时排查:检查交换机路由配置是否正确、各设备网关是否配置正确、防火墙/SELinux 是否放行、物理链路是否正常。
- 在 A、B 两台服务器之间通过一台服务器 C 做软路由,如何配置?
参考答案:
C 服务器配置两块网卡并开启路由转发功能:
# 网卡 1IP=10.0.0.11网关=10.0.0.254
# 网卡 2IP=10.0.1.11网关=10.0.1.254
# 重启网卡生效,查看路由systemctl restart networkroute -n
# 开启 IP 转发vi /etc/sysctl.confnet.ipv4.ip_forward = 1sysctl -pA 服务器设置:
子网掩码:255.255.255.0IP=10.0.0.1网关=10.0.0.254# 重启网卡生效route -n# 添加对应路由route add -net 10.0.1.0/24 gw 10.0.0.11B 服务器设置:
IP=10.0.1.10网关=10.0.1.254# 重启网卡生效route -n# 添加对应路由route add -net 10.0.0.0/24 gw 10.0.1.11- 如果 ping 不通怎么排查?
参考答案:
-
先检查是否网络接口故障(水晶头、网卡接口接触不良);
-
检查交换机和路由器等网络设备是否有故障;
-
检查是否关闭了防火墙和 SELinux 机制;
-
检查网卡、路由和网关是否配置正确。
-
如果一台办公室内主机无法上网(打不开网站),给出你的排查步骤?
参考答案:
-
首先确定物理链路是否连通正常;
-
查看本机 IP、路由、DNS 的设置是否达标;
-
telnet检查服务器的 WEB 服务是否开启以及防火墙是否阻拦; -
ping网关,通了表示能够到达服务器; -
逐级测试到网关、路由器(先网关再路由器一级一级测);
-
测试 ping 公网 IP 的连通情况(记住几个外部 IP);
-
测试 DNS 的通畅(
ping出对应 IP,或nslookup); -
以上检查后仍未解决,再到网关的路由器上检查。
-
端口转发如何配置?
参考答案:
iptables -t nat -A PREROUTING -d 10.0.0.8 -p tcp --dport 80 -j REDIRECT --to-ports 8080- 如何查看 http 的并发请求数与其 TCP 连接状态?
参考答案:
netstat -n | awk '/^tcp/{++b[$NF]}END{for(a in b)print a,b[a]}'二、 Linux 基础与运维命令
- 在 Linux 的 LVM 分区格式下,请简述给根分区磁盘扩容的步骤?
参考答案:分三种情况:
第一种方法(growpart 扩容):
growpart /dev/vda 1resize2fs /dev/vda1第二种方法(partprobe 生效):
partprobe /dev/sdaresize2fs /dev/vda1第三种方法(新磁盘加入卷组):
fdisk /dev/sdb # n p 1 1 回车 回车 t 8e wpvcreate /dev/sdb1vgextend datavg /dev/sdb1lvextend -r -L +100%free /dev/mapper/datavg-lv01- 简述 LVM,如何给使用 LVM 的 / 分区扩容?
参考答案:
功能:对磁盘进行动态管理,按需动态调整大小。
核心概念:
- PV(物理卷):最底层,可以是物理硬盘上的分区、整个物理硬盘或 RAID 设备;
- VG(卷组):建立在物理卷之上,一个卷组至少包含一个物理卷,可动态添加;
- LV(逻辑卷):建立在卷组之上,卷组中的未分配空间可用于建立新的逻辑卷,可动态扩展和缩小。
给 / 分区扩容步骤:
-
添加磁盘;
-
使用
fdisk对新磁盘分区; -
分区完成后修改分区类型为 LVM(8e);
-
使用
pvcreate创建物理卷; -
使用
vgextend将新分区加入根目录所在卷组; -
使用
lvextend进行扩容; -
使用
xfs_growfs(ext4 用resize2fs)调整文件系统大小。 -
Linux 的文件类型有哪些?
参考答案:
-:常规文件(file);d:目录文件(directory);b:块设备文件(block device),如硬盘,支持以 block 为单位随机访问;c:字符设备文件(character device),如键盘,以 character 为单位线性访问;l:符号链接文件(symbolic link),又称软链接;p:命名管道文件(pipe);s:套接字文件(socket),用于两个进程间通信。
- Linux 系统启动流程是怎样的?
参考答案:
-
开机自检,加载 BIOS;
-
读取 MBR;
-
Boot Loader(grub)引导菜单;
-
加载 kernel 内核;
-
init 进程依据 inittab 文件设定运行级别;
-
init 进程执行 rc.sysinit;
-
启动内核模块;
-
执行不同运行级别的脚本程序;
-
执行 /etc/rc.d/rc.local。
-
如何查看并杀死僵尸进程?
参考答案:
top# 查看 Task 行中的 zombie 数量处理思路:
- 僵尸进程(defunct)无法直接
kill掉,需要杀掉其父进程; - 父进程死后,僵尸进程过继给 1 号进程(init),init 会负责清理,其产生的所有僵尸进程跟着消失;
- 使用
kill -15、kill -9杀父进程后,反而可能产生更多僵尸进程(因为父进程的子进程也变成了孤儿/僵尸),需要注意处理方式。
- 如何搜索某个用户运行的进程?
参考答案:
pgrep -au neteagle- 如何查看某个端口正在被哪个进程使用?
参考答案:
lsof -i :[port]- 如何查看 /var/log 目录下的文件数?
参考答案:
ls /var/log/ -lR | grep "^-" | wc -l- 如何在文本里进行复制、粘贴、删除行、删除全部、按行查找和按字母查找?
参考答案:以下操作全部在 vi/vim 命令状态下操作:
- 复制粘贴:移动到想要复制的行按
yy,移动到目标位置按p粘贴; - 删除行:移动到该行按
dd; - 删除全部:
dG(注意 G 一定要大写); - 按行查找:
:90跳到第 90 行; - 按字母查找:
/path查找 path 单词所在位置,多次查找会显示在不同位置。
- 符号链接与硬链接的区别?
参考答案:
- 符号链接(软链接):相当于 Windows 里的快捷方式。
ln -s 3.txt 4.txt,修改 4 会跟着改 3(反之亦然);若删除源文件 3,4 就坏掉了不可用; - 硬链接:相当于又复制了一份。
ln 3.txt 4.txt,不可以跨分区;修改 3 和 4 会跟着变;但删除 3 时 4 不受任何影响。
- 如何查看二进制文件的内容?
参考答案:
一般通过 hexdump 命令查看:
hexdump -C 文件名常用参数:
-C:规范的十六进制和 ASCII 码显示;-c:单字节字符显示;-b:单字节八进制显示;-o:双字节八进制显示;-d:双字节十进制显示;-x:双字节十六进制显示。
三、 Web 服务与负载均衡
- 讲述一下 Tomcat 8005、8009、8080 三个端口的含义?
参考答案:
- 8005:关闭 Tomcat 时使用;
- 8009:AJP 端口,供容器使用(如 Apache 可通过 AJP 协议访问 Tomcat 的 8009 端口实现功能);
- 8080:一般应用使用。
- 讲一下 Keepalived 的工作原理?
参考答案:
- 在一个虚拟路由器中,只有作为 MASTER 的 VRRP(虚拟路由冗余协议) 路由器会一直发送 VRRP 通告信息,BACKUP 不会抢占 MASTER,除非它的优先级更高;
- 当 MASTER 不可用时(BACKUP 收不到通告信息),多台 BACKUP 中优先级最高的会被抢占为 MASTER;
- 抢占非常快速(<1s),保证服务的连续性;
- 由于安全性考虑,VRRP 包使用加密协议进行加密;
- BACKUP 不会发送通告信息,只会接收通告信息。
- LVS、Nginx、HAProxy 有什么区别?工作中你怎么选择?
参考答案:
LVS:
- 抗负载能力强,工作在第 4 层仅作分发,无流量产生,负载均衡软件里性能最强;
- 工作稳定,自身有完整的双机热备方案(LVS+Keepalived、LVS+Heartbeat);
- 应用范围广,可以对所有应用做负载均衡;
- 配置简单,减少人为出错几率;
- 缺点:不支持正则处理、不能做动静分离;网站应用庞大时(尤其有 Windows Server 应用)实施维护较复杂。
Nginx:
- 工作在第 7 层应用层,可针对 HTTP 应用做分流策略(域名、目录结构),正则比 HAProxy 更强大灵活;
- 对网络依赖小,理论上能 ping 通就能负载;
- 安装配置简单;能支撑几万次并发量,稳定;
- 不仅是负载均衡器/反向代理,也是强大的 Web 应用服务器,处理静态页面、抗高并发比 Apache 有优势;
- 作为 Web 反向代理加速缓存成熟,速度比传统 Squid 快;
- 缺点:不支持 URL 检测后端;仅支持 HTTP、HTTPS 和 Email 协议;Session 保持、Cookie 引导能力相对欠缺。
HAProxy:
- 支持虚拟主机,可工作在 4、7 层(支持多网段);
- 弥补 Nginx 缺点(Session 保持、Cookie 引导);
- 支持 URL 检测后端服务器;
- 纯负载均衡软件,负载均衡速度和并发处理优于 Nginx;
- 可对 MySQL 读做负载均衡和后端节点检测(slaves 超过 10 台时性能不如 LVS);
- 算法较多,达 8 种。
工作选择:
- HAProxy 和 Nginx 可做七层转发(URL、目录转发);
- 很大并发量时选择 LVS;
- 中小型公司并发量不大,选择 HAProxy 或 Nginx 即可;HAProxy 是专业代理服务器、配置简单,中小型企业推荐使用 HAProxy。
- Nginx 的负载均衡算法策略有哪些?
参考答案:
- 轮询(默认):请求依次分发到后端服务器;
- 加权轮询:轮询 + weight 权重,按权重比例分发;
- ip_hash:每个请求的访问 IP 映射成 hash,通过 hash 算法(hash 值 % node_count)分配到后端服务器,同一 IP 固定访问同一后端,实现会话保持,解决 session 同步问题;
- least_conn(最少连接):将新请求分发给当前连接数最少的服务器,避免繁忙服务器过载。
- Nginx 常用模块有哪些?
参考答案:
upstream:负载均衡后端服务器组;rewrite:URL 重写;location:请求匹配定位;proxy_pass:反向代理转发。
- 什么是动态资源、静态资源分离?
参考答案:
- 动静分离是让动态网站中不变的资源和经常变化的资源分开部署,根据静态资源的特点做缓存操作,是网站静态化处理的核心思路;
- 需要后台处理的请求(.jsp、.do 等)是动态文件;不需要后台处理的(css、html、jpg、js 等)是静态文件;
- 静态资源放到 Nginx 中,动态资源转发到 Tomcat 服务器;
- 目前主流的做法是把静态资源缓存到 CDN 服务中(七牛、阿里云等),CDN 国内节点更多,实现就近访问、提供更大带宽,提升访问速度。
四、 Docker
- Docker 的工作原理是什么?
参考答案:
Docker 是一个 Client-Server 结构的系统:Docker 守护进程运行在宿主机上,从客户端接受命令并管理运行在主机上的容器;容器是一个运行时环境,即”集装箱”。
- Docker 的组成包含哪几大部分?
参考答案:
- docker client:客户端,为用户提供可执行命令,实现与 docker daemon 的交互;
- docker daemon:守护进程,在宿主机后台运行,等待接收客户端请求;
- docker image:镜像,run 之后生成 docker 容器;
- docker container:容器,一个系统级别的服务,拥有自己的 IP 和系统目录结构;运行容器前需要本地存在对应镜像,否则从镜像仓库下载。
Docker 使用 C/S 架构,通过远程 API 管理和创建容器。容器通过镜像创建,容器与镜像的关系类似于面向对象编程中对象与类。
- Docker 与传统虚拟机的区别是什么?
参考答案:
- 启动速度:虚拟机需安装整个操作系统再启动应用,通常几分钟;Docker 直接使用镜像运行业务容器,启动是秒级别;
- 资源占用:Docker 在操作系统级别虚拟化,与内核交互几乎无性能损耗;虚拟机运行整个操作系统,占用资源多;
- 轻量程度:Docker 共用内核与共享应用程序库,内存占用极小;同样硬件环境 Docker 运行的实例远多于虚拟机;
- 隔离性:Docker 属于进程之间的隔离(隔离性弱),虚拟机可实现系统级别隔离;
- 安全性:Docker 租户 root 与宿主机 root 相同,容器内用户提权后可能直接具备宿主机 root 权限;虚拟机租户 root 与宿主机 root 分离,且有硬件隔离技术(如 Intel VT-d、VT-x)防止突破;
- 管理工具:Docker 集中化管理工具还不算成熟;虚拟化有成熟管理工具(如 VMware vCenter);
- 高可用:Docker 靠快速重新部署实现;虚拟化具备负载均衡、高可用、容错、迁移、数据保护等成熟机制;
- 创建速度:虚拟化分钟级别,Docker 秒级别,迭代快;
- 交付分发:Docker 通过 Dockerfile 记录构建过程,可在集群中快速分发和部署。
- Docker 技术的三大核心概念是什么?
参考答案:
- 镜像(image):轻量级、可执行的独立软件包,包含运行软件所需的所有内容(代码、运行时库、环境变量、配置文件等),是可交付的运行环境;
- 容器(container):基于镜像创建的实例,是真正运行业务程序的地方。类比:镜像=类,容器=对象;
- 镜像仓库(registry):存放镜像的地方,构建好镜像后上传,有权限的人可拉取运行。
- CentOS 镜像几个 G,但是 docker centos 镜像才几百兆,这是为什么?
参考答案:
一个完整的 Linux 操作系统包含内核 + rootfs(根文件系统)(/dev、/proc、/bin 等目录)。平时看到的 CentOS 除了 rootfs 还选装了很多软件、服务、图形桌面,所以几个 G 不奇怪。
而容器镜像共享宿主机的 Linux 内核,只需提供很小的 rootfs,只包含最基本的命令、工具和程序库,所以镜像很小。
- 讲一下镜像的分层结构以及为什么要使用镜像的分层结构?
参考答案:
- 新的镜像从 base 镜像一层一层叠加生成,每安装一个软件(Dockerfile 中使用 RUN 命令)就在现有镜像上增加一层,最终构成整个镜像;所以
docker pull时会看到一层层拉取; - 分层最大的好处是共享资源:多个镜像从相同 base 构建时,Docker Host 只需在磁盘上保存一份 base,内存中也只需加载一份,即可为所有容器服务;镜像的每一层都可以被共享。
- 讲一下容器的 copy-on-write 特性,修改容器里面的内容会修改镜像吗?
参考答案:
- 镜像是分层且只读的;容器启动时,新的**可写层(容器层)**加载到镜像顶部,之下的都是镜像层;
- 所有对容器的改动(添加、删除、修改)只发生在容器层,镜像层只读不变;各层联合组成统一文件系统,上层同名文件覆盖下层;
- 添加文件:新文件添加到容器层;
- 读取文件:从上往下在各镜像层查找,找到后复制到容器层再读入内存;
- 修改文件:查找到文件后复制到容器层再修改;
- 删除文件:找到后在容器层记录删除操作;
- 只有当需要修改时才复制一份数据,即 Copy-on-Write。不会对镜像本身做任何修改。
- 简单描述一下 Dockerfile 的整个构建镜像过程?
参考答案:
-
创建目录存放应用程序及构建使用的文件;
-
在该目录下创建 Dockerfile 文件;
-
编写 Dockerfile 指令:
FROM指定基础镜像、COPY复制文件、RUN运行命令、ENV设置环境变量、EXPOSE暴露端口、WORKDIR设置工作目录、CMD指定启动命令等; -
使用
docker build -t 镜像名:tag .构建(最后.表示当前目录,默认找当前目录的 Dockerfile,可用-f指定); -
构建时 docker 将当前目录所有文件发给 daemon,顺序执行指令;期间生成临时容器安装 RUN 指定的命令,成功后类似
docker commit保存为镜像层并删除临时容器,一层层构建直到镜像构建成功。 -
Dockerfile 构建镜像出现异常,如何排查?
参考答案:
Dockerfile 一层层构建,期间产生临时容器安装应用。如果因临时容器安装应用异常导致构建失败,容器虽被清理,但已构建的中间镜像还在。可以根据异常时上一层已构建的临时镜像,将其运行为容器,在容器里运行安装命令来定位具体异常。
- Dockerfile 的基本指令有哪些?
参考答案:
FROM:指定基础镜像(必须是第一个指令);MAINTAINER:设置镜像作者信息(作者名、日期、邮件等);COPY:复制文件到镜像;ADD:复制文件到镜像(区别:ADD 会自动解压 tar/zip/tgz/xz 归档文件,还支持 URL 下载;一般建议用 COPY);ENV:设置环境变量;EXPOSE:暴露容器端口(仅提示作用);VOLUME:数据卷持久化,挂载目录;WORKDIR:设置工作目录(不存在会自动创建);RUN:在容器中运行命令(会创建新镜像层,常用于安装软件包);CMD:指定容器启动时默认运行的命令(多个 CMD 只有最后一个生效,可被docker run后参数替换);ENTRYPOINT:指定容器启动时运行的命令(多个只有最后一个生效;同时存在 CMD 和 ENTRYPOINT 时,CMD 或 run 参数会作为参数传给 ENTRYPOINT)。
- 如何进入容器?使用哪个命令?
参考答案:
进入容器有两种方法:docker attach、docker exec(推荐 exec,如 docker exec -it 容器名 bash)。
- Docker 容器 ping 不通是什么原因?
参考答案:
ifconfig查看 docker0 网桥,ping 一下网桥看是否通,可能是网桥配置问题(Weave 路由器端口 6783);- 安装 Docker 的服务器没有关闭防火墙(先测试物理机是否可访问);
- 创建镜像时没有做端口映射(能访问物理机但不能访问 docker),用
docker ps查看端口映射情况; - 端口映射不正确;
- 查看网络配置,ping 网桥看是否能通,排查网桥原因。
五、 Kubernetes
- 什么是 K8s?说出你的理解?
参考答案:
- K8s 是 Kubernetes 的简称,本质是开源的容器编排系统,用于管理容器化应用,目标是让容器化应用部署简单高效;
- Kubernetes 提供应用部署、规划、更新、维护的机制;
- 简单说:K8s 是编排容器的系统,管理容器应用全生命周期——创建、部署、提供服务、扩容缩容、应用更新,还能做到故障自愈。
- K8s 的组件有哪些,作用分别是什么?
参考答案:
K8s 由 master 节点和 node 节点构成。master 管理集群,node 是容器应用运行的地方。
master 节点组件:
- kube-api-server:集群管理统一访问入口,提供 RESTful API,实现认证、授权、准入控制;是其他组件数据交互的枢纽,只有它能直接操作 etcd;
- kube-controller-manager:各种控制器的管理者(replication、node、deployment、endpoint 等控制器),是集群自动化功能的核心;
- kube-scheduler:负责集群资源调度,通过过滤和打分算法为待调度 Pod 选出最佳 node 并绑定;
- etcd:分布式键值存储数据库,保存集群状态数据(Pod、Service 等资源对象);通常部署奇数个实例(大规模集群 5 或 7 个节点),可与 master 分离部署。
node 节点组件:
- kubelet:每个 node 上的服务进程,连接 master 和 node 的桥梁,维护 Pod 和容器的生命周期(创建、更新、销毁),并向 api-server 注册和定期汇报节点资源;
- kube-proxy:实现 Pod 网络代理和四层负载均衡,监听 service/endpoint 变化,维护路由规则,将访问 Service 的请求转发到后端 Pod;
- container-runtime:容器运行时环境(docker、containerd 等),新版本 K8s 已弃用 docker,1.24+ 使用 containerd。
- Kubelet 的功能、作用是什么?(重点)
参考答案:
kubelet 部署在每个 node 节点上,主要有 4 个功能:
- 节点管理:启动时向 api-server 注册,定期汇报节点状态和资源使用情况,供 master 调度参考;
- Pod 管理:维护节点上 Pod 生命周期,监听到 master 下发的任务后,通过 CRI(容器运行时接口) 调用容器运行时(containerd 等)创建、更新、删除容器;
- 容器健康检查:支持启动探针、存活探针、就绪探针,定期调用探测容器状态,失败时按重启策略处理;
- Metrics Server 资源监控:通过 Metrics Server 获取节点和容器的 CPU、内存、文件系统、网络等资源使用情况。
- Kube-api-server 的端口是多少?各个 Pod 是如何访问 Kube-api-server 的?
参考答案:
- kube-api-server 端口为 8080(HTTP)和 6443(HTTPS);
- 以 kubeadm 安装为例:kube-system 命名空间中有 kube-apiserver Pod,绑定 master 主机 IP 和 6443 端口;
- default 命名空间存在名为
kubernetes的 Service,对外暴露 443 端口、目标端口 6443,IP 是 ClusterIP 地址池第一个地址; - 该 Service 未指定标签选择器,对应的 endpoint 是手动创建的,代理到 master 节点的 6443 端口;
- Pod 创建后注入环境变量,获得 kubernetes 服务的 IP 和 443 端口,请求该 Service 即转发到 kube-api-server。
- K8s 中命名空间的作用是什么?
参考答案:
- namespace 是 K8s 的重要资源,主要作用是多套环境的资源隔离(多租户隔离);
- 集群内部资源分配到不同 namespace,形成逻辑隔离,方便不同资源隔离使用和管理;
- 不同命名空间可以存在同名资源,namespace 为资源提供作用域;
- 结合授权机制可将不同 namespace 交给不同租户管理;结合**资源配额(ResourceQuota)**限制租户可占用的 CPU、内存等资源。
- Pod 资源控制器类型有哪些?
参考答案:
- Deployments:为 Pod 和 ReplicaSet 提供声明式的更新能力;
- ReplicaSet:维护一组在任何时候都处于运行状态的 Pod 副本稳定集合,保证给定数量、完全相同 Pod 的可用性;
- StatefulSets:管理基于相同容器规约的一组 Pod,但为每个 Pod 维护有粘性的 ID(不能相互替换,永久不变);
- DaemonSet:确保全部(或某些)节点上运行一个 Pod 副本,节点加入自动新增,删除 DaemonSet 删除其创建的所有 Pod;
- Job:创建一个或多个 Pod 并重试执行,直到指定数量成功终止,任务结束;
- CronJob:类似 crontab,按 Cron 格式周期性调度执行 Job;
- ReplicationController:确保任何时候有特定数量的 Pod 副本运行(已被 ReplicaSet 取代)。
六、 监控与运维实践
- Zabbix 常用术语你知道几个?
参考答案:
- 主机(host):要监控的网络设备,由 IP 或 DNS 名称指定;
- 主机组(hostgroup):主机的逻辑容器,可包含主机和模板,常用于分配监控权限;
- 监控项(item):特定监控指标的数据,是 Zabbix 数据收集的核心,每个 item 由 key 标识;
- 触发器(trigger):评估某监控项数据是否在合理范围内的表达式(阈值),超阈值时状态从 OK 变为 Problem;
- 事件(event):触发值得关注的事情(触发器状态转变、agent 自动注册等);
- 动作(action):对特定事件预定义的处理方法(发送通知、执行操作);
- 报警升级(escalation):发送警报或执行远程命令的自定义方案(如每 5 分钟发一次、共发 5 次);
- 媒介(media):发送通知的手段或通道(Email、Jabber、SMS 等);
- 通知(notification):通过选定媒介发送的事件信息;远程命令(remote command):在特定条件下自动执行的预定义命令;
- 模板(template):快速定义被监控主机的预设条目集合(item、trigger、graph 等),可直接链接到主机;
- 应用(application):一组 item 的集合;
- Web 场景(web scenario):用于检测 Web 站点可用性的一个或多个 HTTP 请求;
- 前端(frontend):Zabbix 的 Web 接口。
- 虚拟化技术有哪些表现形式?
参考答案:
- 完全虚拟化技术:通过软件实现对操作系统资源的再分配,比较成熟,代表:KVM、ESXi、Hyper-V;
- 半虚拟化技术:通过修改已有系统代码形成新的可虚拟化系统,调用硬件资源安装多个系统,速度相对较高,代表:Xen;
- 轻量级虚拟化:介于完全虚拟化和半虚拟化之间,代表:Docker。
- 你是怎么备份数据的,包括数据库备份?
参考答案:
- 生产环境下,应用数据和数据库数据在部署时就有主从架构或集群,这本身就是数据的热备份;
- 冷备份:用专门一台服务器作为备份服务器,用 rsync + inotify 配合计划任务实现数据冷备份;
- 发版包备份:正常情况下有发布服务器,每次发版都会保存好发版包。
- 修改线上业务配置文件流程?
参考答案:
-
先告知运维经理和业务相关开发人员;
-
在测试环境测试,并备份之前的配置文件;
-
测试无误后修改生产环境配置;
-
观察生产环境是否正常、是否有报警;
-
完成配置文件更改。
-
网站登录缓慢是什么原因?
参考答案:
- 网络带宽:常见瓶颈;
- 服务器性能:CPU、硬盘、内存配置过低,服务器负载不起来;
- 开发代码:如 MySQL 语句未优化,导致数据库读写耗费时间;
- 数据库瓶颈:数据量增长后,数据库读写压力变大。
- 如果我们的网站打开速度慢,请说下你的排查思路?
参考答案:
判断原因:首先以用户身份访问网站,判断问题出在自身原因还是用户原因。
用户原因:
- 用户带宽不足;
- 浏览器版本低、插件太多;
- 电脑中毒、垃圾文件过多;
- 用户主机性能和操作系统。
网站自身原因:
- 网络带宽;
- 服务器 CPU、硬盘、内存过低,负载过高;
- 代码不完善(MySQL 语句未优化导致读写耗时);
- 未开启图片压缩;
- 死连接过多、插件使用及 JS 文件调用频繁。
解决思路:
- 检测服务器速度:
ping查看连接时间和丢包率(1000 个包不丢最理想,一般好机房丢包率不超过 1%);ping 值要均匀,最小最大值相差大说明路由不稳定; - 查看服务器性能:
uptime看 CPU 使用率、free -m看内存、iostat看磁盘 IO,定位大量占用资源的进程; - 分析访问特征:查看访问最多的 URL 和 IP,恶意 IP 屏蔽,善意流量限流(可能是 CDN 回源量大);
- 对比同服务器其他网站:看同一服务器上其他网站打开速度;
- 检查线路互访:电信/联通互访问题(如电信用户访问联通服务器),解决方法是使用双线或多线空间;
- 网站自身优化:
- 优化图片,限制大小尺寸、降低质量、减少数量;
- 限定图片格式(jpg、png、gif);
- 减少 HTTP 请求数(合并图片、合并 CSS 文件、去除不必要对象)。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!














