18.2. 使用 metrics RHEL 系统角色,配置带有身份验证的 Performance Co-Pilot
您可以在 Performance Co-Pilot (PCP)中启用身份验证,以便 pmcd
服务和性能指标域代理(PDMA)可以决定是否允许运行监控工具的用户执行操作。已验证身份的用户有可以访问带有敏感信息的指标的权限。另外,某些代理需要身份验证。例如,bpftrace
代理使用身份验证来识别是否允许用户将 bpftrace
脚本加载到内核中来生成指标。
通过使用 metrics
RHEL 系统角色,您可以在多个主机上远程配置带有身份验证的 PCP 。
先决条件
- 您已准备好控制节点和受管节点。
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
将您的敏感变量存储在一个加密文件中:
创建 vault :
$ ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
在
ansible-vault create
命令打开编辑器后,以<key>: <value>
格式输入敏感数据:metrics_usr: <username> metrics_pwd: <password>
- 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 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
文件。验证 playbook 语法:
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
$ ansible-playbook --ask-vault-pass ~/playbook.yml
验证
在安装了
pcp
软件包的主机上,查询需要身份验证的指标:使用您在 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
指标的值。再次运行该命令,但省略用户名,以验证命令是否对未经身份验证的用户失败:
# 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