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:
/usr/sbin/nfsstat -cn/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.