Tự Xây Dựng Dashboard Riêng Cho Doanh Nghiệp: Tại Sao DevOps Và Automation Engineer Cần Hiểu REST API?
Rất nhiều hệ thống hiện đại như Cisco DNA Center, Kubernetes, GitLab, Jenkins, ServiceNow, VMware, Intersight hay các nền tảng Cloud đều cung cấp sẵn giao diện quản trị (dashboard) rất đẹp.
Nhưng thực tế doanh nghiệp thường không muốn nhân viên phải đăng nhập vào 5–10 hệ thống khác nhau chỉ để xem trạng thái hạ tầng.
Giải pháp phổ biến hiện nay là xây dựng Custom Dashboard – một bảng điều khiển riêng tập hợp dữ liệu từ nhiều hệ thống khác nhau thông qua API.
Đây cũng là lý do vì sao REST API trở thành một trong những kỹ năng quan trọng nhất đối với DevOps Engineer, Platform Engineer, Cloud Engineer và Network Automation Engineer.
Dashboard và Back-End Giao Tiếp Với Nhau Như Thế Nào?
Trong kiến trúc ứng dụng hiện đại, phần giao diện người dùng (Front-End) thường không truy cập trực tiếp vào cơ sở dữ liệu.
Thay vào đó, Front-End gửi yêu cầu đến Back-End thông qua API.
Mô hình đơn giản:
Frontend Dashboard → REST API → Backend Service → Database
Khi người dùng nhấn vào một đối tượng trên giao diện, Dashboard sẽ gửi yêu cầu API đến hệ thống phía sau để lấy dữ liệu hoặc cập nhật trạng thái.
REST API Là Gì?
REST (Representational State Transfer) là một phương pháp xây dựng API trên nền giao thức HTTP/HTTPS giúp các thành phần ứng dụng giao tiếp với nhau.
REST trở thành tiêu chuẩn thực tế cho các ứng dụng web nhờ các ưu điểm:
Bất kỳ thiết bị nào có khả năng gửi HTTP Request đều có thể sử dụng REST API:
Các Phương Thức REST API Quan Trọng
REST sử dụng mô hình Request – Response của HTTP.
Các phương thức phổ biến gồm:
GET
Dùng để đọc dữ liệu.
Ví dụ:
GET /users/32
Truy vấn thông tin người dùng có ID là 32.
POST
Tạo dữ liệu mới.
Ví dụ:
POST /users
Tạo một người dùng mới.
PUT
Cập nhật toàn bộ đối tượng.
Ví dụ:
PUT /users/32
PATCH
Cập nhật một phần đối tượng.
Ví dụ:
PATCH /users/32
DELETE
Xóa dữ liệu.
Ví dụ:
DELETE /users/32
Dữ Liệu Được Trao Đổi Như Thế Nào?
Phần lớn REST API hiện nay sử dụng JSON.
Ví dụ phản hồi từ API:
{
"id": 32,
"name": "John Doe",
"email": "john@example.com"
}
Front-End chỉ cần đọc dữ liệu JSON và hiển thị lên màn hình.
Ngược lại, khi người dùng nhập dữ liệu trên giao diện, Dashboard sẽ đóng gói dữ liệu thành JSON rồi gửi lại Back-End bằng POST, PUT hoặc PATCH.
Khi Doanh Nghiệp Muốn Tạo Dashboard Riêng
Đây là tình huống rất phổ biến.
Ví dụ doanh nghiệp đang sử dụng:
Mỗi hệ thống đều có dashboard riêng.
Nhưng ban lãnh đạo muốn một màn hình duy nhất để theo dõi:
Lúc này đội DevOps sẽ xây dựng một Dashboard riêng và tích hợp với các hệ thống thông qua API.
Mô hình này thường được gọi là:
Single Pane of Glass
Tức là một màn hình duy nhất để quan sát toàn bộ hệ thống.
Ví Dụ Thực Tế Với Cisco DNA Center
Cisco DNA Center cung cấp Dashboard quản lý mạng doanh nghiệp tập trung.
Nền tảng này hỗ trợ:
Điều thú vị là dashboard mặc định của DNA Center cũng đang sử dụng chính API của hệ thống để lấy dữ liệu hiển thị.
Do đó nếu muốn tạo dashboard riêng, chúng ta chỉ cần gọi lại các API tương tự.
Northbound API Và Intent API
Trong các hệ thống quản lý mạng hiện đại thường có hai hướng API:
Southbound API
Giao tiếp xuống thiết bị.
Ví dụ:
Northbound API
Cho phép ứng dụng bên ngoài truy cập vào hệ thống.
Trên Cisco DNA Center, Northbound API được gọi là:
Intent API
Intent API cung cấp khả năng điều khiển mạng ở mức mục tiêu kinh doanh (business intent) thay vì phải thao tác trực tiếp trên từng thiết bị.
API này sử dụng:
Xác Thực API Bằng Token
Hầu hết hệ thống hiện nay đều yêu cầu xác thực.
Cisco DNA Center sử dụng cơ chế Access Token.
Bước đầu tiên là lấy token:
POST /dna/system/api/v1/auth/token
Kèm theo:
Nếu thành công hệ thống trả về:
{
"Token": "eyJ0eXA..."
}
Sau đó token được sử dụng trong header:
X-Auth-Token: eyJ0eXA...
cho các API tiếp theo.
Đây là mô hình rất phổ biến hiện nay và cũng xuất hiện trên:
Lấy Inventory Thiết Bị Từ DNA Center
Ví dụ lấy danh sách thiết bị:
GET /dna/intent/api/v1/network-device
Kết quả trả về là JSON chứa:
Ví dụ:
{
"hostname": "cat_9k_1",
"type": "Cisco Catalyst 9300",
"role": "ACCESS",
"softwareVersion": "16.12"
}
Dashboard có thể đọc JSON này và hiển thị dưới dạng:
Tích Hợp API Bằng Python
Trong thế giới Automation, Python gần như là lựa chọn mặc định.
Ví dụ lấy token:
import requests
r = requests.post(
'https://dnac/dna/system/api/v1/auth/token',
auth=('username', 'password')
)
token = r.json()['Token']
Sau đó gọi API:
headers = {
'X-Auth-Token': token
}
r = requests.get(
'https://dnac/dna/intent/api/v1/site-health',
headers=headers
)
Kết quả JSON có thể được:
REST Không Phải Là Lựa Chọn Duy Nhất
Ngoài REST còn nhiều công nghệ khác:
Tuy nhiên REST hiện vẫn là giao diện phổ biến nhất trong các hệ thống Cloud, DevOps và Network Automation.
Điều Mà Automation Engineer Nên Nhận Ra
Nhiều người nghĩ Automation chỉ là viết script cấu hình thiết bị.
Thực tế phần lớn công việc Automation hiện nay là:
Nếu xem Infrastructure as Code là bước đầu tiên của tự động hóa, thì API Integration chính là bước tiếp theo để xây dựng Platform Engineering và AIOps.
Hầu hết các nền tảng hiện đại như Kubernetes, Cisco Catalyst Center (DNA Center), Intersight, GitLab, Jenkins, ServiceNow hay Public Cloud đều xoay quanh API. Người hiểu API sẽ có khả năng kết nối các hệ thống này thành một nền tảng thống nhất, thay vì quản trị từng sản phẩm riêng lẻ.
Nguồn tham khảo: Cisco DevNet ENAUTO, Cisco DNA Center Intent API Documentation.
Rất nhiều hệ thống hiện đại như Cisco DNA Center, Kubernetes, GitLab, Jenkins, ServiceNow, VMware, Intersight hay các nền tảng Cloud đều cung cấp sẵn giao diện quản trị (dashboard) rất đẹp.
Nhưng thực tế doanh nghiệp thường không muốn nhân viên phải đăng nhập vào 5–10 hệ thống khác nhau chỉ để xem trạng thái hạ tầng.
Giải pháp phổ biến hiện nay là xây dựng Custom Dashboard – một bảng điều khiển riêng tập hợp dữ liệu từ nhiều hệ thống khác nhau thông qua API.
Đây cũng là lý do vì sao REST API trở thành một trong những kỹ năng quan trọng nhất đối với DevOps Engineer, Platform Engineer, Cloud Engineer và Network Automation Engineer.
Dashboard và Back-End Giao Tiếp Với Nhau Như Thế Nào?
Trong kiến trúc ứng dụng hiện đại, phần giao diện người dùng (Front-End) thường không truy cập trực tiếp vào cơ sở dữ liệu.
Thay vào đó, Front-End gửi yêu cầu đến Back-End thông qua API.
Mô hình đơn giản:
Frontend Dashboard → REST API → Backend Service → Database
Khi người dùng nhấn vào một đối tượng trên giao diện, Dashboard sẽ gửi yêu cầu API đến hệ thống phía sau để lấy dữ liệu hoặc cập nhật trạng thái.
REST API Là Gì?
REST (Representational State Transfer) là một phương pháp xây dựng API trên nền giao thức HTTP/HTTPS giúp các thành phần ứng dụng giao tiếp với nhau.
REST trở thành tiêu chuẩn thực tế cho các ứng dụng web nhờ các ưu điểm:
- Nhẹ (Lightweight)
- Dễ triển khai
- Không phụ thuộc nền tảng
- Khả năng mở rộng cao
- Hỗ trợ hầu hết ngôn ngữ lập trình
Bất kỳ thiết bị nào có khả năng gửi HTTP Request đều có thể sử dụng REST API:
- Linux
- Windows
- macOS
- Smartphone
- Tablet
- Thiết bị IoT
Các Phương Thức REST API Quan Trọng
REST sử dụng mô hình Request – Response của HTTP.
Các phương thức phổ biến gồm:
GET
Dùng để đọc dữ liệu.
Ví dụ:
GET /users/32
Truy vấn thông tin người dùng có ID là 32.
POST
Tạo dữ liệu mới.
Ví dụ:
POST /users
Tạo một người dùng mới.
PUT
Cập nhật toàn bộ đối tượng.
Ví dụ:
PUT /users/32
PATCH
Cập nhật một phần đối tượng.
Ví dụ:
PATCH /users/32
DELETE
Xóa dữ liệu.
Ví dụ:
DELETE /users/32
Dữ Liệu Được Trao Đổi Như Thế Nào?
Phần lớn REST API hiện nay sử dụng JSON.
Ví dụ phản hồi từ API:
{
"id": 32,
"name": "John Doe",
"email": "john@example.com"
}
Front-End chỉ cần đọc dữ liệu JSON và hiển thị lên màn hình.
Ngược lại, khi người dùng nhập dữ liệu trên giao diện, Dashboard sẽ đóng gói dữ liệu thành JSON rồi gửi lại Back-End bằng POST, PUT hoặc PATCH.
Khi Doanh Nghiệp Muốn Tạo Dashboard Riêng
Đây là tình huống rất phổ biến.
Ví dụ doanh nghiệp đang sử dụng:
- Cisco DNA Center
- VMware
- ServiceNow
- GitLab
- Jenkins
Mỗi hệ thống đều có dashboard riêng.
Nhưng ban lãnh đạo muốn một màn hình duy nhất để theo dõi:
- Tình trạng mạng
- Trạng thái CI/CD
- Ticket sự cố
- Tài nguyên Cloud
- Hiệu năng ứng dụng
Lúc này đội DevOps sẽ xây dựng một Dashboard riêng và tích hợp với các hệ thống thông qua API.
Mô hình này thường được gọi là:
Single Pane of Glass
Tức là một màn hình duy nhất để quan sát toàn bộ hệ thống.
Ví Dụ Thực Tế Với Cisco DNA Center
Cisco DNA Center cung cấp Dashboard quản lý mạng doanh nghiệp tập trung.
Nền tảng này hỗ trợ:
- Thiết kế mạng
- Provisioning
- Policy
- Monitoring
- Assurance
- Automation
Điều thú vị là dashboard mặc định của DNA Center cũng đang sử dụng chính API của hệ thống để lấy dữ liệu hiển thị.
Do đó nếu muốn tạo dashboard riêng, chúng ta chỉ cần gọi lại các API tương tự.
Northbound API Và Intent API
Trong các hệ thống quản lý mạng hiện đại thường có hai hướng API:
Southbound API
Giao tiếp xuống thiết bị.
Ví dụ:
- NETCONF
- RESTCONF
- gNMI
- SNMP
Northbound API
Cho phép ứng dụng bên ngoài truy cập vào hệ thống.
Trên Cisco DNA Center, Northbound API được gọi là:
Intent API
Intent API cung cấp khả năng điều khiển mạng ở mức mục tiêu kinh doanh (business intent) thay vì phải thao tác trực tiếp trên từng thiết bị.
API này sử dụng:
- HTTPS
- JSON
- GET
- POST
- PUT
- DELETE
Xác Thực API Bằng Token
Hầu hết hệ thống hiện nay đều yêu cầu xác thực.
Cisco DNA Center sử dụng cơ chế Access Token.
Bước đầu tiên là lấy token:
POST /dna/system/api/v1/auth/token
Kèm theo:
- Username
- Password
Nếu thành công hệ thống trả về:
{
"Token": "eyJ0eXA..."
}
Sau đó token được sử dụng trong header:
X-Auth-Token: eyJ0eXA...
cho các API tiếp theo.
Đây là mô hình rất phổ biến hiện nay và cũng xuất hiện trên:
- Kubernetes
- GitLab
- ServiceNow
- HashiCorp Vault
- Cisco Intersight
- Public Cloud APIs
Lấy Inventory Thiết Bị Từ DNA Center
Ví dụ lấy danh sách thiết bị:
GET /dna/intent/api/v1/network-device
Kết quả trả về là JSON chứa:
- Hostname
- Model
- Serial Number
- Software Version
- Role
- MAC Address
- Uptime
Ví dụ:
{
"hostname": "cat_9k_1",
"type": "Cisco Catalyst 9300",
"role": "ACCESS",
"softwareVersion": "16.12"
}
Dashboard có thể đọc JSON này và hiển thị dưới dạng:
- Bảng thống kê
- Biểu đồ
- Topology
- Bản đồ mạng
Tích Hợp API Bằng Python
Trong thế giới Automation, Python gần như là lựa chọn mặc định.
Ví dụ lấy token:
import requests
r = requests.post(
'https://dnac/dna/system/api/v1/auth/token',
auth=('username', 'password')
)
token = r.json()['Token']
Sau đó gọi API:
headers = {
'X-Auth-Token': token
}
r = requests.get(
'https://dnac/dna/intent/api/v1/site-health',
headers=headers
)
Kết quả JSON có thể được:
- Lưu vào Database
- Đẩy vào Dashboard
- Gửi sang Grafana
- Phân tích bằng AI Agent
- Tạo báo cáo tự động
REST Không Phải Là Lựa Chọn Duy Nhất
Ngoài REST còn nhiều công nghệ khác:
- gRPC
- SOAP
- CORBA
- RPC Frameworks
Tuy nhiên REST hiện vẫn là giao diện phổ biến nhất trong các hệ thống Cloud, DevOps và Network Automation.
Điều Mà Automation Engineer Nên Nhận Ra
Nhiều người nghĩ Automation chỉ là viết script cấu hình thiết bị.
Thực tế phần lớn công việc Automation hiện nay là:
- Tích hợp hệ thống
- Kết nối API
- Thu thập dữ liệu
- Chuẩn hóa dữ liệu
- Xây dựng Dashboard
- Tự động hóa quy trình vận hành
Nếu xem Infrastructure as Code là bước đầu tiên của tự động hóa, thì API Integration chính là bước tiếp theo để xây dựng Platform Engineering và AIOps.
Hầu hết các nền tảng hiện đại như Kubernetes, Cisco Catalyst Center (DNA Center), Intersight, GitLab, Jenkins, ServiceNow hay Public Cloud đều xoay quanh API. Người hiểu API sẽ có khả năng kết nối các hệ thống này thành một nền tảng thống nhất, thay vì quản trị từng sản phẩm riêng lẻ.
Nguồn tham khảo: Cisco DevNet ENAUTO, Cisco DNA Center Intent API Documentation.