
매출과 관련된 대역폭, CPU, 메모리 통계와 완전히 연결된 매출 그래프를 표시하는 간단한 모니터링 시스템을 만들려고 합니다. 따라서 5초마다 위젯 1개를 판매한다면 대역폭 등이 특정 임계값을 초과하는지 여부에 따라 달라집니다. 그래서 차트를 만드는 방법을 개발했지만 통계를 얻는 데 시간이 걸렸습니다. 다양한 모니터링 시스템을 사용할 수 있지만 대역폭, CPU 사용량, 초당 1라인의 메모리 사용량만 필요합니다. 모든 인터페이스에서 모든 IP 정보를 얻을 수 있는 Python 스크립트를 만들었습니다. 그러나 한 줄만 출력하는 터미널에서 실행할 수 있는 스크립트가 있는 경우 이를 파일로 전송한 다음 해당 파일에 액세스하여 라이브 차트를 실행할 수 있습니다.
따라서 네트워크의 경우 다음을 사용할 수 있습니다.
$ ifconfig
쉽게 참고할 수 있도록 json 파일로 옮겼습니다.
사용할 수 있는 것:
$ free -m
기억은 파일로 전송할 수도 있을 거라 생각했어요
그런 다음 다음을 사용할 수 있습니다.
$ cat /proc/loadavg
CPU에 연결하고 다시 파이프했습니다.
이 작업을 수행하는 더 쉬운 방법이 있나요? 명령당 한 줄을 받고 Javascript나 HTML5 FileReader를 통해 해당 정보를 그래픽 솔루션으로 쉽게(그리고 더 중요하게는 빠르게) 보낼 수 있도록 하려면 어떻게 해야 할까요?
답변1
원하는 데이터를 집계하는 쉬운 방법은 없다고 생각하지만 여러 명령을 함께 붙여서 어디에서나 출력할 수 있습니다. 예시를 찾는데 시간이 좀 걸렸습니다.
{
printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg)
printf '%s' '"],"net":{'
tail -n+3 /proc/net/dev|awk -F' ' '{
gsub(/:/,"");
printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13
}'|sed 's/,$//'
printf '%s' '},"mem":{'
grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'
printf '%s' '}}'
}
다음과 같이 압축할 수 있습니다.
{ printf '%s' '{"load":["'$(cut -d' ' --output-delimiter='","' -f-3 /proc/loadavg); printf '%s' '"],"net":{'; tail -n+3 /proc/net/dev|awk -F' ' '{ gsub(/:/,""); printf "\"%s\":{\"rxbytes\":\"%s\",\"rxpackets\":\"%s\",\"rxerrs\":\"%s\",\"rxdrop\":\"%s\",\"txbytes\":\"%s\",\"txpackets\":\"%s\",\"txerrs\":\"%s\",\"txdrop\":\"%s\"},",$1,$2,$3,$4,$5,$10,$11,$12,$13 }'|sed 's/,$//'; printf '%s' '},"mem":{'; grep -E '^(MemTotal|MemFree|SwapTotal|SwapFree):' /proc/meminfo|tr 'A-Z' 'a-z'|awk -F' ' '{gsub(/:/,""); printf "\"%s\":\"%s\",",$1,$2}'|sed 's/,$//'; printf '%s' '}}'; }
그러면 다음과 같은 (유효한) JSON이 출력됩니다.
{"load":["0.00","0.01","0.05"],"net":{"lo":{"rxbytes":"2524231953","rxpackets":"1381864","rxerrs":"0","rxdrop":"0","txbytes":"2524231953","txpackets":"1381864","txerrs":"0","txdrop":"0"},"eth0":{"rxbytes":"2093914043","rxpackets":"2859952","rxerrs":"0","rxdrop":"0","txbytes":"1774385937","txpackets":"1485252","txerrs":"0","txdrop":"0"}},"mem":{"memtotal":"1692584","memfree":"20248","swaptotal":"917500","swapfree":"916288"}}
| whatever
그런 다음 컬을 닫은 후 추가하여 무엇이든 파이프 할 수 있습니다 .
답변2
당신은 알고 싶을 수도 있습니다i3 상태. 실제로 이 목적으로 설계된 것은 아니지만 귀하의 요구 사항을 잘 충족할 수 있을 것 같습니다.