Escrito por

Desenvolvedor at QI Tech
Artigo Heloisa Paiva · 3 hr atrás 4m read

Adicionando `nfsiostat` ao SystemPerformance

Já incluído no SystemPerformance

Existem comandos de disco nfs (incluindo nfsiostat) incluídos no SystemPerformance, mas desativados por padrão. Ative-os executando:

$$Enablenfs^SystemPerformance()

Ao fazer isso, os seguintes comandos nfs serão adicionados, por exemplo, no Linux:

  1. /usr/sbin/nfsstat -cn
  2. /usr/sbin/nfsiostat [interval] [count]

Certifique-se de que os comandos estejam instalados e executáveis a partir do SO :)

Isso pode ser desativado posteriormente via $$Disablenfs^SystemPerformance()


Adicionando um comando genérico ao SystemPerformance

Adicionar uma ferramenta de SO arbitrária cria um comando "user" sob ^IRIS.SystemPerformance("cmds","user")

Por exemplo:

%SYS>set ^IRIS.SystemPerformance("cmds","user",$i(^IRIS.SystemPerformance("cmds","user")))=$lb("nfsiostat","/usr/sbin/nfsiostat ","interval"," ","count"," > ")

Verifique os comandos existentes primeiro

Antes de adicionar, vale a pena ver o que já existe para que você entenda a estrutura atual e escolha o nome de perfil correto:

zwrite ^IRIS.SystemPerformance("cmds")

Adicionando nfsiostat com carimbo de data e hora ao SystemPerformance

Use um script para facilitar a implementação.

O script wrapper

Salve como /usr/local/bin/nfsiostat_ts.sh:

#!/bin/bash
# Uso: nfsiostat_ts.sh <intervalo> <contagem>
INTERVAL=${1:-5}
COUNT=${2:-12}

nfsiostat "$INTERVAL" "$COUNT" | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush() }'

Torne-o executável:

chmod +x /usr/local/bin/nfsiostat_ts.sh

Adicionar ao SystemPerformance

set ^IRIS.SystemPerformance("cmds","30mins",$i(^IRIS.SystemPerformance("cmds","30mins"))) = $lb("nfsiostat","/usr/local/bin/nfsiostat_ts.sh ","interval"," ","count","")

A estrutura $lb() agora passa interval e count como $1 e $2 para o script, de modo que o comando executado se torna, por exemplo:

/usr/local/bin/nfsiostat_ts.sh 1 1800

Verifique se parece correto

zwrite ^IRIS.SystemPerformance("cmds","30mins")

Teste o script manualmente primeiro

Antes de executar um perfil completo, teste com uma execução curta:

/usr/local/bin/nfsiostat_ts.sh 5 3

Saída esperada:

2026-03-12 14:30:00 nfs-server:/export mounted on /data:
2026-03-12 14:30:00   op/s  rpc bklog
2026-03-12 14:30:00   19.40  0.00
2026-03-12 14:30:05 nfs-server:/export mounted on /data:
...

Desta forma, os carimbos de data/hora são incorporados diretamente na saída HTML do SystemPerformance para essa seção, e o intervalo/contagem sempre permanecem sincronizados com o perfil que estiver em execução.

NOTA: Eu ainda NÃO adicionei suporte para o formato de carimbo de data/hora ao YASPE. Mas avisarei quando o fizer.


Servidores Não-IRIS

Executando um nfsiostat aprimorado a partir da linha de comando

Por exemplo, para um servidor web sem IRIS instalado. Por exemplo, uma execução de 24 horas. Para que possa ser correspondido com mgstat e vmstat no SystemPerformance.

Atualize o script wrapper para incluir a data no nome do arquivo de log

Em vez de fixar o caminho do log no código, passe-o pelo cron para que a data seja capturada no momento da inicialização:

#!/bin/bash
# Uso: nfsiostat_ts.sh <intervalo> <contagem>
INTERVAL=${1:-5}
COUNT=${2:-17268}

nfsiostat "$INTERVAL" "$COUNT" | awk '{ print strftime("%Y-%m-%d %H:%M:%S"), $0; fflush() }'

O script permanece limpo — o nome do arquivo de log com data é tratado pelo cron.

Entrada no Cron

crontab -e

Adicione:

0 0 * * * /usr/local/bin/nfsiostat_ts.sh 5 17268 > /path/to/logs/nfsiostat_$(date +\%Y\%m\%d).log 2>&1

Isso é executado à meia-noite todos os dias e cria um arquivo de log nomeado, por exemplo:

nfsiostat_20260312.log

O escape \% é necessário no cron — caracteres % sem escape são tratados como quebras de linha pelo cron.

Verifique se a tarefa do cron está agendada

crontab -l

Verifique se o log está sendo gravado após a meia-noite

tail -f /path/to/logs/nfsiostat_$(date +%Y%m%d).log

Opcional: rotação de logs

Se isso for executado diariamente e você quiser manter apenas os logs dos últimos 7 dias:

0 0 * * * /usr/local/bin/nfsiostat_ts.sh 5 17268 > /path/to/logs/nfsiostat_$(date +\%Y\%m\%d).log 2>&1
5 0 * * * find /path/to/logs -name "nfsiostat_*.log" -mtime +7 -delete

A tarefa de limpeza é executada 5 minutos após a meia-noite, depois que o novo arquivo de log foi criado.


Outros posts sobre performance