Analisando métricas de desempenho com o kit de ferramentas de análise Performance Co-Pilot
- O QUE É?
Para fins de monitoramento de desempenho, o SUSE Linux Enterprise Micro inclui uma imagem de contêiner que permite executar o kit de ferramentas de análise Performance Co-Pilot (PCP) em um contêiner.
- POR QUÊ?
Para monitorar o desempenho do sistema. Este artigo apresenta informações sobre como configurar e usar o kit de ferramentas.
- DEDICAÇÃO
O tempo de leitura é de aproximadamente 40 minutos.
- META
Você poderá iniciar o contêiner do PCP com uma configuração adequada às suas necessidades.
- REQUISITOS
Uma instância em execução do SLE Micro.
1 Kit de ferramentas de análise Performance Co-Pilot #
O kit de ferramentas inclui ferramentas para reunir e processar informações de desempenho coletadas em tempo real ou de registros de arquivo do PCP.
Os dados de desempenho são coletados por agentes de domínio de métricas de desempenho e passados para o daemon pmcd
. O daemon coordena a coleta e a exportação das estatísticas de desempenho em resposta às solicitações das ferramentas de monitoramento do PCP. O pmlogger
é usado para registrar as métricas. Para obter os detalhes, consulte PCP
documentation.
1.1 Obtendo a imagem do contêiner do PCP #
A imagem do contêiner do PCP é baseada no contêiner BCI-Init, que utiliza o systemd
usado para gerenciar os serviços do PCP.
Você pode extrair a imagem do contêiner usando o Podman ou pelo console de gerenciamento da Web do Cockpit. Para extrair a imagem usando o Podman, execute o seguinte comando:
#
podman pull registry.suse.com/suse/pcp:latest
Para obter a imagem do contêiner usando o Cockpit, vá para os pcp. Em seguida, selecione e faça download da imagem do registry.suse.com
para o SLE 15 SP4.
2 Executando o contêiner do PCP #
O comando a seguir mostra as opções mínimas que você precisa usar para executar um contêiner do PCP:
#
podman run -d \
--systemd always \
-pHOST_IP:HOST_PORT:CONTAINER_PORT \
-v HOST_DIR:/var/log/pcp/pmlogger \
PCP_CONTAINER_IMAGE
em que as opções têm o seguinte significado:
-
-d
O contêiner é executado em um modo separado sem tty.
-
--systemd always
Executa o contêiner no modo
systemd
. Todos os serviços necessários para execução no contêiner do PCP são iniciados automaticamente pelosystemd
no contêiner.-
--privileged
O contêiner é executado com privilégios estendidos. Use essa opção se o seu sistema tem o SELinux habilitado; do contrário, as métricas coletadas ficarão incompletas.
-
-v HOST_DIR:/var/log/pcp/pmlogger
Cria uma montagem de vinculação para que os arquivos de
pmlogger
sejam gravados em HOST_DIR no host. Por padrão,pmlogger
armazena as métricas coletadas em/var/log/pcp/pmlogger
.- PCP_CONTAINER_IMAGE
É a imagem do contêiner do PCP da qual foi feito o download.
Veja a seguir outras opções úteis do comando podman run
:
-
-p HOST_IP:HOST_PORT:CONTAINER_PORT
Publica portas do contêiner mapeando-as para portas de host. Se você não especificar HOST_IP, as portas serão mapeadas no host local. Se você omitir o valor HOST_PORT, será usado um número de porta aleatório. Por padrão, o daemon
pmcd
escuta em e expõe a PMAPI para receber métricas na porta 44321, portanto, recomendamos mapear essa porta com o mesmo número de porta do host. O daemonpmproxy
escuta em e expõe a PMWEBAPI REST para acessar as métricas na porta 44322 por padrão, portanto, é recomendável mapear essa porta com o mesmo número de porta do host.-
--net host
O contêiner usa a rede do host. Use essa opção para coletar métricas das interfaces de rede do host.
-
-e
A opção permite definir as seguintes variáveis de ambiente:
- PCP_SERVICES
É uma lista de serviços separados por vírgula que serão iniciados pelo
systemd
no contêiner.Os serviços padrão são:
pmcd
,pmie
,pmlogger
,pmproxy
.Você pode usar essa variável para executar um contêiner com uma lista de serviços diferente da lista padrão, por exemplo, apenas com
pmlogger
:#
podman run -d \ --name pmlogger \ --systemd always \ -e PCP_SERVICES=pmlogger \ -v pcp-archives:/var/log/pcp/pmlogger \ registry.suse.com/suse/pcp:latest- HOST_MOUNT
É um caminho dentro do contêiner para a montagem de vinculação do sistema de arquivos raiz do host. O valor padrão não está definido.
- REDIS_SERVERS
Especifica uma conexão com um servidor Redis. Em uma configuração sem cluster, forneça uma lista das especificações de host separadas por vírgulas. Em uma configuração em cluster, especifique qualquer host de cluster individual. Outros hosts no cluster são descobertos automaticamente. O valor padrão é:
localhost:6379
.
Se você precisar usar uma configuração diferente da fornecida pelas variáveis de ambiente, proceda conforme descrito na Seção 3, “Configurando os serviços do PCP”.
2.1 Iniciando o contêiner do PCP automaticamente na inicialização #
Após executar o contêiner do PCP, você poderá configurar o systemd
para iniciar o contêiner no momento da inicialização. Para isso, siga o procedimento abaixo:
Crie um arquivo de unidade para o contêiner usando o comando
podman generate systemd
:#
podman generate systemd --nameCONTAINER_NAME > /etc/systemd/system/container-CONTAINER_NAME.serviceem que CONTAINER_NAME é o nome do contêiner do PCP usado ao executá-lo da imagem do contêiner.
Habilite o serviço em
systemd
:#
systemctl enable container-CONTAINER_NAME
3 Configurando os serviços do PCP #
Todos os serviços executados dentro do contêiner do PCP têm uma configuração padrão que pode não atender às suas necessidades. Se você precisar de uma configuração personalizada que não possa ser coberta pelas variáveis de ambiente, crie arquivos de configuração para os serviços do PCP e transmita-os ao PCP usando uma montagem de vinculação da seguinte maneira:
#
podman run -d \
--nameCONTAINER_NAME \
--systemd always \
-v $HOST_CONFIG:CONTAINER_CONFIG_PATH:z \
-v HOST_LOGS_PATH:/var/log/pcp/pmlogger \
registry.suse.com/suse/pcp:latest
Onde:
- CONTAINER_NAME
É um nome de contêiner opcional.
- HOST_CONFIG
É um caminho absoluto para a configuração criada na máquina host. Você pode escolher qualquer nome de arquivo desejado.
- CONTAINER_CONFIG_PATH
É um caminho absoluto para um arquivo de configuração específico dentro do contêiner. Cada arquivo de configuração disponível está descrito em mais detalhes nas seções correspondentes.
- HOST_LOGS_PATH
É um diretório que deve ser uma montagem de vinculação com os registros do contêiner.
Por exemplo, um contêiner chamado pcp
, com o arquivo de configuração pmcd
na máquina host e o diretório pcp-archives
para os registros na máquina host, é executado pelo seguinte comando:
#
podman run -d \
--name pcp \
--systemd always \
-v $(pwd)/pcp-archives:/var/log/pcp/pmlogger \
-v $(pwd)/pmcd:/etc/sysconfig/pmcd \
registry.suse.com/suse/pcp:latest
3.1 Configuração personalizada do daemon pmcd
#
A configuração do daemon pmcd
é armazenada no arquivo /etc/sysconfig/pmcd
. O arquivo armazena variáveis de ambiente que modificam o comportamento do daemon pmcd
.
Você pode adicionar as seguintes variáveis ao arquivo /etc/sysconfig/pmcd
para configurar o daemon pmcd
:
- PMCD_LOCAL
Define se o host remoto pode se conectar ao daemon
pmcd
. Se definido como 0, as conexões remotas com o daemon serão permitidas. Se definido como 1, o daemon escutará apenas no host local. O valor padrão é 0.- PMCD_MAXPENDING
Define a contagem máxima de conexões pendentes com o agente. O valor padrão é 5.
- PMCD_ROOT_AGENT
Se o
pmdaroot
estiver habilitado (o valor estiver definido como 1), a adição de um novo PDMA não acionará a reinicialização de outros PMDAs. Se opmdaroot
não estiver habilitado, opmcd
exigirá a reinicialização de todos os PMDAs quando um novo PMDA for adicionado. O valor padrão é 1.- PMCD_RESTART_AGENTS
Se definido como 1, o daemon
pmcd
tentará reiniciar qualquer PMDA encerrado. Habilite essa opção apenas se você tiver habilitadopmdaroot
, pois o própriopmcd
não tem privilégios para reiniciar o PMDA.- PMCD_WAIT_TIMEOUT
Define o tempo máximo em segundos que o
pmcd
pode aguardar para aceitar uma conexão. Após esse período, a conexão será relatada como falha. O valor padrão é 60.- PCP_NSS_INIT_MODE
Define o modo no qual o
pmcd
inicializa o banco de dados do certificado NSS quando são usadas conexões seguras. O valor padrão éreadonly
. Você pode definir o modo comoreadwrite
; mas, se a inicialização falhar, o valor padrão será usado como fallback.
Veja a seguir um exemplo:
PMCD_LOCAL=0 PMCD_MAXPENDING=5 PMCD_ROOT_AGENT=1 PMCD_RESTART_AGENTS=1 PMCD_WAIT_TIMEOUT=70 PCP_NSS_INIT_MODE=readwrite
3.2 Configuração personalizada do pmlogger
#
A configuração personalizada para o pmlogger
é armazenada nos seguintes arquivos de configuração:
/etc/sysconfig/pmlogger
/etc/pcp/pmlogger/control.d/local
3.2.1 O arquivo /etc/sysconfig/pmlogger
#
Você pode usar os seguintes atributos para configurar o pmlogger
:
- PMLOGGER_LOCAL
Define se o
pmlogger
permite conexões de hosts remotos. Se definido como 1, opmlogger
permitirá conexões apenas de um host local.- PMLOGGER_MAXPENDING
Define a contagem máxima de conexões pendentes. O valor padrão é 5.
- PMLOGGER_INTERVAL
Define o intervalo de amostragem padrão usado pelo
pmlogger
. O valor padrão é 60 s. Lembre-se de que esse valor pode ser substituído pela linha de comandopmlogger
.- PMLOGGER_CHECK_SKIP_LOGCONF
Definir essa opção como sim desabilita uma nova geração e a verificação da configuração do
pmlogger
se a configuração dopmlogger
vier depmlogconf
. O comportamento padrão é gerar novamente os arquivos de configuração e verificar se há mudanças sempre quepmlogger
for iniciado.
Veja a seguir um exemplo:
PMLOGGER_LOCAL=1 PMLOGGER_MAXPENDING=5 PMLOGGER_INTERVAL=10 PMLOGGER_CHECK_SKIP_LOGCONF=yes
3.2.2 O arquivo /etc/pcp/pmlogger/control.d/local
#
O arquivo /etc/pcp/pmlogger/control.d/local
armazena as especificações do host, as métricas que devem ser registradas, a frequência de registro (o padrão é 24 horas) e as opções de pmlogger
. Por exemplo:
# === VARIABLE ASSIGNMENTS === # # DO NOT REMOVE OR EDIT THE FOLLOWING LINE $version=1.1 # Uncomment one of the lines below to enable/disable compression behaviour # that is different to the pmlogger_daily default. # Value is days before compressing archives, 0 is immediate compression, # "never" or "forever" suppresses compression. # #$PCP_COMPRESSAFTER=0 #$PCP_COMPRESSAFTER=3 #$PCP_COMPRESSAFTER=never # === LOGGER CONTROL SPECIFICATIONS === # #Host P? S? directory args # local primary logger LOCALHOSTNAME y n PCP_ARCHIVE_DIR/LOCALHOSTNAME -r -T24h10m -c config.default -v 100Mb
Se você executar o pmlogger
em um contêiner em uma máquina diferente daquela que executa o pmcd
(um cliente), mude a seguinte linha para apontar para o cliente:
# local primary logger CLIENT_HOSTNAME y n PCP_ARCHIVE_DIR/CLIENT_HOSTNAME -r -T24h10m -c config.default -v 100Mb
Por exemplo, para o nome de host slemicro_1
, a linha deve ter a seguinte aparência:
# local primary logger slemicro_1 y n PCP_ARCHIVE_DIR/slemicro_1 -r -T24h10m -c config.default -v 100Mb
4 Gerenciando métricas do PCP #
4.1 Listando métricas do PCP #
De dentro do contêiner, você pode usar o comando pminfo
para listar métricas. Por exemplo, para listar todas as métricas de desempenho disponíveis, execute:
#
pminfo
Você pode listar um grupo de métricas relacionadas especificando o prefixo de métricas:
#
pminfoMETRIC_PREFIX
Por exemplo, para listar todas as métricas relacionadas ao kernel, use:
#
pminfo disk
disk.dev.r_await
disk.dm.await
disk.dm.r_await
disk.md.await
disk.md.r_await
...
Você também pode especificar strings adicionais para restringir a lista de métricas, por exemplo:
#
piminfo disk.dev
disk.dev.read
disk.dev.write
disk.dev.total
disk.dev.blkread
disk.dev.blkwrite
disk.dev.blktotal
...
Para obter o texto de ajuda online de uma métrica específica, use a opção -t
seguida da métrica, por exemplo:
#
pminfo -t kernel.cpu.util.user
kernel.cpu.util.user [percentage of user time across all CPUs, including guest CPU time]
Para exibir um texto de descrição de uma métrica específica, use a opção -T
seguida da métrica, por exemplo:
#
pminfo -T kernel.cpu.util.user
Help:
percentage of user time across all CPUs, including guest CPU time
4.2 Verificando métricas locais #
Após iniciar o contêiner do PCP, você poderá verificar se as métricas estão sendo registradas corretamente executando o seguinte comando dentro do contêiner:
#
pcp
Performance Co-Pilot configuration on localhost:
platform: Linux localhost 5.3.18-150300.59.68-default #1 SMP Wed May 4 11:29:09 UTC 2022 (ea30951) x86_64
hardware: 1 cpu, 1 disk, 1 node, 1726MB RAM
timezone: UTC
services: pmcd pmproxy
pmcd: Version 5.2.2-1, 9 agents, 4 clients
pmda: root pmcd proc pmproxy xfs linux mmv kvm jbd2
pmlogger: primary logger: /var/log/pcp/pmlogger/localhost/20220607.09.24
pmie: primary engine: /var/log/pcp/pmie/localhost/pmie.log
Agora verifique se os registros foram gravados em um destino apropriado:
#
lsPATH_TO_PMLOGGER_LOGS
em que PATH_TO_PMLOGGER_LOGS deve ser /var/log/pcp/pmlogger/localhost/
neste caso.
4.3 Gravando métricas de sistemas remotos #
Você pode implantar contêineres de coletores que coletam métricas de sistemas remotos diferentes daqueles em que os contêineres do pmlogger
são executados. Cada sistema de coletor remoto precisa do daemon pmcd
e de um conjunto de pmda. Para implantar vários coletores com um sistema de monitoramento centralizado, faça o seguinte:
Em cada sistema do qual você deseja coletar métricas (clientes), execute um contêiner com o daemon
pmcd
:#
podman run -d \ --name pcp-pmcd \ --privileged \ --net host \ --systemd always \ -e PCP_SERVICES=pmcd \ -e HOST_MOUNT=/host \ -v /:/host:ro,rslave \ registry.suse.com/suse/pcp:latestNo sistema de monitoramento, crie um arquivo de configuração do
pmlogger
para cada clientecontrol.CLIENT
com o seguinte conteúdo:$version=1.1 CLIENT_HOSTNAME n n PCP_ARCHIVE_DIR/CLIENT -N -r -T24h10m -c config.default -v 100Mb
Lembre-se de que o CLIENT_HOSTNAME deve ser resolvido no DNS. Você pode usar endereços IP ou nomes de domínio completos e qualificados (FQDN, Fully Qualified Domain Names).
No sistema de monitoramento, crie um diretório para cada cliente para armazenar os registros feitos:
#
mkdir /root/pcp-archives/CLIENTPor exemplo, para
slemicro_1
:#
mkdir /root/pcp-archives/slemicro_1No sistema de monitoramento, execute um contêiner com
pmlogger
para cada cliente:#
podman run -d \ --name pcp-pmlogger-CLIENT \ --systemd always \ -e PCP_SERVICES=pmlogger \ -v /root/pcp-archives/CLIENT:/var/log/pcp/pmlogger:z \ -v $(pwd)/control.CLIENT:/etc/pcp/pmlogger/control.d/local:z \ registry.suse.com/suse/pcp:latestPor exemplo, para um cliente chamado
slemicro_1
:#
podman run -d \ --name pcp-pmlogger-slemicro_1 \ --systemd always \ -e PCP_SERVICES=pmlogger \ -v /root/pcp-archives:/var/log/pcp/pmlogger:z \ -v $(pwd)/control.slemicro_1:/etc/pcp/pmlogger/control.d/local:z \ registry.suse.com/suse/pcp:latestNotaA segunda montagem de vinculação aponta para o arquivo de configuração criado no Passo 2 e substitui a configuração padrão do
pmlogger
. Se você não criar essa montagem de vinculação, opmlogger
usará o arquivo padrão/etc/pcp/pmlogger/control.d/local
, e o registro dos clientes falhará porque a configuração padrão aponta para um host local. Para obter detalhes sobre o arquivo de configuração, consulte a Seção 3.2.2, “O arquivo/etc/pcp/pmlogger/control.d/local
”.Para verificar se a coleção de registros está funcionando apropriadamente, execute:
#
ls -l pcp-archives/CLIENT/CLIENTPor exemplo:
#
ls -l pcp-archives/slemicro_1/slemicro_1 total 1076 -rw-r--r--. 1 systemd-network systemd-network 876372 Jun 8 11:24 20220608.10.58.0 -rw-r--r--. 1 systemd-network systemd-network 312 Jun 8 11:22 20220608.10.58.index -rw-r--r--. 1 systemd-network systemd-network 184486 Jun 8 10:58 20220608.10.58.meta -rw-r--r--. 1 systemd-network systemd-network 246 Jun 8 10:58 Latest -rw-r--r--. 1 systemd-network systemd-network 24595 Jun 8 10:58 pmlogger.log
5 Informações legais #
Copyright © 2006-2025 SUSE LLC e colaboradores. Todos os direitos reservados.
Permissão concedida para copiar, distribuir e/ou modificar este documento sob os termos da Licença GNU de Documentação Livre, Versão 1.2 ou (por sua opção) versão 1.3; com a Seção Invariante sendo estas informações de copyright e a licença. Uma cópia da versão 1.2 da licença está incluída na seção intitulada “GNU Free Documentation License” (Licença GNU de Documentação Livre).
Para ver as marcas registradas da SUSE, visite https://www.suse.com/company/legal/. Todas as marcas comerciais de terceiros pertencem a seus respectivos proprietários. Os símbolos de marca registrada (®, ™ etc.) indicam marcas registradas da SUSE e de suas afiliadas. Os asteriscos (*) indicam marcas registradas de terceiros.
Todas as informações deste manual foram compiladas com a maior atenção possível aos detalhes. Entretanto, isso não garante uma precisão absoluta. A SUSE LLC, suas afiliadas, os autores ou tradutores não serão responsáveis por possíveis erros nem pelas consequências resultantes de tais erros.