优秀的编程知识分享平台

网站首页 > 技术文章 正文

如何使用Ansible批量收集服务器状态信息和资源使用状况

nanyue 2024-09-20 21:55:19 技术文章 3 ℃

#头条创作挑战赛#

1)收集服务器系统信息:

# playbook.yml
---
- name: Collect system facts
  hosts: servers
  gather_facts: yes

  tasks:
    - name: Gather system facts
      debug:
        var: ansible_facts

这个示例使用gather_facts设置为yes来收集服务器的系统信息,包括操作系统版本、内核版本、CPU和内存信息等。然后使用debug模块来打印收集到的信息。

2)收集服务器硬盘使用状况:

# playbook.yml
---
- name: Collect disk usage
  hosts: servers

  tasks:
    - name: Gather disk usage
      command: df -h
      register: disk_usage

    - name: Print disk usage
      debug:
        var: disk_usage.stdout_lines

这个示例使用command模块执行df -h命令来获取服务器硬盘使用状况,并将输出结果保存到disk_usage变量中。然后使用debug模块打印硬盘使用状况。

3)收集服务器内存使用状况:

# playbook.yml
---
- name: Collect memory usage
  hosts: servers

  tasks:
    - name: Gather memory usage
      command: free -m
      register: memory_usage

    - name: Print memory usage
      debug:
        var: memory_usage.stdout_lines

这个示例使用command模块执行free -m命令来获取服务器内存使用状况,并将输出结果保存到memory_usage变量中。然后使用debug模块打印内存使用状况。

4)收集服务器CPU使用状况:

# playbook.yml
---
- name: Collect CPU usage
  hosts: servers

  tasks:
    - name: Gather CPU usage
      command: top -bn1 | grep "Cpu(s)"
      register: cpu_usage

    - name: Print CPU usage
      debug:
        var: cpu_usage.stdout_lines

这个示例使用command模块执行top -bn1 | grep "Cpu(s)"命令来获取服务器CPU使用状况,并将输出结果保存到cpu_usage变量中。然后使用debug模块打印CPU使用状况。

5)收集服务器网络接口信息:

# playbook.yml
---
- name: Collect network interface info
  hosts: servers

  tasks:
    - name: Gather network interface info
      command: ifconfig
      register: network_info

    - name: Print network interface info
      debug:
        var: network_info.stdout_lines

这个示例使用command模块执行ifconfig命令来获取服务器网络接口信息,并将输出结果保存到network_info变量中。然后使用debug模块打印网络接口信息。以上示例中,hosts字段指定了要收集信息的服务器,可以是单个服务器或服务器组。register字段用于保存命令执行结果的变量。debug模块用于打印收集到的信息。根据需要可以修改命令和任务来收集其他信息。

下面列举一个相对完整的示例:

---
- name: Collect server status and resource usage
  hosts: servers
  gather_facts: yes  # 收集服务器的事实信息

  tasks:
    - name: Get hostname
      debug:
        msg: "Hostname is {{ ansible_hostname }}"  # 打印服务器的主机名

    - name: Get CPU information
      debug:
        msg: "CPU model is {{ ansible_processor | first }}"  # 打印CPU型号

    - name: Get memory information
      debug:
        msg: "Total memory is {{ ansible_memtotal_mb }} MB"  # 打印内存总量

    - name: Get disk usage
      ansible.builtin.shell: df -h
      register: disk_usage_output  # 执行shell命令获取磁盘使用情况,并将输出保存到变量中

    - name: Print disk usage
      debug:
        var: disk_usage_output.stdout_lines  # 打印磁盘使用情况的输出

    - name: Get network interfaces
      ansible.builtin.shell: ip a
      register: network_interfaces_output  # 执行shell命令获取网络接口信息,并将输出保存到变量中

    - name: Print network interfaces
      debug:
        var: network_interfaces_output.stdout_lines  # 打印网络接口信息的输出

    - name: Get running processes
      ansible.builtin.shell: ps aux
      register: processes_output  # 执行shell命令获取正在运行的进程信息,并将输出保存到变量中

    - name: Print running processes
      debug:
        var: processes_output.stdout_lines  # 打印正在运行的进程信息的输出

    - name: Get system uptime
      ansible.builtin.command: uptime
      register: uptime_output  # 执行命令获取系统运行时间信息,并将输出保存到变量中

    - name: Print system uptime
      debug:
        var: uptime_output.stdout  # 打印系统运行时间信息的输出

    - name: Get logged-in users
      ansible.builtin.command: who
      register: users_output  # 执行命令获取已登录用户信息,并将输出保存到变量中

    - name: Print logged-in users
      debug:
        var: users_output.stdout_lines  # 打印已登录用户信息的输出

    - name: Get system load average
      ansible.builtin.setup:
        filter: ansible_load_avg  # 使用setup模块获取系统负载信息

    - name: Print system load average
      debug:
        var: ansible_facts.ansible_load_avg  # 打印系统负载信息

这个示例Playbook使用了Ansible的一些常用模块和变量,包括debug模块用于打印信息、ansible.builtin.shell模块和ansible.builtin.command模块用于执行Shell命令和命令、ansible.builtin.setup模块用于收集服务器的事实信息。同时,也展示了如何使用register关键字将命令执行结果保存到变量中,并使用debug模块打印出来。根据实际需求,你可以根据这个示例进行修改和扩展。

Tags:

最近发表
标签列表