18.2. 使用 metrics RHEL 系统角色,配置带有身份验证的 Performance Co-Pilot


您可以在 Performance Co-Pilot (PCP)中启用身份验证,以便 pmcd 服务和性能指标域代理(PDMA)可以决定是否允许运行监控工具的用户执行操作。已验证身份的用户有可以访问带有敏感信息的指标的权限。另外,某些代理需要身份验证。例如,bpftrace 代理使用身份验证来识别是否允许用户将 bpftrace 脚本加载到内核中来生成指标。

通过使用 metrics RHEL 系统角色,您可以在多个主机上远程配置带有身份验证的 PCP 。

先决条件

流程

  1. 将您的敏感变量存储在一个加密文件中:

    1. 创建 vault :

      $ ansible-vault create vault.yml
      New Vault password: <vault_password>
      Confirm New Vault password: <vault_password>
    2. ansible-vault create 命令打开编辑器后,以 <key>: <value> 格式输入敏感数据:

      metrics_usr: <username>
      metrics_pwd: <password>
    3. 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
  2. 创建一个包含以下内容的 playbook 文件,如 ~/playbook.yml

    ---
    - name: Monitoring performance metrics
      hosts: managed-node-01.example.com
      tasks:
        - name: Configure Performance Co-Pilot
          ansible.builtin.include_role:
            name: rhel-system-roles.metrics
          vars:
            metrics_retention_days: 14
            metrics_manage_firewall: true
            metrics_manage_selinux: true
    	metrics_username: "{{ metrics_usr }}"
            metrics_password: "{{ metrics_pwd }}"

    示例 playbook 中指定的设置包括以下内容:

    metrics_retention_days: <number>
    设置多少天后 pmlogger_daily systemd 计时器删除旧的 PCP 归档。
    metrics_manage_firewall: <true|false>
    定义角色是否应该在 firewalld 服务中打开所需的端口。如果要远程访问受管节点上的 PCP,请将此变量设置为 true
    metrics_username: <username>
    角色在受管节点本地创建此用户,将凭据添加到 /etc/pcp/passwd.db Simple Authentication and Security Layer(SASL)数据库中,并在 PCP 中配置身份验证。另外,如果您在 playbook 中设置了 metrics_from_bpftrace: true,则 PCP 使用此帐户注册 bpftrace 脚本。

    有关 playbook 中使用的所有变量的详情,请查看控制节点上的 /usr/share/ansible/roles/rhel-system-roles.metrics/README.md 文件。

  3. 验证 playbook 语法:

    $ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml

    请注意,这个命令只验证语法,不会防止错误但有效的配置。

  4. 运行 playbook:

    $ ansible-playbook --ask-vault-pass ~/playbook.yml

验证

  • 在安装了 pcp 软件包的主机上,查询需要身份验证的指标:

    1. 使用您在 playbook 中使用的凭证查询指标:

      # pminfo -fmdt -h pcp://managed-node-01.example.com?username=<user> proc.fd.count
      Password: <password>
      
      proc.fd.count
          inst [844 or "000844 /var/lib/pcp/pmdas/proc/pmdaproc"] value 5

      如果命令成功,它会返回 proc.fd.count 指标的值。

    2. 再次运行该命令,但省略用户名,以验证命令是否对未经身份验证的用户失败:

      # pminfo -fmdt -h pcp://managed-node-01.example.com proc.fd.count
      
      proc.fd.count
      Error: No permission to perform requested operation

其他资源

  • /usr/share/ansible/roles/rhel-system-roles.metrics/README.md 文件
  • /usr/share/doc/rhel-system-roles/metrics/ 目录
  • Ansible vault
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.