Mục đích tài liệu

“Tài liệu hướng dẫn hướng dẫn xử lý sự cố liên quan đến Performance của FortiGate” được sử dụng trong việc troubleshoot nhằm:

  • Hướng dẫn người quản trị cách thức thu tập thông tin liên quan đến Performance của FortiGate.
  • Hướng dẫn người quản trị cách thức xử lí sự cố liên quan đến Performance của FortiGate

Nội dung tài liệu

Tài liệu gồm 2 phần chính:

  • Hướng dẫn thu thập thông tin liên quan đến performance của FortiGate.
  • Hướng dẫn cấu hình, xử lí sự cố về performance của FortiGate.

Đối tượng tài liệu

Đối tượng sử dụng tài liệu là người quản trị thiết bị tường lửa FortiGate.

 

 

1. Thu tập thông tin

Thiết lập để sử dụng Putty nhằm lưu lại tất cả output của lệnh vào file

 

Step 1: 

Sử dụng phần mềm Putty để SSH vào thiết bị FortiGate

 

Step 2:

Chọn Session | Logging

 

 

Step 3:

Kết quả 

 

 

IMG_256

Ta thấy rằng có 1 file log được tạo ra trên desktop hay các vị trí mà ta đã chỉ định. File log chứa toàn thông tin về các lệnh ta đã nhập vào cũng như output của các lệnh đó.

Sử dụng CLI ( dòng lệnh ) để thu thập thông tin

 

Khi ta vào mục Log and Report, mục Event, ta nhận được thông tin log như sau

 

date=2017-08-15 time=20:00:09 logid="0100040705" type="event" subtype="system" level="notice" vd="root" eventtime=1565835609989942202 tz="-0400" logdesc="CPU usage statistics" action="cpu-usage" cpu=93 msg="CPU usage reaches: 93"

 

Tuy nhiên, các log hiển thị trên GUI chỉ cho biết CPU đang cao bao nhiêu, không chỉ ra process nào đang chạy và sử dụng bao nhiêu. Để có thông số chính xác hiệu năng sử dụng tổng thể và của từng process, ta cần sử dụng CLI.

 

Việc thu thập log này rất quan trọng để kiểm tra và mở ticket với TAC.

Các câu lệnh ta cần thực hiện trên CLI để thu thập log liên quan đến Performance

 

Phần này dành cho các quản trị viên có quyền super_admin. Các quản trị viên với các loại quyền khác có thể không thể thực hiện tất cả các tác vụ trong phần này.

 

#config global (nếu có vdom)

#get system status

#get sys perf status

#diag hard sysinfo shm

#diag sys top 5 40 (nhấn "shift+m" và chờ 10 giây, nhấn "shift+p" và chờ 10 giây, sau đó nhấn "q" để dừng câu lệnh sys top)

#diag sys top-summary '-s mem -i 5 -n 20' (kết quả theo memory, chờ 60 giây, sau đó nhấn "q" để dừng lệnh sys top-summary)

#diag sys flash list

#diag hard sysinfo memory

#diag sys session full-stat

#diag hardware sysinfo slab

#diag hardware deviceinfo disk

#get system auto-update versions

#fnsysctl ps

#diag debug crashlog read

 

Note: Các lệnh bôi đen đã bao gồm trong câu lệnh execute tac report (chi tiết bên dưới)
 

TAC (Technical Assistance Center) report

 

Câu lệnh ‘execute tac report’ có thể được dùng để thu thập các thông tin phục vụ cho việc chuẩn đoán vấn đề trên FortiGate

 

TAC report sẽ thu thập các thông tin hữu ích như sau:

  • Serial number
  • Firmware version
  • FortiGuard updates state
  • Memory and CPU usage
  • Global configuration
  • Hardware features
  • Interface errors
  • Traffic statistics
  • HA diagnostics
  • Process crash log


Các bước thực hiện

 

Quá trình sử dụng các câu lệnh bên dưới để thu thập log vào đúng thời điểm vấn đề đang diễn ra. 

 

Step 1: 

Sử dụng phần mềm Putty để mở 2 SSH session vào thiết bị FortiGate

 

( tham khảo: Thiết lập để sử dụng Putty nhằm lưu lại tất cả output của lệnh vào file )

 

SSH1: 

IMG_256

SSH2:

IMG_256

Step 2:

 

SSH1

Thực hiện lệnh:

#config global (nếu có vdom)

execute tac report

Step 3:

SSH2

 

Thực hiện các lệnh:

 

#config global (nếu có vdom)

 

diag sys top 5 40 (nhấn "shift+m" và chờ 10 giây, nhấn "shift+p" và chờ 10 giây, sau đó nhấn "q" để dừng câu lệnh sys top)

 

diag sys top-summary '-s mem -i 5 -n 20' (kết quả theo memory, chờ 60 giây, sau đó nhấn "q" để dừng lệnh sys top-summary)

 

diag sys session full-stat

 

diag hardware sysinfo slab

 

diag hardware deviceinfo disk

 

fnsysctl ps

 

 

 

2. Xử lí sự cố 

Nếu ta triển khai quá nhiều tính năng trên FortiOS cùng một lúc, tài nguyên CPU của FortiGate bị quá mức sẽ dẫn đến các sự cố liên quan đến kết nối như rớt gói tin…

 

Các tính năng sử dụng nhiều CPU như:

 

  • VPN high-level encryption
  • Scan toàn bộ traffic
  • Lưu log toàn bộ traffic và gói tin
  • Dashboard widgets 

 

Dưới đây là một số best practices, có thể áp dụng để làm giảm mức sử dụng CPU của bạn, ngay cả khi FortiGate không gặp phải tình trạng sử dụng CPU cao. Lưu ý rằng nếu thông tin sau hướng dẫn bạn tắt một tính năng mà ta cần, hãy bỏ qua phần hướng dẫn đó.

Tránh sử dụng các GUI widget cần sử dụng nhiều tài nguyên

 

Ví dụ điển hình là Top Sessions widget. Các widget này thường xuyên kiểm tra hệ thống để lấy thông tin hiển thị trên GUI, do đó tiêu tốn CPU và các tài nguyên khác.

 

Lập lịch update antivirus, IPS và firmware tránh giờ cao điểm. 

 

Các loại update này thường không sử dụng nhiều CPU, nhưng có thể làm gián đoạn traffic trong thời gian ngắn.

 

Kiểm tra log levels và các event nào được lưu lại. 

 

Có các mức độ (severity) để lưu log.

Ta có thể xem xét việc nâng lên 1 level để giảm số lượng log lại.

 

 

Levels

Description

0 - Emergency

The system has become unstable.

1 - Alert

Immediate action is required.

2 - Critical

Functionality is affected.

3 - Error

An error condition exists and functionality could be affected.

4 - Warning

Functionality could be affected.

5 - Notification

Information about normal events.

6 - Information

General information about system operations.

 

Mặc định log severity level là INFORMATION

 

Thay đổi severity bằng câu lệnh sau:

 

config log memory filter

set severity information   <= ==  thay đổi severity ở đây          

end

 

Sau khi đã thay đổi, ta có thể kiểm tra thông qua CLI:

 

#get log memory filter

severity              : information

forward-traffic               : enable

local-traffic        : disable

multicast-traffic            : enable

sniffer-traffic                 : enable

anomaly            : enable

netscan-discovery          : enable

netscan-vulnerability    : enable

voip                   : enable

 

Ngoài ra, nếu các event nào mà ta không cần monitor, hãy remove khỏi danh sách.

 

 

Fortinet khuyến khích lưu log trên FortiCloud để tránh việc sử dụng quá mức CPU.

 

Việc lưu log vào memory sẽ sử dụng hết tài nguyên nhanh chóng.

 

Nếu disk gần đầy, ta hãy chuyển log ra khỏi disk, ví dụ Syslog Server. Khi disk gần đầy, thiết bị sẽ tiêu tốn rất nhiều tài nguyên để tìm không gian trống và sắp xếp lại các file.

 

Tắt tất cả sniffer và traces

 

diagnose debug reset 

diagnose debug disable

 

Giảm session timers để đóng các unused sessions nhanh hơn

 

config system global

set tcp-halfclose-timer 30            [ default 120s ]

set tcp-halfopen-timer 30             [ default 60s ]

set tcp-timewait-timer 0   [ default 120s ]

set udp-idle-timer 60                    [ default 120s ]

end

 

Nếu Fortiguard licence đã hết hạn, ta nên disable AV và IPS push updates

 

 


Conserve Mode

 

Conserve mode là cơ chế bảo vệ, được kích hoạt khi FortiGate không còn đủ memory để xử lí traffic. Content ispection ( đặc biệt là proxy-based ) đường dùng nhiều memory hơn. Nói cách khác, khi tính năng antivirus được bật lên, FortiGate sẽ sử dụng nhiều RAM hơn, điều này có thể khiến FortiGate vào conserve mode.

 

Ta có thể xác định antivirus hay các process khác đang dùng nhiều RAM bằng cách dùng câu lệnh “diagnose sys top”

 

Các log ta có thể gặp: 

 

  • System has entered kernel conserve mode
  • System has activated session fail mode
  • System has reached connection limit
  • System has deactivated session fail mode

 

Disable các tính năng không dùng đến

 

  • Logging vào Memory ( tham khảo mục 4 của Troubleshooting High CPU )
  • DHCP Server, DNS Server
  • Các IPS signature

 

Giảm maximum file size khi thực hiện kiểm tra (mặc định là 10MB)

 

config firewall profile-protocol-options

edit <profile names>

config http | ftp | pop3 | smtp | imap

      set oversize-limit 3
end

 

Thông thường virus size < 1MB

 

 

Reduce memory dùng cho cache như FortiGuard và DNS

 

config system fortiguard

set webfilter-cache-ttl 500

set antispam-cache-ttl 500
end
 
config system dns
set dns-cache-ttl 300
end
 

Giảm session-ttl 

 

config system global

set tcp-halfclose-timer 30            [ default 120s ]

set tcp-halfopen-timer 30             [ default 60s ]

set tcp-timewait-timer 0   [ default 120s ]

set udp-idle-timer 60                    [ default 120s ]

end

 

 

Tài liệu tham khảo

  1. Technical Note: How to create a log file of a session using PuTTY 

https://kb.fortinet.com/kb/documentLink.do?externalID=FD36043

 

  1. Download Debug Logs and 'execute tac report'

https://kb.fortinet.com/kb/documentLink.do?externalID=FD40892

 

  1. Technical Tip: No memory logs seen in FortiGate

https://kb.fortinet.com/kb/documentLink.do?externalID=FD36487

 

  1. FortiOS 6.4.0 Administration Guide

https://docs.fortinet.com/document/fortigate/6.4.0/administration-guide/954635/getting-started