[Nginx] Cấu hình trang trạng thái Nginx – Nginx status page

Nginx status page, hay có thể gọi nôm na là trang url cung cấp thông tin về trạng thái hoạt động cơ bản của dịch vụ Nginx. Trang trạng thái này sẽ cung cấp dữ liệu realtime về tình hình của Nginx, bản thân mình không ấn tượng với lượng dữ liệu mà trang mặc định trạng thái của Nginx cung cấp.


Yêu cầu

– Dịch vụ Nginx phải được compile cùng với module “HttpSubStatus”. Bạn có thể kiểm tra bằng câu lệnh sau :

# nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module


– Nếu bạn kiểm tra chưa thấy thì bạn sẽ không thể cấu hình kích hoạt trang trạng thái của dịch vụ Nginx. Vậy bạn nên recompile lại dịch vụ Nginx trên hệ thống và kích hoạt module “HttpSubStatus” nếu bạn có nhu cầu muốn sử chức năng module này.


Ví dụ khi compile source Nginx ta thêm module đó :

./configure ... .... --with-http_stub_status_module
make
make install


Cấu hình Nginx Status Page

– Bạn có thể truy cập trang trạng thái thông qua đường dẫn resource phía sau được bạn quy định tên địa chỉ URL.
– Bạn cũng hoàn toàn có thể cấu hình để truy cập thông qua tên miền của 1 Virtual Host hoặc trực tiếp địa chỉ IP của hệ thống bạn đang chạy Nginx.


1. Cấu hình truy cập qua IP 127.0.0.1 hoặc IP public

– Bạn sẽ chọn phần cấu hình block server virtual host default dành cho Nginx, hoặc server block có server_name là 127.0.0.1 trên hệ thống. Ta cũng có thể thêm IP public của hệ thống nếu bạn muốn truy cập qua IP public.
– Ta sẽ cấu hình để truy cập vào URL “ ../nginx_status” nhằm lấy thông tin trạng thái dịch vụ Nginx.
– Bạn có thể thay đổi tên đường dẫn thành cái tên khác như “../trangthai_nginx” hoặc tên gì tuỳ ý bạn.
– Sau cùng bạn sẽ truy cập theo đường dẫn “http://x.x.x.x/nginx_status”.

# vi /etc/nginx/vhost/defaults.conf
server {
         listen 127.0.0.1:80;
          root /var/www/html;
          server_name $hostname 127.0.0.1
          index index.php index.html index.htm ;
          ...
          location /nginx_status {
                   stub_status on;
                   access_log off;
                   allow 127.0.0.1;
                   deny all;
          }
}


Chú thích :

stub_status : cấu hình on để kích hoạt tính năng status page.
allow : để địa chỉ ip mà bạn muốn kiểm soát được phép truy cập. Ở đây mình chỉ cần truy cập từ 127.0.0.1 , không cần người khác truy cập từ ngoài vào link URL.
deny all : chặn các kết nối còn lại tới đường dẫn URL trạng thái Nginx.


2. Cấu hình truy cập qua tên miền

– Phần này đơn giản thôi, bạn chỉ cần thay đổi server_name của server block tương ứng tên miền của bạn và cho phép truy cập từ bên ngoài.
– Lúc này bạn sẽ truy cập theo đường dẫn “http://tenmiencuaban/nginx_status”.

# vi /etc/nginx/vhost/defaults.conf
server {
        listen x.x.x.x:80;
        root /var/www/html;
        server_name cuongquach.com www.cuongquach.com
        index index.php index.html index.htm ;
        ...
        location /nginx_status {
               stub_status on;
               access_log off;
               allow all;
        }
}

Chú thích :
x.x.x.x : là IP public của Server/VPS bạn đang sử dụng để listen web từ bên ngoài vào.


3. Kiểm tra output trạng thái

– Restart lại dịch vụ.

# nginx -s reload

hoặc

# /etc/init.d/nginx restart


– Để kiểm tra bạn sẽ truy cập vào đường dẫn có URL tương ứng ta đã cấu hình trên trình duyệt web nếu có allow truy cập từ bên ngoài hệ thống. Vd :
 http://cuongquach.com/nginx_status

– Trong trường hợp ta chỉ sử dụng 127.0.0.1 truy cập local thì ta có thể kiểm tra bằng chương trình “curl”.

# curl -X GET http://127.0.0.1/nginx_status
Active connections: 11
server accepts handled requests
 488596 488596 983686
Reading: 0 Writing: 6 Waiting: 5


Chú thích nội dung output

+ Active connections : số lượng tất cả kết nối đang mở. Giá trị không tương ứng số lượng người dùng đâu nhé. Vì một người dùng, coi 1 trang (pageviews) có thể mở nhiều kết nối đồng thời đến server để lấy tài nguyên về hiển thị site.
+ Server accepts handled requests
> 9582571 = số lượng kết nối đã tiếp nhận (Accepted connections)
> 9582571 = số lượng kết nối đã xử lý (Handled connections). Thường giá trị 1 và 2 này sẽ giống nhau.
> 21897888 = số lượng request được xử lý (Handles requests)

+ Reading : nginx đang đọc request header
+ Writing : nginx đọc request body, xử lý request hoặc đang gửi nội dung response về lại client.
+ Waiting : các kết nối keepalive , giá trị này là “ active – (reading + writing) “. Giá trị này phụ thuộc vào cấu hình “keepalive-timeout”. Bạn đừng nghĩ giá trị này nếu là con số 0, thì hệ thống đang xử lý kém, nếu giá trị là 0 hoàn toàn thì nó có nhiều khả năng bạn đã cấu hình “keepalive_timeout 0;”


4. Công thức tính số request trên 1 kết nối

Số request trung bình một kết nối = số lượng request được xử lý / số lượng kết nối đã xử lý = 21897888 / 9582571 = 2.28

Như vậy là xong bài hướng dẫn này rồi nhé.

Previous article[VPN] Hướng dẫn cài đặt OpenVPN Client trên CentOS/RHEL 7
Next articleNetdata – Giải pháp giám sát trạng thái hệ thống host-based Linux System
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !