- vừa được xem lúc

Cấu hình log cho Haproxy

0 0 63

Người đăng: Bui En

Theo Viblo Asia

Trong bài viết trước đã tìm hiểu cơ bản về cấu hình hệ thống cân bằng tải sử dụng HAproxy. Tại màn hình stats có thể xem các thông số cơ bản của các server. Tuy nhiên để theo dõi thông tin chi tiết về từng kết nối và yêu cầu, có thể ghi log ghi log của Haproxy với việc sử dụng một Syslog server như Rsyslog, Logstash, Fluend... Haproxy cung cấp log rất chi tiết với độ chính xác mili giây vầ tạo ra nhiều thông tin về lưu lượng truy cập vào cơ sở hạ tầng của hệ thống như:

  • Thông tin lưu lượng truy cập: timing data, connections counter, trafic size…
  • Thông tin về các quyết định của HAproxy: content switching, filtering, percistence…
  • Thông tin các request và response: header, status code, payloads… Bài viết này sẽ tìm hiểu về việc cấu hình ghi log của Haprox và đọc thông báo log sử dụng Rsyslog.

1. Cài đặt và cấu hình rsyslog

Cài đặt Rsyslog trên ubuntu: sudo apt-get install –y rsyslog

Thêm cấu hình vào /etc/rsyslog.conf hoặc file mới trong thư muc* /etc/rsyslog.d/haproxy.conf*

 # Collect log with UDP $ModLoad imudp $UDPServerAddress 127.0.0.1 $UDPServerRun 514 # Creating separate log files based on the severity local0.* /var/log/haproxy-traffic.log local0.notice /var/log/haproxy-admin.log

Trong ví dụ này rsyslog lắng nghe địa chỉ looppack 127.0.0.1 trên cổng UDP mặc định 514. Cấu hình này được ghi vào các file log. File được chọn trên mức độ nghiêm trọng được ghi lại:

emerg: Các lỗi như hết bộ mô tả tệp hệ điều hành.

alert: Một số trường hợp hiếm hoi có điều gì đó không mong muốn đã xảy ra, chẳng hạn như không thể lưu phản hồi vào bộ nhớ cache.

crit: Không được sử dụng.

err: Các lỗi như không thể phân tích cú pháp map file, không thể phân tích cú pháp tệp cấu hình HAProxy và khi thao tác trên stick table bị lỗi.

warning: Một số lỗi quan trọng nhưng không nghiêm trọng như không đặt được tiêu đề yêu cầu hoặc không kết nối được với máy chủ định danh DNS.

notice: Các thay đổi đối với trạng thái của máy chủ, chẳng hạn như UP hoặc DOWN hoặc khi máy chủ bị tắt. Các sự kiện khác khi khởi động, chẳng hạn như khởi động proxy và tải mô-đun, ghi log health check…

info: Kết nối TCP và các chi tiết và lỗi HTTP request.

debug: Có thể viết code Lua tùy chỉnh để log lại các debug message.

2. Cấu hình ghi log HAproxy

Cấu hình log trong file HAproxy.conf với chỉ thị log:

global log 127.0.0.1:514 local0 info

Lệnh này hướng dẫn Haproxy gửi log đến Rsyslog server đang lắng nghe tại 127.0.0.1:514 với kiểm soát lượng thông tin ở mức info Để cập nhật trên các proxy khác nhau ( frontend, backend, listen để gửi message đến Syslog server được cấu hình trong defaults với chỉ thị log global:

defaults log global option httplog

Ngoài ra có thể ghi log với mức độ nghiêm trong khác nhau tại các phần như ví dụ sau:

frontend fe_site1 log 127.0.0.1 local0 notice # other configuration frontend fe_site2 log 127.0.0.2 local0 warning # other configuration

3. HAproxy log format

Kiểu ghi log được xác định bởi chế độ proxy đặt trong HAproxy : TCP hoặc HTTP ( mặc định là TCP) Chế độ TCP được thiết lập bằng cách thêm mode tcp. Ngoài ra có thể tạo lại định dạng với thiết lập log-format có dạng:

log -format "% ci:% cp [% t]% ft% b /% s% Tw /% Tc /% Tt% B% ts% ac /% fc /% bc /% sc /% rc% sq /% bq "

Định dạng log TCP trong HAproxy Với mode http cần thêm chỉ thị http option để đảm bảo các request và response HTTP được phân tích chi tiết. Định dạng log với chỉ thị log-format với dạng như sau:

log -format "% ci:% cp [% tr]% ft% b /% s% TR /% Tw /% Tc /% Tr /% Ta% ST% B% CC% CS% tsc% ac /% fc / % bc /% sc /% rc% sq /% bq% hr% hs% {+ Q} r "

4. Proxy

Trong file log được tạo, nội dung được bắt đầu với frontend, backend và server mà request được gửi đến. Ví dụ với cấu hình HAproxy dưới đây, các dòng log mô tả request được định tuyến qua frontend http-in đến backend static và đến serversvr1

frontend http-in bind :80 default_backend static backend static server srv1 192.168.1.10:80 check server srv2 192.168.1.11:80 check

Cấu hình này rất quan trọng khi cần biết nơi gửi request, trong trừng hợp gặp lỗi chỉ ảnh hưởng đến một số server trong hệ thống.

5. Timers

Timers được cung cấp dạnh mili giây và bao gồm các sự kiện xảy ra trong một phiên, trong định dạng TCP mặc định làTw / Tc / Tt, trong HTTP là TR / Tw / Tc / Tr / Ta với ý nghĩa như sau:

  • TR: tổng thời gian nhận request ( chỉ ở mode HTTP)
  • Tw: tổng thời gian dành cho hàng đợi cho 1 khe hết nối
  • Tc: tổng thời gian thiết lập kết nối TCP đến server
  • Tc: thời gian phản hồi của server ( chỉ ở mode HTTP)
  • Ta: tổng thời gian hoạt động cho request HTTP ( chỉ ở mode HTTP)
  • Tt: tổng thời gian phiên TCP, từ thời điểm proxy chấp nhận nod đến thời điểm cả 2 kết thúc đều bị đóng.

6. Counters

Counter cho biết tình trạng của hệ thống khi có request. HAproxy ghi lại 5 bộ đếm cho mỗi kết nối hoặc request dưới dạng: 0/0/0/0/0 như sau:

  • Tổng số kết nối đồng thời trên HAProxy khi phiên được ghi lại.
  • Tổng số kết nối đồng thời được định tuyến qua frontend này khi phiên được ghi lại.
  • Tổng số kết nối đồng thời được chuyển đến kết nối backend này khi phiên được ghi lại.
  • Tổng số kết nối đồng thời vẫn hoạt động trên server nàykhi phiên được ghi lại.
  • Số lần thử lại được thử khi cố gắng kết nối với frontend server.

7. Bật cấu hình HAproxy

Để ghi lại thời gian CPU xử lý request trong HAproxy, có thể thêm chỉ thị profiling.tasks trong global

global profiling.tasks on

Các thông số có thể được ghi lại như sau:

  • date_us: Phần micro giây của ngày.
  • cpu calls: Số lượng lệnh gọi đến tác vụ đang xử lý luồng hoặc yêu cầu hiện tại kể từ khi nó được cấp phát. Nó được đặt lại cho mỗi yêu cầu mới trên cùng một kết nối.
  • cpu_ns_avg: Số nano giây trung bình dành cho mỗi lần gọi tác vụ xử lý luồng hoặc yêu cầu hiện tại.
  • cpu_ns_tot: Tổng số nano giây dành cho mỗi lần gọi tác vụ xử lý luồng hoặc yêu cầu hiện tại.
  • lat_ns_avg: Số nano giây trung bình được sử dụng giữa thời điểm tác vụ xử lý luồng được đánh thức và thời điểm nó được gọi hiệu quả.
  • lat_ns_tot: Tổng số nano giây giữa thời điểm tác vụ xử lý luồng được đánh thức và thời điểm được gọi hiệu quả.

Thêm các thông số này vào file log như sau:

log -format "% {+ Q} r cpu_calls: % [cpu_calls] cpu_ns_tot: % [cpu_ns_tot] cpu_ns_avg: % [cpu_ns_avg] lat_ns_tot: % [lat_ns_tot] lat_ns_avg: % [lat_ns_avg] 

Bình luận

Bài viết tương tự

- vừa được xem lúc

Load Balancing với NGINX

Trong bài viết trước, mình đã hướng dẫn các bạn Cách cấu hình NGINX thành Reverse Proxy. Nhờ có chức năng reverse proxy, mà NGINX còn có thể trở thành load balancing.

0 0 49

- vừa được xem lúc

Tìm hiểu về load balancing

Load Balancer là gì. .

0 0 73

- vừa được xem lúc

[K8S] Phần 6 - Load Balancing trên Kubernetes dùng Haproxy và Nginx-Ingress

Lời tựa. Chào các bạn, tiếp tục công cuộc cài lab.

0 0 161

- vừa được xem lúc

Blog#244: Scaling Horizons: Mastering Load Balancing in System Design Concept

Hi, I'm Tuan, a Full-stack Web Developer from Tokyo . 1. Introduction to Load Balancing. 1.

0 0 22

- vừa được xem lúc

Blog#245: スケールの地平線:ロードバランシングのシステムデザインをマスターする

こんにちは、私はトゥアンと申します。東京からフルスタックWeb開発者です。. 将来の有用で面白い記事を見逃さないように、私のブログをフォローしてください。.

0 0 21

- vừa được xem lúc

Tìm hiểu về Load balancing server với HAproxy

Khái quát về HAproxy. HAproxy là gì.

0 0 57