Chapter 22. Monitoring performance by using the metrics RHEL System Role As a system administrator, you can use the metrics RHEL System Role with any Ansible Automation Platform control node to monitor the performance of a system. 22.1. Introduction to the metrics System Role RHEL System Roles is a collection of Ansible roles and modules that provide a consistent configuration interface to remotely manage multiple RHEL systems. The metrics System Role configures performance analysis services for the local system and, optionally, includes a list of remote systems to be monitored by the local system. The metrics System Role enables you to use pcp to monitor your systems performance without having to configure pcp separately, as the set-up and deployment of pcp is handled by the playbook. Table 22.1. metrics system role variables Role variable Description Example usage metrics_monitored_hosts List of remote hosts to be analyzed by the target host. These hosts will have metrics recorded on the target host, so ensure enough disk space exists below /var/log for each host. metrics_monitored_hosts: [" webserver.example.com ", " database.example.com "] metrics_retention_days Configures the number of days for performance data retention before deletion. metrics_retention_days: 14 metrics_graph_service A boolean flag that enables the host to be set up with services for performance data visualization via pcp and grafana . Set to false by default. metrics_graph_service: no metrics_query_service A boolean flag that enables the host to be set up with time series query services for querying recorded pcp metrics via redis . Set to false by default. metrics_query_service: no metrics_provider Specifies which metrics collector to use to provide metrics. Currently, pcp is the only supported metrics provider. metrics_provider: "pcp" metrics_manage_firewall Uses the firewall role to manage port access directly from the metrics role. Set to false by default. metrics_manage_firewall: true metrics_manage_selinux Uses the selinux role to manage port access directly from the metrics role. Set to false by default. metrics_manage_selinux: true Note For details about the parameters used in metrics_connections and additional information about the metrics System Role, see the /usr/share/ansible/roles/rhel-system-roles.metrics/README.md file. 22.2. Using the metrics System Role to monitor your local system with visualization This procedure describes how to use the metrics RHEL System Role to monitor your local system while simultaneously provisioning data visualization via Grafana . Prerequisites The Ansible Core package is installed on the control machine. You have the rhel-system-roles package installed on the machine you want to monitor. Procedure Configure localhost in the /etc/ansible/hosts Ansible inventory by adding the following content to the inventory: Create an Ansible playbook with the following content: Run the Ansible playbook: Note Since the metrics_graph_service boolean is set to value="yes", Grafana is automatically installed and provisioned with pcp added as a data source. Since metrics_manage_firewall and metrics_manage_selinux are both set to true, the metrics role will use the firewall and selinux system roles to manage the ports used by the metrics role. To view visualization of the metrics being collected on your machine, access the grafana web interface as described in Accessing the Grafana web UI . 22.3. Using the metrics System Role to setup a fleet of individual systems to monitor themselves This procedure describes how to use the metrics System Role to set up a fleet of machines to monitor themselves. Prerequisites The Ansible Core package is installed on the control machine. You have the rhel-system-roles package installed on the machine you want to use to run the playbook. You have the SSH connection established. Procedure Add the name or IP of the machines you want to monitor via the playbook to the /etc/ansible/hosts Ansible inventory file under an identifying group name enclosed in brackets: Create an Ansible playbook with the following content: Note Since metrics_manage_firewall and metrics_manage_selinux are both set to true, the metrics role will use the firewall and selinux roles to manage the ports used by the metrics role. Run the Ansible playbook: Where the -k prompt for password to connect to remote system. 22.4. Using the metrics System Role to monitor a fleet of machines centrally via your local machine This procedure describes how to use the metrics System Role to set up your local machine to centrally monitor a fleet of machines while also provisioning visualization of the data via grafana and querying of the data via redis . Prerequisites The Ansible Core package is installed on the control machine. You have the rhel-system-roles package installed on the machine you want to use to run the playbook. Procedure Create an Ansible playbook with the following content: Run the Ansible playbook: Note Since the metrics_graph_service and metrics_query_service booleans are set to value="yes", grafana is automatically installed and provisioned with pcp added as a data source with the pcp data recording indexed into redis , allowing the pcp querying language to be used for complex querying of the data. Since metrics_manage_firewall and metrics_manage_selinux are both set to true, the metrics role will use the firewall and selinux roles to manage the ports used by the metrics role. To view graphical representation of the metrics being collected centrally by your machine and to query the data, access the grafana web interface as described in Accessing the Grafana web UI . 22.5. Setting up authentication while monitoring a system using the metrics System Role PCP supports the scram-sha-256 authentication mechanism through the Simple Authentication Security Layer (SASL) framework. The metrics RHEL System Role automates the steps to setup authentication using the scram-sha-256 authentication mechanism. This procedure describes how to setup authentication using the metrics RHEL System Role. Prerequisites The Ansible Core package is installed on the control machine. You have the rhel-system-roles package installed on the machine you want to use to run the playbook. Procedure Include the following variables in the Ansible playbook you want to setup authentication for: Note Since metrics_manage_firewall and metrics_manage_selinux are both set to true, the metrics role will use the firewall and selinux roles to manage the ports used by the metrics role. Run the Ansible playbook: Verification steps Verify the sasl configuration: ip_adress should be replaced by the IP address of the host. 22.6. Using the metrics System Role to configure and enable metrics collection for SQL Server This procedure describes how to use the metrics RHEL System Role to automate the configuration and enabling of metrics collection for Microsoft SQL Server via pcp on your local system. Prerequisites The Ansible Core package is installed on the control machine. You have the rhel-system-roles package installed on the machine you want to monitor. You have installed Microsoft SQL Server for Red Hat Enterprise Linux and established a 'trusted' connection to an SQL server. See Install SQL Server and create a database on Red Hat . You have installed the Microsoft ODBC driver for SQL Server for Red Hat Enterprise Linux. See Red Hat Enterprise Server and Oracle Linux . Procedure Configure localhost in the /etc/ansible/hosts Ansible inventory by adding the following content to the inventory: Create an Ansible playbook that contains the following content: Note Since metrics_manage_firewall and metrics_manage_selinux are both set to true, the metrics role will use the firewall and selinux roles to manage the ports used by the metrics role. Run the Ansible playbook: Verification steps Use the pcp command to verify that SQL Server PMDA agent (mssql) is loaded and running: Additional resources For more information about using Performance Co-Pilot for Microsoft SQL Server, see this Red Hat Developers Blog post.

Commands:
localhost ansible_connection=local
--- - name: Manage metrics hosts: localhost vars: metrics_graph_service: yes metrics_manage_firewall: true metrics_manage_selinux: true roles: - rhel-system-roles.metrics
ansible-playbook name_of_your_playbook .yml
[remotes] webserver.example.com database.example.com
--- - hosts: remotes vars: metrics_retention_days: 0 metrics_manage_firewall: true metrics_manage_selinux: true roles: - rhel-system-roles.metrics
ansible-playbook name_of_your_playbook .yml -k
--- - hosts: localhost vars: metrics_graph_service: yes metrics_query_service: yes metrics_retention_days: 10 metrics_monitored_hosts: [" database.example.com ", " webserver.example.com "] metrics_manage_firewall: yes metrics_manage_selinux: yes roles: - rhel-system-roles.metrics
ansible-playbook name_of_your_playbook .yml
--- vars: metrics_username: your_username metrics_password: your_password metrics_manage_firewall: true metrics_manage_selinux: true
ansible-playbook name_of_your_playbook .yml
pminfo -f -h "pcp:// ip_adress ?username= your_username " disk.dev.read Password: disk.dev.read inst [0 or "sda"] value 19540
localhost ansible_connection=local
--- - hosts: localhost vars: metrics_from_mssql: true metrics_manage_firewall: true metrics_manage_selinux: true roles: - role: rhel-system-roles.metrics
ansible-playbook name_of_your_playbook .yml
pcp platform: Linux rhel82-2.local 4.18.0-167.el8.x86_64 #1 SMP Sun Dec 15 01:24:23 UTC 2019 x86_64 hardware: 2 cpus, 1 disk, 1 node, 2770MB RAM timezone: PDT+7 services: pmcd pmproxy pmcd: Version 5.0.2-1, 12 agents, 4 clients pmda: root pmcd proc pmproxy xfs linux nfsclient mmv kvm mssql jbd2 dm pmlogger: primary logger: /var/log/pcp/pmlogger/rhel82-2.local/20200326.16.31 pmie: primary engine: /var/log/pcp/pmie/rhel82-2.local/pmie.log