ngxtop – 리눅스에서 실시간으로 Nginx 로그 파일 모니터링 방법

ngxtop는 nginx 서버의 실시간 top과 유사한 모니터링 도구로서 무료 오픈 소스이며 간단하고 유연하며 완전히 구성 가능하며 사용하기 쉽습니다. 이 도구는 nginx 액세스 로그를 구문 분석하여 데이터를 수집하고 nginx 서버의 유용한 메트릭을 표시하여 웹 서버를 실시간으로 지켜보도록 도와줍니다. 또한 원격 서버에서 Apache 로그를 구문 분석할 수도 있습니다.

리눅스에 ngxtop 설치 및 사용 방법

ngxtop을 설치하려면 먼저 Linux에 PIP를 설치해야 합니다. 시스템에 pip이 설치되면 다음 명령을 사용하여 ngxtop을 설치할 수 있습니다.

$ sudo pip install ngxtop

nginx 서버 요청 모니터링

ngxtop을 설치했다면 아무 인수 없이 실행하는 것이 가장 쉬운 방법입니다. 이렇게 하면 /var/log/nginx/access.log를 구문 분석하고 기본적으로 실시간으로 실행됩니다(접근 로그에 새로운 라인이 기록될 때마다 감시).

$ sudo ngxtop
샘플 출력
running for 411 seconds, 64332 records processed: 156.60 req/sec

Summary:
|   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|---------+------------------+-------+-------+-------+-------|
|   64332 |         2775.251 | 61262 |  2994 |    71 |     5 |

Detailed:
| request_path                             |   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|------------------------------------------+---------+------------------+-------+-------+-------+-------|
| /abc/xyz/xxxx                            |   20946 |          434.693 | 20935 |     0 |    11 |     0 |
| /xxxxx.json                              |    5633 |         1483.723 |  5633 |     0 |     0 |     0 |
| /xxxxx/xxx/xxxxxxxxxxxxx                 |    3629 |         6835.499 |  3626 |     0 |     3 |     0 |
| /xxxxx/xxx/xxxxxxxx                      |    3627 |        15971.885 |  3623 |     0 |     4 |     0 |
| /xxxxx/xxx/xxxxxxx                       |    3624 |         7830.236 |  3621 |     0 |     3 |     0 |
| /static/js/minified/utils.min.js         |    3031 |         1781.155 |  2104 |   927 |     0 |     0 |
| /static/js/minified/xxxxxxx.min.v1.js    |    2889 |         2210.235 |  2068 |   821 |     0 |     0 |
| /static/tracking/js/xxxxxxxx.js          |    2594 |         1325.681 |  1927 |   667 |     0 |     0 |
| /xxxxx/xxx.html                          |    2521 |          573.597 |  2520 |     0 |     1 |     0 |
| /xxxxx/xxxx.json                         |    1840 |          800.542 |  1839 |     0 |     1 |     0 |

종료하려면 [Ctrl + C]를 누르세요.

다른 액세스 로그 구문 분석

다음과 같이 -l 플래그를 사용하여 특정 웹 사이트나 웹 앱의 다른 액세스 로그를 구문 분석할 수 있습니다.

$ sudo ngxtop -l /var/log/nginx/site1/access.log

클라이언트의 상위 소스 IP 나열

다음 명령은 사이트에 접근하는 클라이언트의 상위 소스 IP를 나열합니다.

$ sudo ngxtop remote_addr -l  /var/log/nginx/site1/access.log
running for 20 seconds, 3215 records processed: 159.62 req/sec

top remote_addr
| remote_addr     |   count |
|-----------------+---------|
| 118.173.177.161 |      20 |
| 110.78.145.3    |      16 |
| 171.7.153.7     |      16 |
| 180.183.67.155  |      16 |
| 183.89.65.9     |      16 |
| 202.28.182.5    |      16 |
| 1.47.170.12     |      15 |
| 119.46.184.2    |      15 |
| 125.26.135.219  |      15 |
| 125.26.213.203  |      15 |

구문

로그 형식을 log_format 지시사항에 따라 사용하기 위해서는 -f 옵션을 如下과 같이 사용합니다.

$ sudo ngxtop -f main -l /var/log/nginx/site1/access.log

apache 로그 파일을 远程 서버에서 일반적인 형식으로 해석하기 위해서는 다음과 같은 명령어를 사용하시오 (사용자 이름과 원격 서버 IP를 지정하세요).

$ ssh user@remote_server tail -f /var/log/apache2/access.log | ngxtop -f common
running for 20 seconds, 1068 records processed: 53.01 req/sec

Summary:
|   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|---------+------------------+-------+-------+-------+-------|
|    1068 |        28026.763 |  1029 |    20 |    19 |     0 |

Detailed:
| request_path                             |   count |   avg_bytes_sent |   2xx |   3xx |   4xx |   5xx |
|------------------------------------------+---------+------------------+-------+-------+-------+-------|
| /xxxxxxxxxx                              |     199 |        55150.402 |   199 |     0 |     0 |     0 |
| /xxxxxxxx/xxxxx                          |     167 |        47591.826 |   167 |     0 |     0 |     0 |
| /xxxxxxxxxxxxx/xxxxxx                    |      25 |         7432.200 |    25 |     0 |     0 |     0 |
| /xxxx/xxxxx/x/xxxxxxxxxxxxx/xxxxxxx      |      22 |          698.727 |    22 |     0 |     0 |     0 |
| /xxxx/xxxxx/x/xxxxxxxxxxxxx/xxxxxx       |      19 |         7431.632 |    19 |     0 |     0 |     0 |
| /xxxxx/xxxxx/                            |      18 |         7840.889 |    18 |     0 |     0 |     0 |
| /xxxxxxxx/xxxxxxxxxxxxxxxxx              |      15 |         7356.000 |    15 |     0 |     0 |     0 |
| /xxxxxxxxxxx/xxxxxxxx                    |      15 |         9978.800 |    15 |     0 |     0 |     0 |
| /xxxxx/                                  |      14 |            0.000 |     0 |    14 |     0 |     0 |
| /xxxxxxxxxx/xxxxxxxx/xxxxx               |      13 |        20530.154 |    13 |     0 |     0 |     0 |

더 많은 사용 옵션을 보고하고자 하면, 다음과 같은 명령어를 사용하여 ngxtop 도움말을 보십시오.

$ ngxtop -h  

ngxtop Github 저장소: https://github.com/lebinh/ngxtop

이제 여기까지이며, 이 記事에서는 리눅스 시스템에서 ngxtop을 설치하고 사용하는 方法을 설명했습니다. 아래 댓글 폼을 사용하여 문제가 있거나 가이드에 추가적으로 생각이 있으면 알려주십시오. 또한, 유사한 도구를 발견했다면 알려주시면 감사드립니다.

Source:
https://www.tecmint.com/ngxtop-monitor-nginx-log-files-in-real-time-in-linux/