公司有超过700台服务器分散在不同设备上,面临历史遗留服务器维护困难的问题。运维团队需要统一监控这些服务器的存储状态,其中Linux服务器的监控方案选用了Ansible运维工具。本文将通过一个具体场景,介绍如何从零开始部署和配置Ansible,实现对Linux服务器的自动化监控。
为什么选择Ansible进行服务器监控?
Ansible基于SSH协议工作,无需在目标服务器上安装任何代理(Agent),通过配置免密登录即可实现对大批量Linux主机的集中管理和命令下发,架构简单且易于维护。
Ansible控制节点部署
我们选择CentOS 7.6作为Ansible控制服务器的操作系统。首先更新系统软件包列表:
yum update -y
更新完成后,安装EPEL(Extra Packages for Enterprise Linux)扩展源,该源包含了Ansible软件包:
yum -y install epel-release
最后,安装Ansible自动化工具:
yum -y install ansible
安装完成后,可以通过ansible --version命令验证安装是否成功,如有版本信息回显则说明安装正常。

Ansible主机清单配置
Ansible通过/etc/ansible/hosts文件来管理需要操作的主机列表。只有在此文件中定义的主机才能被Ansible调用。文件格式支持单台主机或主机组。
# 方法1:定义单台主机
192.168.1.100
# 方法2:定义主机组,组名为‘web_servers’
[web_servers]
192.168.1.101
192.168.1.102
如下图所示,我们已将两个IP地址添加到了名为wfgCentos7的主机组中。

配置SSH免密登录
为了让Ansible控制节点能无缝连接被管主机,需要配置基于密钥的SSH免密登录。
首先,在Ansible控制节点生成一对无密码的RSA密钥对(注意使用英文引号):
ssh-keygen -t rsa -f /root/.ssh/id_rsa -N ''
然后,使用ssh-copy-id命令将公钥分发到目标主机。如果不指定用户,默认会使用当前控制节点的用户名(此处为root)进行登录。
ssh-copy-id 远程主机IP
执行命令后输入目标主机的密码。当出现“Number of key(s) added: 1”的提示时,表示密钥同步成功,已实现免密登录。

使用Ansible执行自动化命令
完成上述配置后,即可开始使用Ansible对主机进行批量操作。
首先,测试与wfgCentos7主机组的连通性,使用ping模块:
ansible wfgCentos7 -m ping
如下图所示,所有主机均返回pong,表示SSH连接与Ansible通信正常。

接着,我们就可以执行实际的监控命令了。例如,使用command模块(-a参数)批量查看所有主机的磁盘使用情况:
# -a 参数后的引号内可执行任意合法的Linux命令
ansible wfgCentos7 -a "df -h"
执行结果将返回组内每台服务器的磁盘空间信息,从而实现了存储状态的集中采集与监控。

以上便是利用Ansible实现Linux服务器基础监控的完整流程。通过主机清单管理和SSH免密登录,Ansible能够极大地简化对大规模服务器集群的日常运维与状态收集工作。
Ansible github 开源仓库:ansible/ansible