16.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
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
ansible-vault create命令打开编辑器后,以<key>: <value>格式输入敏感数据:metrics_usr: <username> metrics_pwd: <password>
metrics_usr: <username> metrics_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存更改,并关闭编辑器。Ansible 加密 vault 中的数据。
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例 playbook 中指定的设置包括如下:
metrics_retention_days: <number>-
设置多少天后
pmlogger_dailysystemd 计时器删除旧的 PCP 归档。 metrics_manage_firewall: <true|false>-
定义角色是否应该在
firewalld服务中打开所需的端口。如果要远程访问受管节点上的 PCP,请将此变量设置为true。 metrics_username: <username>-
角色在受管节点本地创建此用户,将凭证添加到
/etc/pcp/passwd.dbSimple 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
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,这个命令只验证语法,不能防止错误的、但有效的配置。
运行 playbook:
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
在安装了
pcp软件包的主机上,查询一个需要身份验证的指标:使用您在 playbook 中使用的凭证查询指标:
pminfo -fmdt -h pcp://managed-node-01.example.com?username=<user> proc.fd.count
# 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 5Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果命令成功,它会返回
proc.fd.count指标的值。再次运行命令,但省略用户名,以验证命令是否对未经身份验证的用户失败:
pminfo -fmdt -h pcp://managed-node-01.example.com proc.fd.count
# pminfo -fmdt -h pcp://managed-node-01.example.com proc.fd.count proc.fd.count Error: No permission to perform requested operationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
下一步