grzegorznowak.server_performance_assesment

Ansible 服务器性能评估(角色)

使用 Ansible 了解您的机器/容器/云主机的性能。

在新主机上运行时,这将让您了解基线性能,并判断其是否满足您的目标。

请注意,该项目只是满足我们运维团队的即时需求,但在许多情况下已经足够。 如果您能提供帮助,我们很高兴能够扩展到更多系统和场景。

触发原因

该项目的触发因素是我们云机器表现出的某种随机行为。为了保护提供商的名称,我们将其编码为一个完全不相关且神秘的代号:“鲨鱼”。

鲨鱼擅长快速创建新的云机器,我们称这些机器为磷虾。磷虾的性能在鲨鱼的文档中并没有明确说明,只提到它们有__共享 CPU__。具体来说,文档中没有告诉您可以期待多高的磁盘或内存 IOPS 以及内存吞吐量,或底层虚拟机的 CPU 家族;而且您得到的机器很可能是在性能的下限。

鲨鱼并不在乎创建相同的磷虾,而只关心创造大量的磷虾,因此它会尽可能多地在单个虚拟机上挤入磷虾,直到再也装不下为止,此时用户所看到的性能下降是非常明显的。

作为用户,您关心的仅仅是您所支付的(按小时)每次创建的机器都具有相同的规格和能力。显然,这对您的应用/业务至关重要,而鲨鱼方面官方并没有任何信息告诉您情况会有所不同(除了在使用特定类型的共享磷虾时,官方文档中提到的共享 CPU 空间的波动性 - 但那只是它们提到的 CPU)。

使用案例

该角色旨在允许双向检查。

  1. 首先,您希望在实际配置之前运行它,以确保您的基线与假设一致。如果偏差很大,您可能会选择丢弃磷虾并重新创建。
  2. 然后,您希望按计划运行此功能,或通过特定事件(例如,当您从其他工具看到应用响应时间下降时)触发它,以查看您面临的实际问题是否与基础设施性能不足有关。至少,在您开始责备开发人员推送未优化代码之前,您可以这样做。或者,您可能无论如何都可以这样做,因为我们坚信“尽早发布,遇到问题再优化”的思维游戏。

低级前提

计划是在机器性能能力上建立一套配置阻止的断言,使用几乎没有最少的额外软件。 因此,最终结果可能更多的是一种启发式而不是实际的肯定/否定答案,但作为测试预警系统是完全合适的。

测试

./bootstrap_testing.sh
source testing_env/bin/activate
read -s PASS && ANSIBLE_BECOME_PASS=$PASS molecule verify -s lxd

此时会保持静默,以便您输入 sudo 密码。输入后按回车继续。

使用方式

从 Git 仓库克隆时

将该角色添加到您的 playbook.yml 中,并将参数调整为所需的基线性能。

- name: 验证
  hosts: all
  become: true

  roles:
    - role: ansible-server-performance-assessment
      spa_disk_write_MB_per_s_assertion: 300 [ MB/s 为单位,调整至适合的数值]
      spa_disk_read_MB_per_s_assertion: 300 [ MB/s 为单位,调整至适合的数值]
    
      # 网络基准
      # 感谢 speedtest.net!我从没想过在生产环境中使用你,但现在我们做到了一起。
      spa_speedtest_tmp_file: /tmp/spa_speedtest.out
      spa_downlink_assertion: 100  # 单位为 Mb/s(比特每秒)
      spa_uplink_assertion: 100  # 单位为 Mb/s(比特每秒)
        
      # 内存基准
      spa_memory_speed_assertion: 10000  # 单位为 MB/s(字节每秒)
        
      # CPU 基准
      spa_cpu_event_per_second_assertion: 300  # Sysbench 报告的每秒事件数量

  tags:
    - benchmark
    - never

上述示例将只有在传递 --tags=benchmark 参数给 Ansible 时才会顺利运行 (为了更容易与现有的 playbook 文件合并)。

限制

该角色在非 en 语言环境下效果不佳或根本无法使用,因为某些基准软件的解析依赖于特定词汇。如果有更懂 awk 和正则表达式的人来进行第二轮开发,问题可以得到解决。

关于项目

Keeps server performance in check

安装
ansible-galaxy install grzegorznowak.server_performance_assesment
许可证
Unknown
下载
1.9k
拥有者
Let's solve some more problems, shall we ?