Chapter 3. Installing the client-side tools
Before you deploy the overcloud, you need to determine the configuration settings to apply to each client. Copy the example environment files from the heat template collection and modify the files to suit your environment.
3.1. Setting centralized logging client parameters
For more information, see Enabling centralized logging with Elasticsearch in the Logging, Monitoring, and Troubleshooting guide.
3.2. Setting monitoring client parameters
The monitoring solution collects system information periodically and provides a mechanism to store and monitor the values in a variety of ways using a data collecting agent. Red Hat supports collectd as a collection agent. Collectd-sensubility is an extention of collectd and communicates with Sensu server side through RabbitMQ. You can use Service Telemetry Framework (STF) to store the data, and in turn, monitor systems, find performance bottlenecks, and predict future system load. For more information about Service Telemetry Framework, see the Service Telemetry Framework 1.3 guide.
To configure collectd and collectd-sensubility, complete the following steps:
Create
config.yaml
in your home directory, for example,/home/templates/custom
, and configure theMetricsQdrConnectors
parameter to point to STF server side:MetricsQdrConnectors: - host: qdr-normal-sa-telemetry.apps.remote.tld port: 443 role: inter-router sslProfile: sslProfile verifyHostname: false MetricsQdrSSLProfiles: - name: sslProfile
In the
config.yaml
file, list the plugins you want to use underCollectdExtraPlugins
. You can also provide parameters in theExtraConfig
section. By default, collectd comes with thecpu
,df
,disk
,hugepages
,interface
,load
,memory
,processes
,tcpconns
,unixsock
, anduptime
plugins. You can add additional plugins using theCollectdExtraPlugins
parameter. You can also provide additional configuration information for theCollectdExtraPlugins
using theExtraConfig
option. For example, to enable thevirt
plugin, and configure the connection string and the hostname format, use the following syntax:parameter_defaults: CollectdExtraPlugins: - disk - df - virt ExtraConfig: collectd::plugin::virt::connection: "qemu:///system" collectd::plugin::virt::hostname_format: "hostname uuid"
NoteDo not remove the
unixsock
plugin. Removal results in the permanent marking of the collectd container as unhealthy.Optional: To collect metric and event data through AMQ Interconnect, add the line
MetricsQdrExternalEndpoint: true
to theconfig.yaml
file:parameter_defaults: MetricsQdrExternalEndpoint: true
To enable collectd-sensubility, add the following environment configuration to the
config.yaml
file:parameter_defaults: CollectdEnableSensubility: true # Use this if there is restricted access for your checks by using the sudo command. # The rule will be created in /etc/sudoers.d for sensubility to enable it calling restricted commands via sensubility executor. CollectdSensubilityExecSudoRule: "collectd ALL = NOPASSWD: <some command or ALL for all commands>" # Connection URL to Sensu server side for reporting check results. CollectdSensubilityConnection: "amqp://sensu:sensu@<sensu server side IP>:5672//sensu" # Interval in seconds for sending keepalive messages to Sensu server side. CollectdSensubilityKeepaliveInterval: 20 # Path to temporary directory where the check scripts are created. CollectdSensubilityTmpDir: /var/tmp/collectd-sensubility-checks # Path to shell used for executing check scripts. CollectdSensubilityShellPath: /usr/bin/sh # To improve check execution rate use this parameter and value to change the number of goroutines spawned for executing check scripts. CollectdSensubilityWorkerCount: 2 # JSON-formatted definition of standalone checks to be scheduled on client side. If you need to schedule checks # on overcloud nodes instead of Sensu server, use this parameter. Configuration is compatible with Sensu check definition. # For more information, see https://docs.sensu.io/sensu-core/1.7/reference/checks/#check-definition-specification # There are some configuration options which sensubility ignores such as: extension, publish, cron, stdin, hooks. CollectdSensubilityChecks: example: command: "ping -c1 -W1 8.8.8.8" interval: 30 # The following parameters are used to modify standard, standalone checks for monitoring container health on overcloud nodes. # Do not modify these parameters. # CollectdEnableContainerHealthCheck: true # CollectdContainerHealthCheckCommand: <snip> # CollectdContainerHealthCheckInterval: 10 # The Sensu server side event handler to use for events created by the container health check. # CollectdContainerHealthCheckHandlers: # - handle-container-health-check # CollectdContainerHealthCheckOccurrences: 3 # CollectdContainerHealthCheckRefresh: 90
Deploy the overcloud. Include
config.yaml
,collectd-write-qdr.yaml
, and one of theqdr-*.yaml
files in your overcloud deploy command:$ openstack overcloud deploy -e /home/templates/custom/config.yaml -e tripleo-heat-templates/environments/metrics/collectd-write-qdr.yaml -e tripleo-heat-templates/environments/metrics/qdr-form-controller-mesh.yaml
-
Optional: To enable overcloud RabbitMQ monitoring, include the
collectd-read-rabbitmq.yaml
file in theovercloud deploy
command.
Additional resources
- For more information about the YAML files, see Section 3.5, “YAML files”.
- For more information about collectd plugins, see Section 3.4, “Collectd plugin configurations”.
- For more information about Service Telemetry Framework, see the Service Telemetry Framework 1.3 guide.
3.3. Collecting data through AMQ Interconnect
To subscribe to the available AMQ Interconnect addresses for metric and event data consumption, create an environment file to expose AMQ Interconnect for client connections, and deploy the overcloud.
The Service Telemetry Operator simplifies the deployment of all data ingestion and data storage components for single cloud deployments. To share the data storage domain with multiple clouds, see Configuring multiple clouds in the Service Telemetry Framework 1.3 guide.
It is not possible to switch between QDR mesh mode and QDR edge mode, as used by the Service Telemetry Framework (STF). Additionally, it is not possible to use QDR mesh mode if you enable data collection for STF.
Procedure
-
Log on to the Red Hat OpenStack Platform undercloud as the
stack
user. -
Create a configuration file called
data-collection.yaml
in the/home/stack
directory. To enable external endpoints, add the
MetricsQdrExternalEndpoint: true
parameter to thedata-collection.yaml
file:parameter_defaults: MetricsQdrExternalEndpoint: true
To enable collectd and AMQ Interconnect, add the following files to your Red Hat OpenStack Platform director deployment:
-
the
data-collection.yaml
environment file the
qdr-form-controller-mesh.yaml
file that enables the client side AMQ Interconnect to connect to the external endpointsopenstack overcloud deploy <other arguments> --templates /usr/share/openstack-tripleo-heat-templates \ --environment-file <...other-environment-files...> \ --environment-file /usr/share/openstack-tripleo-heat-templates/environments/metrics/qdr-form-controller-mesh.yaml \ --environment-file /home/stack/data-collection.yaml
-
the
-
Optional: To collect Ceilometer and collectd events, include
ceilometer-write-qdr.yaml
andcollectd-write-qdr.yaml
file in yourovercloud deploy
command. - Deploy the overcloud.
Additional resources
- For more information about the YAML files, see Section 3.5, “YAML files”.
3.4. Collectd plugin configurations
There are many configuration possibilities of Red Hat OpenStack Platform director. You can configure multiple collectd plugins to suit your environment. Each documented plugin has a description and example configuration. Some plugins have a table of metrics that you can query for from Grafana or Prometheus, and a list of options that you can configure, if available.
Additional resources
- To view a complete list of collectd plugin options, see collectd plugins in the Service Telemetry Framework guide.
3.5. YAML files
You can include the following YAML files in your overcloud deploy
command when you configure collectd:
-
collectd-read-rabbitmq.yaml
: Enables and configurespython-collect-rabbitmq
to monitor the overcloud RabbitMQ instance. -
collectd-write-qdr.yaml
: Enables collectd to send telemetry and notification data through AMQ Interconnect. -
qdr-edge-only.yaml
: Enables deployment of AMQ Interconnect. Each overcloud node has one local qdrouterd service running and operating in edge mode. For example, sending received data straight to definedMetricsQdrConnectors
. -
qdr-form-controller-mesh.yaml
: Enables deployment of AMQ Interconnect. Each overcloud node has one local qdrouterd service forming a mesh topology. For example, AMQ Interconnect routers on controllers operate in interior router mode, with connections to definedMetricsQdrConnectors
, and AMQ Interconnect routers on other node types connect in edge mode to the interior routers running on the controllers.
Additional resources
For more information about configuring collectd, see Section 3.2, “Setting monitoring client parameters”.