Hướng dẫn cài đặt và sử dụng Cockpit: Quản lý Linux Server tập trung qua giao diện Web

Linux tutorial - IT technology blog
Linux tutorial - IT technology blog

Cuộc gọi đánh thức lúc 2 giờ sáng

Đã 2 giờ sáng, và điện thoại của tôi liên tục rung lên với các cảnh báo từ PagerDuty. Một máy chủ production đang chạm ngưỡng 98% tải CPU, và người dùng đang phàn nàn về việc trang web mất tới 10 giây mới tải xong. Trong cơn ngái ngủ đó, việc chạy các câu lệnh journalctl phức tạp hay vật lộn với kết nối SSH chậm chạp chẳng khác nào làm phẫu thuật bằng một chiếc thìa. Đó chính là lý do tại sao tôi tin dùng Cockpit.

Hãy coi Cockpit như một cửa sổ nhẹ nhàng dựa trên trình duyệt để nhìn vào “linh hồn” máy chủ của bạn. Nó giao tiếp trực tiếp với các API hệ thống và không gây ảnh hưởng đến hiệu năng. Vì sử dụng systemd socket, nó hầu như không tiêu tốn tài nguyên—chỉ khoảng 10-15MB RAM—khi bạn không đăng nhập. Sau khi quản lý hàng chục instance VPS trong vài năm qua, tôi nhận thấy đây là cách nhanh nhất để phát hiện một tiến trình đang chạy quá tải mà không cần gõ một câu lệnh nào.

Bắt đầu: Cài đặt và chạy trong 5 phút

Hầu hết các bản phân phối Linux lớn đều đã tích hợp Cockpit trong kho lưu trữ mặc định. Bạn có thể có một bảng điều khiển đầy đủ chạy trước khi tách cà phê của bạn kịp pha xong.

1. Cài đặt

Trên các hệ thống dựa trên Ubuntu hoặc Debian, hãy chạy:

sudo apt update
sudo apt install cockpit -y

Đối với các bản phân phối dựa trên RHEL như AlmaLinux, Rocky, hoặc Fedora:

sudo dnf install cockpit -y

2. Kích hoạt dịch vụ

Cockpit sẽ ở trạng thái chờ cho đến khi bạn thực sự cần đến nó. Hãy kích hoạt socket để nó lắng nghe các kết nối đến:

sudo systemctl enable --now cockpit.socket

3. Cấu hình Firewall

Cockpit lắng nghe trên cổng 9090 theo mặc định. Bạn cần cho phép lưu lượng truy cập qua cổng đó.

# Cho UFW (Ubuntu/Debian)
sudo ufw allow 9090/tcp

# Cho Firewalld (RHEL/CentOS)
sudo firewall-cmd --permanent --add-service=cockpit
sudo firewall-cmd --reload

Sau khi hoàn tất, hãy trỏ trình duyệt của bạn tới https://your-server-ip:9090. Đăng nhập bằng thông tin xác thực Linux tiêu chuẩn của bạn. Không cần tạo tài khoản người dùng web đặc biệt nào cả.

Khám phá giao diện

Giao diện người dùng (UI) của Cockpit cực kỳ sạch sẽ. Trong khi các bảng điều khiển nặng nề thường cố gắng “tái phát minh bánh xe”, Cockpit chỉ đơn giản là trực quan hóa các thành phần nội tại của Linux mà không thêm các lớp độc quyền phức tạp.

Kiểm tra trạng thái nhanh

Tab ‘Overview’ cung cấp các biểu đồ trực tiếp cho CPU, Bộ nhớ và Network I/O. Trong sự cố lúc 2 giờ sáng mà tôi đã đề cập, các biểu đồ này ngay lập tức chỉ ra một script sao lưu đang ngốn 4GB swap. Tôi không cần phải đoán; dữ liệu đã hiển thị rõ ràng ngay đó với hai màu đỏ và trắng.

Xử lý lỗi Log không còn đau đầu

Phần ‘Logs’ thực chất là một GUI tốc độ cao cho journalctl. Bạn có thể lọc theo mức độ nghiêm trọng—như ‘Errors’ (Lỗi) hoặc ‘Critical’ (Nghiêm trọng)—chỉ với một cú nhấp chuột. Nếu Nginx báo lỗi 502, bạn có thể tìm thấy mốc thời gian cụ thể và stack trace mà không cần cuộn qua một tệp văn bản 50.000 dòng trong terminal.

Quản lý lưu trữ và mạng

Tab ‘Storage‘ là một công cụ mạnh mẽ. Nó cho phép bạn theo dõi tốc độ đọc/ghi đĩa (quan trọng để phát hiện nghẽn cổ chai 100% disk I/O) và quản lý các mảng RAID. Đối với mạng, bạn có thể thấy băng thông thời gian thực trên mỗi interface. Nếu một liên kết vật lý bị ngắt hoặc một bridge hoạt động sai, các chỉ báo trực quan sẽ làm cho vấn đề trở nên hiển nhiên.

Quản lý đa máy chủ

Một trong những bí mật tuyệt vời nhất của Cockpit là khả năng quản lý nhiều máy chủ từ một màn hình duy nhất. Bạn không cần một nút quản lý phức tạp; bạn chỉ cần một instance đóng vai trò “Master”.

Thêm Host từ xa

Đầu tiên, hãy đảm bảo cockpit đã được cài đặt trên máy từ xa. Trên bảng điều khiển chính của bạn, nhấp vào menu thả xuống chuyển đổi host và chọn “Add new host”. Nhập địa chỉ IP, và Cockpit sẽ sử dụng SSH để kết nối. Điều này cho phép bạn nhảy từ web server sang database server chỉ trong vài giây—hoàn hảo để đối chiếu log trong khi toàn bộ trang web bị sập.

Terminal Web thực thụ

Đôi khi bạn chỉ cần CLI. Cockpit bao gồm một terminal tương tác đầy đủ hoạt động ngay cả khi bạn đang ở sau tường lửa của công ty chặn cổng 22 nhưng cho phép 443/9090. Đây là một shell thực thụ, không phải là trình giả lập hạn chế, vì vậy các alias và script của bạn sẽ hoạt động chính xác như mong đợi.

Những bài học kinh nghiệm cho môi trường Production

Chạy một công cụ quản lý dựa trên web trên một máy chủ đang hoạt động đòi hỏi tư duy ưu tiên bảo mật. Đây là cách tôi thắt chặt các instance của mình.

Thay đổi cổng mặc định

Các bot liên tục dò quét cổng 9090. Để giảm bớt nhiễu trong log và các cuộc tấn công tự động, hãy chuyển Cockpit sang một cổng không tiêu chuẩn như 9999. Tạo một file drop-in cho systemd:

sudo mkdir -p /etc/systemd/system/cockpit.socket.d/
sudo nano /etc/systemd/system/cockpit.socket.d/listen.conf

Dán nội dung này vào để xóa mặc định và thiết lập cổng mới:

[Socket]
ListenStream=
ListenStream=9999

Tải lại daemon và khởi động lại socket để áp dụng thay đổi:

sudo systemctl daemon-reload
sudo systemctl restart cockpit.socket

Siết chặt Firewall

Đừng bao giờ để Cockpit mở cho toàn bộ thế giới. Sử dụng firewall để giới hạn quyền truy cập chỉ cho địa chỉ IP nhà hoặc văn phòng cụ thể của bạn. Đối với người dùng UFW, câu lệnh rất đơn giản:

sudo ufw allow from 1.2.3.4 to any port 9090

Cập nhật phần mềm thông minh

Module ‘Software Updates’ của Cockpit rất tuyệt để xem những gì đang chờ xử lý, nhưng đừng chỉ nhấp vào ‘Update All’ một cách mù quáng. Quy tắc vàng của tôi sau khi quản lý hơn 10 máy chủ production là kiểm tra changelog trước. Sử dụng giao diện UI để xác định các bản vá quan trọng, sau đó sử dụng terminal tích hợp để chạy các bản cập nhật có mục tiêu cho các gói rủi ro cao.

Cockpit lấp đầy khoảng cách giữa sức mạnh thô sơ của CLI và sự tiện lợi của giao diện UI hiện đại. Nó sẽ không thay thế terminal của bạn, nhưng nó sẽ giúp các buổi xử lý sự cố đêm muộn bớt mệt mỏi hơn đáng kể. Hãy thử cài đặt một máy ảo (VM) ngay hôm nay và xem nó thay đổi quy trình làm việc của bạn như thế nào.

Share: