运维自动化与监控体系综合实践作业

Keepalived 状态检测核心机制简述

1.简述 Keepalived 状态检测的核心机制,至少包含 2 个关键检测对象。

Keepalived 的状态检测核心机制是通过分层检测确保主节点及服务的可用性,当检测到异常时触发主备切换,主要依据两个关键的检测对象节点和服务

节点存活状态:主节点周期性发送 VRRP 通告报文(默认 1 秒一次),备节点监听该报文。若备节点在超时时间(默认 3 秒)内未收到通告,判定主节点网络或节点本身故障,触发备节点升级为主节点。

关键服务状态 :通过配置vrrp_script脚本,定期检测主节点上的核心服务(如 Nginx、LVS、数据库等)是否正常运行(如检查进程是否存在、端口是否监听、接口是否通等)。若脚本返回异常结果,Keepalived 会主动降低主节点优先级,触发备节点接管。

Keepalived 相关核心面试题与解答

2.列举 2 个与 Keepalived 相关的常见面试问题,并给出简洁答案(如 "Keepalived 的 VIP 是什么?作用是?")。

问题:Keepalived 的主要功能是什么?

答案:主要用于实现服务器高可用(HA),通过 VRRP 协议管理虚拟 IP(VIP)实现主备节点自动切换,避免单点故障;同时可结合 LVS 实现负载均衡的高可用。

问题:Keepalived 中 VRRP 协议的作用是什么?

答案:VRRP(虚拟路由冗余协议)用于在多节点间选举主节点,主节点承载服务并持有 VIP,备节点监听主节点状态;当主节点故障时,备节点自动接管 VIP 和服务,保障业务连续性。

问题:Keepalived 主从节点切换的触发条件有哪些?

答案:① 主节点服务器宕机或网络中断(无法发送 VRRP 通告);② 主节点上的关键服务(如 LVS、Nginx)故障(通过脚本检测,非 VRRP 原生功能);③ 手动强制切换(如执行 systemctl stop keepalived)。

Keepalived 主从部署与 VIP 漂移验证

3.在两台 Linux 主机上部署 Keepalived,配置主从节点,实现 VIP 的自动漂移(当主节点宕机时,从节点接管 VIP)。验证状态检测功能:手动停止主节点的 Keepalived 服务,观察从节点是否成功切换并接管服务。

实践:

现在两台主机上下载keepalived服务

下载nginx并设置相关页面

定制keepalived的配置

首先定制网卡

配置好后通过netplan apply命令应用配置

然后配置keepalived相关配置

启动服务后,查看情况

此时192.168.8.13主机是master,16主机是slave。所以VIP在13哪里·

二者pingVIP均为master承接流量。

接下来手动关闭master,来查看漂移状态

效果如上,展示成功

Ansible 核心工作原理三句话概括

4.用 3 句话概括 Ansible 的工作原理,需包含 "控制节点""被管理节点""通信方式" 3 个核心要素。

  1. 控制节点是安装 Ansible 的主机,负责编写和存储任务流程,定义对被管理节点的操作逻辑。
  2. 控制节点与被管理节点通过 SSH 协议建立通信,将任务指令传输到被管理节点。
  3. 被管理节点接收并执行指令,完成后将结果返回给控制节点,实现集中化的自动化管理。

Ansible 主机清单的作用与分组管理解析

5.解释 Ansible 中 "主机清单" 的作用,以及如何在清单中分组管理不同主机。

主机清单(Inventory)的作用

主机清单是 Ansible 识别 "被管理节点" 的配置文件,用于定义需要管理的主机及相关连接信息,是 Ansible 执行任务时定位目标节点的 "地址簿",确保控制节点知道对哪些主机执行操作

Ansible Playbook 与模块命令的区别及优势

6.简述 Ansible Playbook 与单个模块命令的区别,说明 Playbook 的核心优势。

Ansible Playbook 与单个模块命令的区别

  1. 结构与形式 :单个模块命令是通过 ansible 命令直接调用单个模块(如 pingcopy)的单行指令(如 ansible web -m ping),仅能执行单一任务;Playbook 是基于 YAML 格式的文件,可包含多个任务、变量、条件判断等,是 "任务集合的脚本化定义"。
  2. 功能复杂度:单个模块命令仅支持简单的单步操作,无法实现流程控制(如循环、条件判断);Playbook 可串联多个任务,支持变量、模板、角色等,能编排复杂的自动化流程如 "安装软件→配置文件→启动服务" 的完整部署。

Playbook 的核心优势

  1. 可复用与可追溯:Playbook 以文件形式保存,可重复执行、版本化管理(如纳入 Git),避免重复编写单条命令,适合团队协作。
  2. 支持复杂流程编排 :通过 tasks 串联多步骤操作,结合 when(条件)、loop(循环)等语法,可应对 "按环境差异部署""批量处理动态数据" 等复杂场景。
  3. 幂等性保障:Playbook 中任务默认支持幂等性(多次执行结果一致),避免重复操作导致的资源浪费或错误(如重复安装软件不会重复执行)。
  4. 可读性与可维护性:YAML 格式清晰易懂,配合注释可直观体现自动化逻辑,便于后期修改和扩展。

Ansible 全流程实践:从环境部署到 Role 应用

7.部署 Ansible 环境:

完成 1 台控制节点、2 台被管理节点的环境配置,确保控制节点能免密登录被管理节点。

基础模块实践:使用ping模块测试主机连通性,用yum模块在被管理节点安装nginx,用service模块启动nginx服务。

Playbook 实践:编写 1 个 Playbook,实现 "在被管理节点安装并启动mysql服务" 的自动化操作。

Role 实践:创建 1 个用于部署tomcat的 Role,包含配置文件、启动脚本等,并用它完成 1 台主机的tomcat部署。

实践

环境准备(所有节点)

vim /etc/hosts

添加内容

创建专用用户

配置控制节点

生成 SSH 密钥​

全部回车

配置免密登录被管理节点​

测试 SSH 连接

创建 Ansible 清单

mkdir ~/ansible-project && cd ~/ansible-project

vim inventory.ini

基础模块实践

测试主机连通性

安装 启动Nginx​

验证

Playbook 实践(安装 MySQL)

创建 Playbook

vim install_mysql.yml


  • name: Install and configure MySQL

hosts: managed

become: yes

vars:

mysql_root_password: "SecurePass123!" # 实际使用时改为强密码

tasks:

  • name: Install MySQL (RockyLinux)

yum:

name: mysql-server

state: present

when: ansible_distribution == "Rocky"

  • name: Install MySQL (Ubuntu)

apt:

name: mysql-server

state: present

when: ansible_distribution == "Ubuntu"

  • name: Start and enable MySQL service

service:

name: mysqld

state: started

enabled: yes

when: ansible_distribution == "Rocky"

  • name: Start and enable MySQL service (Ubuntu)

service:

name: mysql

state: started

enabled: yes

when: ansible_distribution == "Ubuntu"

  • name: Set root password (初次安装后执行)

shell: |

mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '{{ mysql_root_password }}';"

args:

executable: /bin/bash

ignore_errors: yes # 避免未初始化报错

执行 Playbook​

Role 实践(部署 Tomcat)​

创建并查看目录结构

定义变量​tomcat/defaults/main.yml

创建任务​tomcat/tasks/main.yml

创建服务模板​tomcat/templates/tomcat.service.j2

​配置 Handlers​tomcat/handlers/main.yml

创建 Playbook 调用 Role​

执行部署

验证成功(令人愉快的绿色!!!)

完成,测试

Zabbix 核心组件及其作用详解

8.简述 Zabbix 的核心组件(如 Server、Agent 等)及各自的作用。

Zabbix 的核心组件及各自作用

  1. Zabbix Server:核心组件,负责接收 Agent/Proxy 发送的监控数据,处理告警逻辑(触发条件、通知方式),存储数据到数据库,并协调整个监控系统的工作。
  2. Zabbix Agent:部署在被监控主机上的轻量进程,主动或被动收集主机的监控数据(如 CPU 使用率、磁盘空间等),并发送给 Server 或 Proxy。
  3. Zabbix Proxy:分布式监控的中间组件,用于减轻 Server 压力。可在远程区域收集多个 Agent 的数据,汇总后转发给 Server,适用于大规模或跨机房监控场景。
  4. 数据库:存储所有监控数据(历史指标、配置信息、告警记录等),支持 MySQL、PostgreSQL、Oracle 等主流数据库。
  5. Zabbix Web Interface:基于 Web 的可视化界面,供用户配置监控项、查看监控图表、管理告警规则等,是用户与 Zabbix 交互的主要入口。

Zabbix 监控项、触发器与告警的关联逻辑

9.解释 Zabbix "监控项""触发器""告警" 三者的关联逻辑,用 1 个简单场景描述(如 "CPU 使用率过高")。

一、三者关联逻辑

监控项 是数据采集源头,负责获取被监控对象的具体指标;触发器 是条件判断规则,基于监控项的采集数据判断是否触发异常;告警是异常响应动作,当触发器满足触发条件时,自动执行预设的通知或处理操作。三者形成 "数据采集→条件判断→动作响应" 的闭环,实现从 "发现异常" 到 "通知处理" 的自动化监控。

二、简单场景描述(CPU 使用率过高)

  1. 监控项:采集 CPU 使用率数据在 Zabbix 中为目标服务器创建 "CPU 使用率(%)" 监控项,配置采集规则(如每隔 1 分钟采集 1 次),该监控项会持续获取服务器的实时 CPU 使用率,并将数据传输到 Zabbix Server 存储。

  2. 触发器:判断 CPU 是否过高基于上述监控项,创建触发器,设定判断条件(如 "监控项采集的 CPU 使用率连续 2 次≥80%")。当监控项采集到的数据满足该条件(例如连续两次测得 82%、85%),触发器会从 "正常" 状态切换为 "异常" 状态,标记 "CPU 使用率过高" 的潜在问题。

  3. 告警:触发异常通知提前配置告警规则:当上述触发器切换为 "异常" 时,Zabbix 自动执行告警动作 ------ 比如向管理员的邮箱发送通知(内容含 "服务器 XX 的 CPU 使用率达 85%,触发告警"),同时在 Zabbix Web 界面高亮显示该告警;直到监控项采集的 CPU 使用率回落(如降至 70%),触发器恢复 "正常",告警才会自动解除。

Zabbix 两种监控方式对比与场景分析

10.列举 Zabbix 支持的 2 种监控方式,并说明适用场景。

1. Agent 监控(主动 / 被动模式)

核心原理:在被监控主机上部署 Zabbix Agent 程序,Agent 与 Zabbix Server 通信 ------ 被动模式下,Server 主动向 Agent 发起请求获取监控数据;主动模式下,Agent 主动将采集到的数据推送给 Server。

适用场景:适合有操作系统的设备,如 Linux/Windows 服务器、物理机、虚拟机等。这类设备可正常安装 Agent 程序,能精准采集系统级指标(CPU、内存、磁盘、进程状态等)和应用级指标。

2. SNMP 监控

核心原理:基于 SNMP(简单网络管理协议),无需在被监控设备上安装 Agent,而是通过设备自带的 SNMP 服务,Zabbix Server 向设备发送 SNMP 请求,获取设备的预设监控数据。

适用场景:适合无操作系统或无法安装 Agent 的网络设备、硬件设备,如路由器、交换机、防火墙、打印机、UPS 电源、IoT 传感器等。这类设备通常原生支持 SNMP 协议,可通过配置 SNMP 共同体名实现数据采集。

Zabbix 监控环境部署与 Grafana 可视化实战

11.部署 Zabbix 环境:

完成 Zabbix Server 和 1 台 Zabbix Agent 的安装与配置,确保 Server 能正常识别 Agent。

基础监控实践:在 Zabbix 中为 Agent 主机添加 "内存使用率""磁盘空间" 2 个监控项,并配置对应的触发器(如内存使用率 > 80% 触发告警)。

告警实践:配置 Zabbix 的微信告警或钉钉告警,当触发器触发时,能收到对应的告警消息。

可视化实践:使用 Grafana 连接 Zabbix 数据源,创建 1 个包含 "CPU 使用率""网络流量" 的监控仪表盘。

实践

Zabbix Server的安装与配置

软件源定制:更新软件源之后apt updata

获取最新版本的zabbix软件源

更新后进行安装

安装数据库apt install mysql-server 然后对数据库进行配置

使用默认的sql文件,创建zabbix的数据库环境

注意,我们为了方便演示刚才密码设置为password

检测效果

然后进入数据库中,将刚才为了导入数据库文件能力的 属性移除

为Zabbix server配置数据库

vim /etc/zabbix/zabbix_server.conf DBPassword=password

然后配置前端 Nginx环境和PHP环境

删除出事的nginx首页画面。

在/etc/nginx/conf.d/zabbix.conf 中添加 listen 80

然后在/etc/zabbix/php-fpm.conf文件最后一行添加默认时区

php_value[date.timezone] = Asia/Shanghai

重启服务

浏览器查看

接下来在浏览器上进行操作

点击下一步

下一步,设置密码

设置主机名称

无异议,选择下一步

创建成功

进行登录,用默认名称和密码

登陆成功

接下来进行安装监控客户端

配置软件源

安装

定制配置

设置开机自启动,并检查端口

仪表盘进行资源创建

点击数据采集下的主机群组

创建主机

添加后刷新稍等后,变绿

在 Zabbix 中为 Agent 主机添加 "内存使用率""磁盘空间" 2 个监控项,并配置对应的触发器(如内存使用率 > 80% 触发告警)。

告警实践:配置 Zabbix 的钉钉告警,当触发器触发时,能收到对应的告警消息。

首先我们与要在钉钉上创建一个企业

然后创建一个群组,添加自定义机器人

添加好后,会有一个Webhook

先用Webhook在虚拟机中进行测试(两个花括号中间换成机器人的webhook码)

会有如图结果

然后接入zabbix,在

点击测试

可视化实践:使用 Grafana 连接 Zabbix 数据源,创建 1 个包含 "CPU 使用率""网络流量" 的监控仪表盘。

先安装一下需要使用的软件

在安装提前下载好的Grafana

systemctl enable --now grafana-server.service

使用10.0.0.13:3000进行连接

下载插件

启动systemctl restart grafana-server.service

然后

进入后启动

然后进行添加数据源

输入用户名和密码

点击save

回上方模板库,全部inport

进第二个,右边三个点进行编辑

进行设置

CPU使用率

再添加一些其他的

网速

KVM 虚拟化环境搭建与虚拟机管理实战

12.KVM 实践:在 1 台 Linux 主机上安装 KVM 环境,创建 1 台基于 CentOS 的虚拟机,并完成虚拟机的启动、关机、重启操作。

存储与网络管理:为 KVM 虚拟机添加 1 块新的虚拟磁盘,并用桥接模式配置虚拟机的网络,确保虚拟机能访问外网。

首先要在我们的虚拟机处理器栏勾选虚拟化引擎·(必须关机状态下操作)

确保确实支持

确认支持模块

安装软件

准备文件夹

查看软件状态

创建虚拟磁盘

创建虚拟机

查看虚拟机状态

virsh list --all

启动虚拟机

virsh start centos-vm

控制台登录(退出按Ctrl+])

virsh console centos-vm

关机

virsh shutdown centos-vm

强制停止

virsh destroy centos-vm

重启

virsh reboot centos-vm

准备增加磁盘

增加成功

进入虚拟机内ping

相关推荐
编织幻境的妖22 分钟前
Docker底层工作原理
运维·docker·容器
TDengine (老段)35 分钟前
TDengine IDMP 赋能新能源:光伏电站智能运维实践
大数据·运维·数据库·物联网·时序数据库·tdengine·涛思数据
gcfer1 小时前
Docker 介绍和常用命令
运维·docker·容器
开开心心_Every2 小时前
Excel图片提取工具,批量导出无限制
学习·pdf·华为云·.net·excel·harmonyos·1024程序员节
Aruanjian8882 小时前
手动发货太慢?RPA批量处理TikTok订单,效率提升2500%[特殊字符]
自动化·跨境电商·电商·temu·自动化机器人·希音·小红书云帆
i***48612 小时前
Nginx中$http_host、$host、$proxy_host的区别
运维·nginx·http
Fɪʀᴇᴡᴏʀᴋs3 小时前
Oceanbase数据库—基于社区版本的数据库集群管理
运维·数据库·oceanbase
HalvmånEver3 小时前
Linux:基础开发工具(五)
linux·运维·服务器
q***58193 小时前
基础篇:Linux安装redis教程(详细)
linux·运维·redis
小二·3 小时前
Linux 高频面试题(50道 + 详细答案)
linux·运维·服务器