Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP SNMP dùng để quản lý mạng, nghĩa là nó được thiết kế để chạy trên nền TCP/IP và quản lý các thiết bị có nối mạng TCP/IP.. Các thiế
Trang 1Đồ án tốt nghiệp Mục lục
MỤC LỤC
LỜI CẢM ƠN i
MỤC LỤC ii
DANH MỤC TỪ VIẾT TẮT iv
DANH MỤC HÌNH VẼ v
LỜI NÓI ĐẦU 1
CHƯƠNG I: TỔNG QUAN VỀ GIAO THỨC SNMP 2
1.1 Hai phương thức giám sát Poll và Alert 2
1.1.1 Phương thức Poll 2
1.1.2 Phương thức Alert 2
1.2 Giới thiệu giao thức SNMP 3
1.2.1 Ưu điểm trong thiết kế của SNMP 4
1.2.2 Nhược điểm của SNMP 4
1.2.3 Các phiên bản của SNMP 4
1.3 Điều hành SNMP 5
1.3.1 Các thành phần trong SNMP 5
1.3.2 Bộ phận quản lý (manager) 5
1.3.3 Agent 6
1.3.4 Cơ sở thông tin quản lý - MIB 6
1.3.5 Các lệnh cơ bản trong SNMP 7
1.4 Quản lí liên lạc giữa management với các agent 9
1.5 Cơ chế vận chuyển thông tin giữa management và agent 9
1.6 Bảo vệ truyền thông liên lạc giữa management và các agent khỏi sự cố 9
1.7 Các phương thức của SNMP 10
1.7.1 GetRequest 11
1.7.2 GetNextRequest 11
1.7.3 SetRequest 11
1.7.4 GetResponse 12
1.7.5 Trap 12
Trang 2Đồ án tốt nghiệp Mục lục
1.8 Các cơ chế bảo mật cho SNMP 14
1.8.1 Community string 14
1.8.2 View 15
1.8.3 SNMP access control list 15
1.9 Cấu trúc bản tin SNMP 16
1.10 Kết luận chương 1……… 16
CHƯƠNG II: XÂY DỰNG HỆ THỐNG GIÁM SÁT, QUẢN TRỊ MẠNG BẰNG MÃ NGUỒN MỞ DỰA TRÊN GIAO THỨC SNMP 17
2.1 Mã nguồn mở là gì, lợi ích của mã nguồn mở 17
2.2 Mô hình tổng quan 20
2.2.1 Telegraf 20
2.2.2 InfluxDB 24
2.2.3 Grafana 28
2.3 Kết luận chương 2………41
CHƯƠNG III: THỰC HIỆN MÔ PHỎNG 42
3.1 Xây dựng môi trường mô phỏng 42
3.1.1 Cài đặt Vmware tạo Server ảo và phần mềm Eve-ng 42
3.1.2 Xây dựng mô hình lap trên Vmware 47
3.2 Tiến hành thiết lập hệ thống giám sát 47
3.2.1 Thiết lập trên firewall 48
3.2.2 Cài đặt influxDB trên Server 50
3.2.3 Cài đặt telegraf trên Server 52
3.2.4 Cài đặt grafana trên Server 58
3.2.5 Thiết kế Dashborad 60
3.3 Kết luận chương 3……….66
KẾT LUẬN 68
TÀI LIỆU THAM KHẢO 69
Trang 3Đồ án tốt nghiệp Danh mục từ viết tắt
DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Nghĩa Tiếng Anh Nghĩa Tiếng Việt
ACL Access control list Danh sách điều khiển truy cập
API Application Programming Interface Giao diện lập trình ứng dụng
MIB Management information base Quản lý dữ liệu cơ sở
OID Objects Identity Định danh tên đối tượng
PDU Protocol Data Unit Đơn gị dữ liệu sử dụng giao thức
SNMP Simple Network Management
Protocol
Giao thức quản lý mạng đơn giản
SMTP Simple Mail Transfer Protocol Giao thức truyền tải thư điện tử
đơn giản TSDB Time series database Cơ sở dữ liệu chuỗi thời gian
Trang 4Đồ án tốt nghiệp Danh mục hình vẽ
Hình 1 1: Minh họa cơ chế Poll 2
Hình 1 2:Minh họa cơ chế Alert 3
Hình 1 3: Mô hình giao thức hoạt động SNMP 8
Hình 1 4: Hoạt động của giao thức SNMP 8
Hình 1 5: Hình minh họa các phương thức SNMPv1 14
Hình 1 6: Cấu trúc bản tin SNMP 16
Hình 2 1: Mô hình tổng quan hệ thống gián sát bằng mã nguồn mở 20
Hình 2 2: Mô hình TICK stack 20
Hình 2 3: Bảng dữ liệu mẫu trong InfluxDB 25
Hình 2 4: Bảng thể hiện chính sách lưu trữ ứng với các chuỗi thu thập dữ liệu 26
Hình 2 5:Giao diện đăng nhập vào Grafana 31
Hình 2 6: Giao diện sau khi đăng nhập vào Grafana 31
Hình 2 7: Bảng điền thông số vào Data source 32
Hình 2 8: Thông báo thiết lập hoàn tất 33
Hình 2 9: Giao diện thiết lập bảng tính Dashboard 33
Hình 2 10: Giao diện thiết lập thông số cho đồ thị hiển thị băng thông trên các interface của router 34
Hình 2 11: Kết quả thu được 35
Hình 2 12: Thiết lập cảnh báo 36
Hình 2 13: Thiết lập nội dung cảnh báo 37
Hình 2 14: Lựa chọn để thiết lập kênh cảnh báo 37
Hình 2 15: Lựa chọn để thêm kênh cảnh báo 38
Hình 2 16: Thiết lập kênh cảnh báo email cho Grafana 38
Hình 2 17: Các dịch vụ cảnh báo được Grafana hỗ trợ 39
Hình 2 18: Thiết lập SMTP trên cấu hình Grafana 39
Hình 2 19: Dashboard được chia sẻ trên trang chủ của Grafana 40
Hình 2 20: Ví dụ tạo 1 Dashboard mới với API 40
Hình 3 1: Mô hình mô phỏng 42
Trang 5Đồ án tốt nghiệp Danh mục hình vẽ
Hình 3 2: Xây dựng môi trường mô phỏng bước 1……… ………43
Hình 3 3: Xây dựng môi trường mô phỏng bước 2 43
Hình 3 4: Xây dựng môi trường mô phỏng bước 2 44
Hình 3 5: Xây dựng môi trường mô phỏng bước 2 44
Hình 3 6: Xây dựng môi trường mô phỏng bước 3 45
Hình 3 7: Hoàn thành cài đặt server ảo 45
Hình 3 8: Xây dựng môi trường mô phỏng bước 4 46
Hình 3 9: Hoàn thành cài đặt cho máy ảo EVE-ng 46
Hình 3.10: Xây dựng mô hình mô phỏng trên EVE-ng bước 1 47
Hình 3.11: Xây dựng mô hình mô phỏng trên EVE-ng bước 2 47
Hình 3.12: Kiểm tra cấu hình trên Firewall……… ……….………43
Hình 3.13: File cấu hình InfluxDB 52
Hình 3.14: File cấu hình Telegraf 54
Hình 3.15: Tra cứu thông tin về OID 57
Hình 3 16: Kiểm tra port dịch vụ của Grafana 59
Hình 3.17: Dashboard monitor Firewall trên Grafana 60
Hình 3.18: Thiết lập thời gian up time 61
Hình 3.19: Thiết lập số kết nốt vpn 61
Hình 3.20: Thiết lập số số connections 62
Hình 3.21: Show các connections trên Firewall 62
Hình 3.22: Thiết lập thống số về bộ nhớ 63
Hình 3.23: Thiết lập thống số về các gói tin đi qua firewall 63
Hình 3.24: Thiết lập thống số về tỉ lệ cpu đang sử dụng 64
Hình 3.25: Thiết lập thống số về băng thông trên từng interface 64
Hình 3.26: Thiết lập cảnh báo trạng thái interface……….……….……… 65
Hình 3.27: Thiết lập thống số về smtp trên grafana 66
Hình 3.28: Mail cảnh báo của Grafana bắn về hòm thư 66
Trang 6Đồ án tốt nghiệp Lời nói đầu
LỜI NÓI ĐẦU
Việc triển khai một hệ thống mạng là một công việc khó nhưng để vận hành hệ thống mạng một cách ổn định và đạt hiệu quả cao thì càng khó chính vì thế việc giám sát và quản trị rất thiết yếu Ngày nay mã nguồn mở ngày càng phổ biến và gần gũi dễ dàng tiếp cận
Với mục đích và ý nghĩa trên, em đã lựa chọn đề tài “Xây dựng hệ thống giám sát, quản trị mạng bằng mã nguồn mở” để làm đồ án tốt nghiệp Nội dung của đồ án chia làm ba chương:
✓ Chương 1: Tổng quan về giao thức SNMP
Cung cấp những khái niệm cơ bản nhất về giao thức quản lí mạng SNMP, các thành phần, chức năng và phương thức hoạt động của giao thức
✓ Chương 2: Xây dựng mô hình tổng quan hệ thống giám sát, quản trị mạng bằng mã nguồn mở dựa trên giao thức SNMP
Giới thiệu mô hình làm việc liên kết giữa các chương trình mã nguồn mở như grafana, telegraf, influxdb trong giám sát, quản trị mạng
✓ Chương 3: Chương 3: Thực hiệu mô phỏng
Thực hiện trên môi trường máy ảo eve-ng và Vmware
Trong quá trình làm đồ án chắc chắn không tránh khỏi thiếu sót Mong các thầy
cô và các bạn đóng góp ý kiến để đồ án được hoàn thiện hơn Xin chân thành cảm ơn!
Hà Nội, tháng 12 năm 2018
Sinh viên
Đặng Tuấn Linh
Trang 7Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
CHƯƠNG I: TỔNG QUAN VỀ GIAO THỨC SNMP
1.1 Hai phương thức giám sát Poll và Alert
Đây là hai phương thức cơ bản của các kỹ thuật giám sát hệ thống, nhiều phần mềm và giao thức được xây dựng dựa trên hai phương thức này, trong đó có SNMP Việc hiểu rõ hoạt động của Poll & Alert và ưu nhược điểm của chúng sẽ giúp chúng ta
dễ dàng tìm hiểu nguyên tắc hoạt động của các giao thức hay phần mềm giám sát Hoặc nếu muốn tự phát triển một cơ chế giám sát của riêng mình thì nó cũng là cơ sở
để giúp chúng ta xây dựng một nguyên tắc hoạt động đúng đắn
1.1.1 Phương thức Poll
Nguyên tắc hoạt động: Trung tâm giám sát (manager) sẽ thường xuyên hỏi thông tin của thiết bị cần giám sát (device) Nếu Manager không hỏi thì Device không trả lời, nếu Manager hỏi thì Device phải trả lời Bằng cách hỏi thường xuyên, Manager
sẽ luôn cập nhật được thông tin mới nhất từ Device Ví dụ : Người quản lý cần theo dõi khi nào thợ làm xong việc Anh ta cứ thường xuyên hỏi người thợ “Anh đã làm xong chưa ?”, và người thợ sẽ trả lời “Xong” hoặc “Chưa”
Hình 1 1: Minh họa cơ chế Poll
1.1.2 Phương thức Alert
Nguyên tắc hoạt động: Mỗi khi trong Device xảy ra một sự kiện (event) nào đó thì Device sẽ tự động gửi thông báo cho Manager, gọi là Alert Manager không hỏi thông tin định kỳ từ Device Ví dụ: Người quản lý cần theo dõi tình hình làm việc của thợ, anh ta yêu cầu người thợ thông báo cho mình khi có vấn đề gì đó xảy ra Người thợ sẽ thông báo các sự kiện đại loại như “Tiến độ đã hoàn thành 50%”, “Mất điện lúc 10h”, “Có điện lại lúc 11h”, “Mới có tai nạn xảy ra”
Trang 8Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Hình 1 2:Minh họa cơ chế Alert
1.2 Giới thiệu giao thức SNMP
SNMP là “giao thức quản lý mạng đơn giản”, dịch từ cụm từ “Simple Network Management Protocol”
Thế nào là giao thức quản lý mạng đơn giản ? Giao thức là một tập hợp các thủ tục mà các bên tham gia cần tuân theo để có thể giao tiếp được với nhau Trong lĩnh vực thông tin, một giao thức quy định cấu trúc, định dạng (format) của dòng dữ liệu trao đổi với nhau và quy định trình tự, thủ tục để trao đổi dòng dữ liệu đó Nếu một bên tham gia gửi dữ liệu không đúng định dạng hoặc không theo trình tự thì các bên khác sẽ không hiểu hoặc từ chối trao đổi thông tin SNMP là một giao thức, do đó nó
có những quy định riêng mà các thành phần trong mạng phải tuân theo
Một thiết bị hiểu được và hoạt động tuân theo giao thức SNMP được gọi là “có
hỗ trợ SNMP” (SNMP supported) hoặc “tương thích SNMP” (SNMP compartible)
SNMP dùng để quản lý, nghĩa là có thể theo dõi, có thể lấy thông tin, có thể được thông báo, và có thể tác động để hệ thống hoạt động như ý muốn VD một số khả năng của phần mềm SNMP :
➢ Theo dõi tốc độ đường truyền của một router, biết được tổng số byte đã truyền/nhận
➢ Lấy thông tin máy chủ đang có bao nhiêu ổ cứng, mỗi ổ cứng còn trống bao nhiêu
➢ Tự động nhận cảnh báo khi switch có một port bị down
➢ Điều khiển tắt (shutdown) các port trên switch
Trang 9Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
SNMP dùng để quản lý mạng, nghĩa là nó được thiết kế để chạy trên nền TCP/IP và quản lý các thiết bị có nối mạng TCP/IP Các thiết bị mạng không nhất thiết phải là máy tính mà có thể là switch, router, firewall, adsl gateway, và cả một số phần mềm cho phép quản trị bằng SNMP Giả sử bạn có một cái máy giặt có thể nối mạng
1.2.1 Ưu điểm trong thiết kế của SNMP
SNMP được thiết kế để đơn giản hóa quá trình quản lý các thành phần trong mạng Nhờ đó các phần mềm SNMP có thể được phát triển nhanh và tốn ít chi phí
SNMP được thiết kế để có thể mở rộng các chức năng quản lý, giám sát Không
có giới hạn rằng SNMP có thể quản lý được cái gì Khi có một thiết bị mới với các thuộc tính, tính năng mới thì người ta có thể thiết kế “custom” SNMP để phục vụ cho riêng mình (trong chương 3 tác giả sẽ trình bày file cấu trúc dữ liệu của SNMP)
SNMP được thiết kế để có thể hoạt động độc lập với các kiến trúc và cơ chế của các thiết bị hỗ trợ SNMP
Các thiết bị khác nhau có hoạt động khác nhau nhưng đáp ứng SNMP là giống nhau VD bạn có thể dùng 1 phần mềm để theo dõi dung lượng ổ cứng còn trống của các máy chủ chạy HĐH Windows và Linux; trong khi nếu không dùng SNMP mà làm trực tiếp trên các HĐH này thì bạn phải thực hiện theo các cách khác nhau
1.2.2 Nhược điểm của SNMP
➢ Làm tăng lưu lượng đáng kể
➢ Không cho phép phân bổ tác động trực tiếp cho các đại lý
➢ Không có sự điều khiển tổng hợp của nhiều nơi quản lý
1.2.3 Các phiên bản của SNMP
SNMP có 4 phiên bản: SNMPv1, SNMPv2c, SNMPv2u và SNMPv3 Các phiên bản này khác nhau một chút ở định dạng bản tin và phương thức hoạt động Hiện tại SNMPv1 là phổ biến nhất do có nhiều thiết bị tương thích nhất và có nhiều phần mềm
hỗ trợ nhất Trong khi đó chỉ có một số thiết bị và phần mềm hỗ trợ SNMPv3
Trang 10Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Năm 1993, SNMP Version 2 (SNMPv2) được IETF đưa ra với mục đích giải quyết vấn đề tồn tại trong SNMPv1 là cơ chế đảm bảo bảo mật SNMPv2 có nhiều thay đổi so với SNMPv1 như hổ trợ các mạng trung tâm cấp cao, mạng phân tán, cơ chế bảo mật, làm việc với khối dữ liệu lớn Tuy nhiên SNMPv2 không được chấp nhận hoàn toàn bởi vì SNMPv2 chưa thoả mãn vấn đề bảo mật và quản trị bởi vậy năm
1996 những phần bảo mật trong SNMPv2 bị bỏ qua và SNMPv2 được gọi là
“SNMPv2 trên cơ sở truyền thông” hay SNMPv2c
Năm 1998, IETF bắt đầu đưa ra SNMPv3 được định nghĩa trong RFCs
2571-2575 Về bản chất, SNMPv3 mở rộng để đạt được cả hai mục đích là bảo mật và quản trị SNMPv3 hổ trợ kiến trúc theo kiểu module để có thể dể dàng mở rộng Như thế nếu các giao thức bảo mật được mở rộng chúng có thể được hổ trợ bởi SNMPv3 bằng cách định nghĩa như là các module riêng
là server Khi đó, cơ sở dữ liệu do agent SNMP quản lý là đại diện cho MIP của SNMP
1.3.2 Bộ phận quản lý (manager)
Bộ phận quản lý là một chương trình vận hành trên một hoặc nhiều máy tính trạm Tùy thuộc vào cấu hình, mỗi bộ phận quản lí có thể được dùng để quản lý một mạng con, hoặc nhiều bộ phận quản lý có thể được dùng để quản lý cùng một mạng con hay một mạng chung Tương tác thực sự giữa một người sử dụng cuối (end-user)
và bộ phận quản lý được duy trì qua việc sử dụng một hoặc nhiều chương trình ứng dụng mà cùng với bộ phận quản lý, biến mặt bằng phần cứng thành Trạm quản lý mạng (NMS) Ngày nay, trong thời kỳ các chương trình giao diện người sử dụng đồ họa (GUI), hầu hết những chương trình ứng dụng cung cấp môi trường cửa sổ chỉ và click chuột, thực hiện liên vận hành với bộ phận quản lý để tạo ra những bản đồ họa và biểu đồ cung cấp những tổng kết hoạt động của mạng dưới dạng thấy được
Qua bộ phận quản lý, những yêu cầu được chuyển tới một hoặc nhiều thiết bị
Trang 11Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
những mạng này tiếp tục làm mạng vận chuyển cho phần lớn các sản phẩm quản lý mạng dựa trên SNMP Tuy nhiên SNMP cũng có thể được chuyển qua NetWare IPX
và những cơ cấu vận chuyển khác
1.3.3 Agent
Thiết bị chịu sự quản lý (Managed device): Là một nút mạng hổ trợ giao thức SNMP và thuộc về mạng bị quản lý Thiết bị có nhiệm vụ thu thập thông tin quản lý và luu trữ để phục vụ cho hệ thống quản lý mạng Những thiết bị chịu sự quản lý, đôi khi được gọi là những phần tử mạng, có thể là những bộ định tuyến và máy chủ truy cập-Access Server, switch và bridge, hub, máy tính hay là những máy in trong mạng
Mỗi thiết bị chịu sự quản lý bao gồm phần mềm hoặc phần sụn (firmware) dưới dạng mã phiên dịch những yêu cầu SNMP và đáp ứng của những yêu cầu đó Phần mềm hoặc phần sụn này được coi là một agent Mặc dù mỗi thiết bị bắt buộc bao gồm một agent chịu quản lý trực tiếp, những thiết bị tương thích không theo SNMP cũng có thể quản lý được nếu như chúng hổ trợ một giao thức quản lý độc quyền Ðể thực hiện được điều này, phải giành được một agent ủy nhiệm (proxy agent) Proxy agent này có thể được xét như một bộ chuyển đổi giao thức vì nó phiên dịch những yêu cầu SNMP thành giao thức quản lý độc quyền của thiết bị không hoạt động theo giao thức SNMP
Mặc dù SNMP chủ yếu là giao thức đáp ứng thăm dò (poll-respond) với những yêu cầu do bộ phận quản lý tạo ra dẩn đến những đáp ứng trong agent, agent cũng có khả năng đề xướng ra một “đáp ứng tự nguyện” Ðáp ứng tự nguyện này là điều kiện cảnh báo từ việc giám sát agent với hoạt động đã được định nghĩa trước và chỉ ra rằng
đã tới ngưỡng định trước Dưới sự điều khiển của SNMP, việc truyền cảnh báo này được coi là cái bẫy (trap)
1.3.4 Cơ sở thông tin quản lý - MIB
Mỗi thiết bị chịu sự quản lý có thể có cấu hình, trạng thái và thông tin thống kê rất đa dạng, định nghĩa chức năng và khả năng vận hành của thiết bị Thông tin này có thể bao gồm việc thiết lập chuyển mạch phần cứng, những giá trị khác nhau lưu trữ trong các bảng ghi nhớ dữ liệu, bộ hồ sơ hoặc các trường thông tin trong hồ sơ lưu trữ
ở các file và những biến hoặc thành phần dữ liệu tương tự Nhìn chung, những thành phần dữ liệu này được coi là cơ sở thông tin quản lý của thiết bị chịu sự quản lý Xét riêng, mỗi thành phần dữ liệu biến đổi được coi là một đối tượng bị quản lý và bao gồm tên, một hoặc nhiều thuộc tính, và một tập các họat động (operation) thực hiện trên đối tượng đó Vì vậy MIB định nghĩa loại thông tin có thể khôi phục từ một thiết
Trang 12Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
bị chịu sự quản lý và những bố trí (settings) thiết bị mà có thể điều khiển từ hệ thống quản lí
1.3.5 Các lệnh cơ bản trong SNMP
SNMP sử dụng các dịch vụ chuyển tải dữ liệu được cung cấp bởi các giao thức UDP/IP Một ứng dụng của Manager phải nhận dạng được Agent cần thông tin với nó Một ứng dụng của Agent được nhận dạng bởi dịa chỉ IP của nó và một cổng UDP Một ứng dụng Manager đóng gói yêu cầu SNMP trong một UDP/IP, UDP/IP chứa mã nhận dạng cổng nguồn, địa chỉ IP đích và mã nhận dạng cổng UDP của nó Khung UDP sẽ được gửi đi thông qua thực thể IP tới hệ thống được quản lý, tới đó khung UDP sẽ được phân phối bởi thực thể UDP tới Agent Tuong tự các bản tin TRAP phải được nhận dạng bởi các Manager Các bản tin sử dụng địa chỉ IP và mã nhận dạng cổng UDP của Manager SNMP
➢ SNMP sử dụng 3 lệnh cơ bản là Read, Write, Trap và một số lệnh tùy biến để quản lý thiết bị
• Lệnh Read: Ðược SNMP dùng để dọc thông tin từ thiết bị Các thông tin này được
• cung cấp qua các biến SNMP luu trữ trên thiết bị và được cập nhật bởi thiết bị
• Lệnh Write: Ðược SNMP dùng để ghi các thông tin điều khiển lên thiết bị bằng cách thay đổi giá trị các biến SNMP
• Lệnh Trap: Dùng để nhận các sự kiện gửi từ thiết bị đến SNMP Mỗi khi có một sự kiện xảy ra trên thiết bị một lệnh Trap sẽ được gửi tới NMS
SNMP điều khiển, theo dõi thiết bị bằng cách thay đổi hoặc thu thập thông tin qua các biến giá trị lưu trên thiết bị Các Agent cài đặt trên thiết bị tương tác với những chip điều khiển hổ trợ SNMP để lấy nội dung hoặc viết lại nội dung
Trang 13Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Hình 1 3: Mô hình giao thức hoạt động SNMP
Hình 1 4: Hoạt động của giao thức SNMP
Trang 14Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
1.4 Quản lí liên lạc giữa management với các agent
Nhìn trên phương diện truyền thông, nhà quản lí (manager) và các tác nhân (agent) cũng là những người sử dụng, sử dụng một giao thức ứng dụng Giao thức quản lý yêu cầu cơ chế vận tải để hổ trợ tương tác giữa các tác nhân và nhà quản lý
Management trước hết phải xác định được các agent mà nó muốn liên lạc có thể xác định được ứng dụng tác nhân bằng địa chỉ IP của nó và cổng UDP được gán cho nó Cổng UDP 161 được dành riêng cho các agent SNMP Management gói lệnh SNMP vào một phong bì UDP/IP Phong bì này chứa cổng nguồn, địa chỉ IP đích và cổng 161 Một thực thể IP tại chổ sẽ chuyển giao khung UDP tới hệ thống bị quản lý Tiếp đó, một thực thể UDP tại chổ sẽ chuyển phát nó tới các agent Tương tự như vậy, lệnh TRAP cũng cần xác định những management mà nó cần liên hệ Chúng sử dụng địa chỉ IP cũng như cổng UDP dành cho mamagement SNMP, đó là cổng 162
1.5 Cơ chế vận chuyển thông tin giữa management và agent
Việc lựa chọn cơ chế vận chuyển có tính trực giao với giao thức truyền thông
đó SNMP chỉ đòi hỏi cơ chế truyền tải không tin cậy dữ liệu đồ (datagram) để truyền đưa các PDU (đơn vị dữ liệu giao thức) giữa management và các agent Ðiều này cho phép sự ánh xạ của SNMP tới nhiều nhóm giao thức Mô hình vận chuyển datagram giảm được độ phức tạp của ánh xạ tầng vận chuyển Tuy nhiên, vẩn phải nhận thức thấy sự tham gia của một số lựa chọn tầng vận chuyển Các tầng vận chuyển khác nhau có thể sử dụng nhiều kỹ thuật đánh địa chỉ khác nhau Các tầng vận chuyển khác nhau có thể đua ra những hạn chế quy mô của PDU Ánh xạ tầng vận chuyển có trách nhiệm phải xử lý các vấn đề đánh địa chỉ, hạn chế quy mô PDU và một số tham số tầng vận chuyển khác
Trong phiên bản thứ hai của SNMP, người ta sử dụng kinh nghiệm để làm sắc nét và đơn giản hóa quá trình ánh xạ tới các chuẩn vận chuyển khác nhau Giao thức quản lý được tách khỏi môi trường vận chuyển một cách trực giao, điều này cũng được khuyến khích sử dụng cho bất cứ nhóm giao thức nào
1.6 Bảo vệ truyền thông liên lạc giữa management và các agent khỏi sự cố
Trong điều kiện mạng thiếu ổn định và thiếu độ tin cậy thì sẽ liên lạc quản lý càng trở nên quan trọng Làm thế nào để các management liên lạc với các agent một cách tin cậy? Việc SNMP sử dụng cơ chế UDP để liên lạc đã có nghĩa là thiếu đi độ tin cậy SNMP hoàn toàn để lại cho chương trình management chịu trách nhiệm và xử
lý việc mất thông tin Các lệnh GET, GET-NEXT, và SET đều được phúc đáp bằng
Trang 15Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
một lệnh GET-RESPONSE Hệ thống có thể dễ dàng phát hiện ra việc bị mất một lệnh khi không nhận được lệnh trả lại Nó có thể lặp lại yêu cầu đó một lần nữa hoặc có những hành động khác Tuy nhiên, các bản tin TRAP do agent tạo ra và không được phúc đáp khẳng định Khi lệnh TRAP bị thất lạc, các chương trình agent sẽ không biết
về điều đó (tất nhiên là management cũng không hay biết về điều này) Thông thường các bản tin TRAP mang những thông tin hết sức quan trọng cho management, do vậy management cần chú ý và cần bảo đảm việc chuyển phát chúng một cách tin cậy
Một câu hỏi đặt ra là làm thế nào để chuyển phát các bản tin TRAP tránh mất mát, thất lạc? Ta có thể thiết kế cho các agent lặp lại bản tin TRAP Biến số MIB có thể đọc số lần lặp lại theo yêu cầu Lệnh SET của management có thể đặt cấu hình cho biến số này Có một cách khác là agent có thể lặp lại lệnh TRAP cho đến khi management đặt biến số MIB để chấm dứt sự cố Hãy ghi nhớ rằng, cả hai phương pháp trên đều chỉ cho ta những giải pháp từng phần Trong trường hợp thứ nhất, số lần lặp lại có thể không đủ để đảm bảo liên lạc một cách tin cậy Trong trường hợp thứ hai, một sự cố mạng có thể dẩn đến việc hàng loạt bản tin TRAP bị mất tùy thuộc vào tốc độ mà các agent tạo ra chúng Ðiều này làm cho sự cố mạng trở nên trầm trọng hơn Trong cả hai trường hợp, nếu ta cần chuyển phát những bản tin TRAP tới nhiều management, thì có thể xảy ra tình trạng không nhất quán giữa các management hoặc xảy ra hiện tượng thất lạc thông tin rất phức tạp Nếu các agent phải chịu trách nhiệm
về thiết kế cho việc phục hồi những bản tin TRAP thì càng làm tăng thêm độ phức tạp trong việc quản lý các agent trong môi trường đa nhà chế tạo
Người ta cũng đã theo đuổi cải tiến cơ chế xử lý bản tin sự cố cho phiên bản thứ hai của SNMP Thứ nhất là đơn nguyên TRAP được bỏ đi và thay thế nó bằng một lệnh
GET/RESPONSE không yêu cầu Lệnh này do agent tạo ra và chuyển đến cho
“management bẫy” tại cổng UDP-162 Ðiều này phản ánh một quan điểm là nhà quản
lý sự cố có thể thống nhất các bản tin sự cố rồi trả lại cho các yêu cầu ảo Bằng cách
bỏ đi một đơn thể, giao thức được đơn giản hóa Người ta cũng bổ sung thêm một cơ
sở thông tin quản lý đặc biệt TRAP MIB để thống nhất việc xử lý sự cố, các management nhận bản tin về các sự cố này và việc lặp lại để cải thiện độ tin cậy trong chuyển phát thông tin
1.7 Các phương thức của SNMP
Giao thức SNMPv1 có 5 phương thức hoạt động, tương ứng với 5 loại bản tin như sau:
Trang 16Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Mỗi bản tin đều có chứa OID để cho biết object mang trong nó là gì OID trong GetRequest cho biết nó muốn lấy thông tin của object nào OID trong GetResponse cho biết nó mang giá trị của object nào OID trong SetRequest chỉ ra nó muốn thiết lập giá trị cho object nào OID trong Trap chỉ ra nó thông báo sự kiện xảy ra đối với object nào
1.7.1 GetRequest
Bản tin GetRequest được manager gửi đến agent để lấy một thông tin nào đó Trong GetRequest có chứa OID của object muốn lấy VD : Muốn lấy thông tin tên của Device1 thì manager gửi bản tin GetRequest OID=1.3.6.1.2.1.1.5 đến Device1, tiến trình SNMP agent trên Device1 sẽ nhận được bản tin và tạo bản tin trả lời
Trong một bản tin GetRequest có thể chứa nhiều OID, nghĩa là dùng một GetRequest có thể lấy về cùng lúc nhiều thông tin
1.7.3 SetRequest
Bản tin SetRequest được manager gửi cho agent để thiết lập giá trị cho một object nào đó
Trang 17Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Ví dụ :
➢ Có thể đặt lại tên của một máy tính hay router bằng phần mềm SNMP manager, bằng cách gửi bản tin SetRequest có OID là 1.3.6.1.2.1.1.5.0 (sysName.0) và
có giá trị là tên mới cần đặt
➢ Có thể shutdown một port trên switch bằng phần mềm SNMP manager, bằng cách gửi bản tin có OID là 1.3.6.1.2.1.2.2.1.7 (ifAdminStatus) và có giá trị là 2 7 Chỉ những object có quyền READ_WRITE mới có thể thay đổi được giá trị
Phương thức trap là độc lập với các phương thức request/response SNMP request/response dùng để quản lý còn SNMP trap dùng để cảnh báo Nguồn gửi trap gọi là Trap Sender và nơi nhận trap gọi là Trap Receiver Một trap sender có thể được cấu hình để gửi trap đến nhiều trap receiver cùng lúc Có 2 loại trap : trap phổ biến (generic trap) và trap đặc thù (specific trap) Generic trap được quy định trong các chuẩn SNMP, còn specific trap do người dùng tự định nghĩa (người dùng ở đây là hãng sản xuất
SNMP device) Loại trap là một số nguyên chứa trong bản tin trap, dựa vào đó
mà phía nhận trap biết bản tin trap có nghĩa gì
Theo SNMPv1, generic trap có 7 loại sau: coldStart(0), warmStart(1), linkDown(2), linkUp(3), authenticationFailure(4), egpNeighborloss(5), enterpriseSpecific(6)
Trang 18Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Giá trị trong ngoặc là mã số của các loại trap Ý nghĩa của các bản tin trap như sau :
generic-+ ColdStart: thông báo rằng thiết bị gửi bản tin này đang khởi động lại (reinitialize) và cấu hình của nó có thể bị thay đổi sau khi khởi động
+ WarmStart: thông báo rằng thiết bị gửi bản tin này đang khởi động lại và giữ nguyên cấu hình cũ
+ LinkDown: thông báo rằng thiết bị gửi bản tin này phát hiện được một trong những kết nối truyền thông (communication link) của nó gặp lỗi Trong bản tin trap có tham số chỉ ra ifIndex của kết nối bị lỗi
+ LinkUp: thông báo rằng thiết bị gửi bản tin này phát hiện được một trong những kết nối truyền thông của nó đã khôi phục trở lại Trong bản tin trap có tham số chỉ ra ifIndex của kết nối được khôi phục
+ AuthenticationFailure: thông báo rằng thiết bị gửi bản tin này đã nhận được một bản tin không được chứng thực thành công (bản tin bị chứng thực không thành công có thể thuộc nhiều giao thức khác nhau như telnet, ssh, snmp, ftp, …) Thông thường trap loại này xảy ra là do user đăng nhập không thành công vào thiết bị
+ EgpNeighborloss: thông báo rằng một trong số những “EGP neighbor” 8 của thiết bị gửi trap đã bị coi là down và quan hệ đối tác (peer relationship) giữa 2 bên không còn được duy trì
+ EnterpriseSpecific : thông báo rằng bản tin trap này không thuộc các kiểu generic như trên mà nó là một loại bản tin do người dùng tự định nghĩa
Người dùng có thể tự định nghĩa thêm các loại trap để làm phong phú thêm khả năng cảnh báo của thiết bị như : boardFailed, configChanged, powerLoss, cpuTooHigh, v.v… Người dùng tự quy định ý nghĩa và giá trị của các specific trap này, và dĩ nhiên chỉ những trap receiver và trap sender hỗ trợ cùng một MIB mới có thể hiểu ý nghĩa của specific trap Do đó nếu bạn dùng một phần mềm trap receiver bất
kỳ để nhận trap của các trap sender bất kỳ, bạn có thể đọc và hiểu các generic trap khi chúng xảy ra; nhưng bạn sẽ không hiểu ý nghĩa các specific trap khi chúng hiện lên màn hình vì bản tin trap chỉ chứa những con số
Đối với các phương thức Get/Set/Response thì SNMP Agent lắng nghe ở port UDP 161, còn phương thức trap thì SNMP Trap Receiver lắng nghe ở port UDP 162
Trang 19Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Hình 1 5: Hình minh họa các phương thức SNMPv1
1.8 Các cơ chế bảo mật cho SNMP
Một SNMP management station có thể quản lý/giám sát nhiều SNMP element, thông qua hoạt động gửi request và nhận trap Tuy nhiên một SNMP element có thể được cấu hình để chỉ cho phép các SNMP management station nào đó được phép quản lý/giám sát mình
Các cơ chế bảo mật đơn giản này gồm có : community string, view và SNMP access control list
1.8.1 Community string
Community string là một chuỗi ký tự được cài đặt giống nhau trên cả SNMP manager và SNMP agent, đóng vai trò như “mật khẩu” giữa 2 bên khi trao đổi dữ liệu Community string có 3 loại : Read-community, Write-Community và Trap-Community
Khi manager gửi GetRequest, GetNextRequest đến agent thì trong bản tin gửi đi
có chứa Read-Community Khi agent nhận được bản tin request thì nó sẽ so sánh Read-community do manager gửi và Read-community mà nó được cài đặt Nếu 2 chuỗi này giống nhau, agent sẽ trả lời; nếu 2 chuỗi này khác nhau, agent sẽ không trả lời
+ Write-Community được dùng trong bản tin SetRequest Agent chỉ chấp nhận thay đổi dữ liệu khi write-community 2 bên giống nhau
+ Trap-community nằm trong bản tin trap của trap sender gửi cho trap receiver Trap receiver chỉ nhận và lưu trữ bản tin trap chỉ khi trap-community 2 bên giống nhau, tuy nhiên cũng có nhiều trap receiver được cấu hình nhận tất cả bản tin trap mà không quan tâm đến trap-community
Trang 20Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
+ Community string có 3 loại như trên nhưng cùng một loại có thể có nhiều string khác nhau Nghĩa là một agent có thể khai báo nhiều read-community, nhiều write-community
Trên hầu hết hệ thống, read-community mặc định là “public”, write-community mặc định là “private” và trap-community mặc định là “public”
Community string chỉ là chuỗi ký tự dạng cleartext, do đó hoàn toàn có thể bị nghe lén khi truyền trên mạng Hơn nữa, các community mặc định thường là “public”
và “private” nên nếu người quản trị không thay đổi thì chúng có thể dễ dàng bị dò ra Khi community string trong mạng bị lộ, một người dùng bình thường tại một máy tính nào đó trong mạng có thể quản lý/giám sát toàn bộ các device có cùng community mà không được sự cho phép của người quản trị
1.8.2 View
Khi manager có read-community thì nó có thể đọc toàn bộ OID của agent Tuy nhiên agent có thể quy định chỉ cho phép đọc một số OID có liên quan nhau, tức là chỉ đọc được một phần của MIB Tập con của MIB này gọi là view, trên agent có thể định nghĩa nhiều view Ví dụ : agent có thể định nghĩa view interfaceView bao gồm các OID liên quan đến interface, storageView bao gồm các OID liên quan đến lưu trữ, hay AllView bao gồm tất cả các OID
Một view phải gắn liền với một community string Tùy vào community string nhận được là gì mà agent xử lý trên view tương ứng Ví dụ : agent định nghĩa read-community “inf” trên view interfaceView, và “sto” trên storageView; khi manager gửi request lấy OID ifNumber với community là “inf” thì sẽ được đáp ứng do ifNumber nằm trong interfaceView; nếu manager request OID hrStorageSize với community
“inf” thì agent sẽ không trả lời do hrStorageSize không nằm trong interfaceView; nhưng nếu manager request hrStorageSize với community “sto” thì sẽ được trả lời do hrStorageSize nằm trong storageView
Việc định nghĩa các view như thế nào tùy thuộc vào từng SNMP agent khác nhau Có nhiều hệ thống không hỗ trợ tính năng view
1.8.3 SNMP access control list
Khi manager gửi không đúng community hoặc khi OID cần lấy lại không nằm trong view cho phép thì agent sẽ không trả lời Tuy nhiên khi community bị lộ thì một manager nào đó vẫn request được thông tin
Trang 21Đồ án tốt nghiệp Chương I: Tổng quan về giao thức SNMP
Để ngăn chặn hoàn toàn các SNMP manager không được phép, người quản trị
có thể dùng đến SNMP access control list (ACL) SNMP ACL là một danh sách các địa chỉ IP được phép quản lý/giám sát agent, nó chỉ áp dụng riêng cho giao thức SNMP và được cài trên agent Nếu một manager có IP không được phép trong ACL gửi request thì agent sẽ không xử lý, dù request có community string là đúng
Đa số các thiết bị tương thích SNMP đều cho phép thiết lập SNMP ACL
1.10 Kết luận chương 1
Chương 1 đã cung cấp cho những khái niệm cơ bản nhất về giao thức quản lí mạng đơn giản SNMP, các thành phần, chức năng và phương thức hoạt động của giao thức
Phần đầu chương giới thiệu tổng quan về SNMP, cấu trúc và đặc điểm cũng như hoạt động của giao thức này Sau đó giới thiệu các phiên bản sau của SNMP và phân tích được những khác biệt của các phiên bản sau với phiên bản SNMP đầu tiên
Trang 22Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
CHƯƠNG II: XÂY DỰNG HỆ THỐNG GIÁM SÁT, QUẢN TRỊ MẠNG BẰNG MÃ NGUỒN MỞ DỰA TRÊN GIAO THỨC
SNMP
2.1 Mã nguồn mở là gì, lợi ích của mã nguồn mở
Mã nguồn mở là những phần mềm được cung cấp dưới cả dạng mã và nguồn, không chỉ là miễn phí về giá mua mà chủ yếu là miễn phí về bản quyền: người dùng có quyền sửa đổi, cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung qui định trong giấy phép PMNM (ví dụ General Public Licence – GPL) mà không cần xin phép
ai, điều mà họ không được phép làm đối với các phần mềm nguồn đóng (tức là phần mềm thương mại) Nhìn chung, thuật ngữ “Open source” được dùng để lôi cuốn các nhà kinh doanh, một điều thuận lợi chính là sự miễn phí và cho phép người dùng có quyền “sở hữu hệ thống”
Nhà cung cấp mã nguồn mở có quyền yêu cầu người dùng trả một số chi phí về các dịch vụ bảo hành, huấn luyện, nâng cấp, tư vấn, vv… tức là những dịch vụ thực sự
đã thực hiện để phục vụ người dùng, nhưng không được bán các sản phẩm nguồn mở
vì nó là tài sản của trí tuệ chung, không phải là tài sản riêng của một nhà cung cấp nào
Tiện ích mà Open Source mang lại chính là quyền tự do sử dụng chương trình cho mọi mục đích, quyền tự do để nghiên cứu cấu trúc của chương trình, chỉnh sữa phù hợp với nhu cầu, truy cập vào mã nguồn, quyền tự do phân phối lại các phiên bản cho nhiều người, quyền tự do cải tiến chương trình và phát hành những bản cải tiến vì mục đích công cộng
Lợi ích của phần mềm mã nguồn mở-miễn phí?
• Phần mềm có thể được sao chép hoàn toàn miễn phí, bạn hoàn toàn an tâm khi chia sẽ một chương trình tuyệt vời với bạn bè
• Các định dạng file không hoàn toàn bị kiểm soát bởi một vài nhà cung cấp Điều gì sẽ xảy ra khi dữ liệu nằm trong một phần mềm độc quyền? Việc sử dụng một định dạng file bí ẩn sẽ khiến bạn chỉ dùng chương trình của một công ty Do yêu cầu công việc, bạn muốn sử dụng dữ liệu trên cho một ứng dụng khác nhưng ương trình bản quyền không cho phép ! Còn nếu như nhà cung cấp chấm dứt hổ trợ và ngưng việc nâng cấp sản phẩm, chắc chắn rằng dữ liệu của bạn sẽ phải vứt xó Với phần mềm bản quyền, chỉ có duy nhất nhà cung cấp có thể giải quyết vấn đề của bạn Nhưng! với OpenSource bạn có thể gặp hàng tá nhà cung cấp làm vừa lòng mình
Trang 23Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
• Hầu hết các sản phẩm Open Source đều có khả năng bảo mật tuyệt vời, khi một vết nứt được tìm thấy, nó thường được trám nhanh hơn phần mềm có bản quyền
• Các hệ thống Open Source, nhất là các hệ thống dựa trên UNIX, thường linh hoạt đến khó tin nổi Bởi vì chúng được xây dựng từ nhiều khối thống nhất và được miêu tả cặn kẽ, rất dễ để bạn thay thế nhiều phần của hệ thống với phần có giao diện tương tự
• Có một cộng đồng hỗ trợ lớn Không bị phụ thuộc vào một công ty nào
Các loại giấy phép về mã nguồn mở
• Phần mềm thương mại (Commercial Software)
- Là phần mềm thuộc bản quyền của tác giả hoặc nhà sản xuất, chỉ được cung cấp ở dạng mã nhị phân, người dùng phải mua và không có quyền phân phối lại
• Phần mềm thử nghiệm giới hạn (Limited Trial Software)
- Là những phiên bản giới hạn của các phần mềm thương mại được cung cấp miễn phí nhằm mục đích thử nghiệm, giới thiệu sản phẩm và kích thích người dùng quyết định mua Loại sản phấm này không chỉ giới hạn về tính năng mà còn giới hạn
về thời gian dùng thử (thường là 60 ngày)
• Phần mềm “chia sẻ” (Shareware)
- Loại phần mềm này có đủ các tính năng và được phân phối tự do, nhưng có một giấy phép khuyến cáo các cá nhân hoặc tổ chức mua, tùy tình hình cụ thể Nhiều tiện ích Internet (như “WinZip” dùng các thuận lợi của Shareware như một hệ thống phân phối)
• ▪ Phần mềm sử dụng phi thương mại (Non-commercial Use)
- Loại phần mềm này được sử dụng tự do và có thể phân phối lại bởi các tổ chức phi lợi nhuận Nhưng các tổ chức kinh tế, thí dụ các doanh nghiệp, … muốn dùng phải mua Netscape Navigator là một thí dụ của loại phần mềm này
• Phần mềm không phải trả phần trăm cho nhà sản xuất (Royalties Free Binaries Software)
- Phần mềm được cung cấp dưới dạng nhị phân và được dùng tự do Thí dụ: bản nhị phân của các phần mềm Internet Explorer và NetMeeting
• Thư viện phần mềm không phải trả phần trăm (Royalties Free Software Libraries)
Trang 24Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
- Là những phần mềm mà mã nhị phân cũng như mã nguồn được dùng và phân phối tự do, nhưng người dùng không được phép sửa đổi Thí dụ: các thư viện lớp học, các tệp “header”, vv …
• Phần mềm mã nguồn mở kiểu BSD – (Open Source BSD-style)
- Một nhóm nhỏ khép kín (closed team) đã phát triển các PMNM theo giấy phép phân phối Berkely (BSD – Berkely Software Distribution) cho phép sử dụng và phân phối lại các phần mềm này dưới dạng mã nhị phân và mã nguồn Tuy người dùng có quyền sửa đổi mã, nhưng về nguyên tắc nhóm phát triển không cho phép người dùng
tự do lấy mã nguồn từ kho mã ra sửa (gọi là check-out) và đưa mã đã sửa vào lại kho
mã mà không được họ kiểm tra trước (gọi là các “check-in”)
• Mã nguồn mở kiểu Apache (Open Source Apache-style)
- Chấp nhận nguồn mở kiểu BSD nhưng cho phép những người ngoài nhóm phát triển xâm nhập vào lõi của mã nền (core codebase), tức là được phép thực hiện các “check-in”
• Mã nguồn mở kiểu CopyLeft hay kiểu Linux (Open Source CopyLeft, style)
Linux PMNM kiểu CopyLeft (trò chơi chữ của Free Software Foundation – FSF – và GNU – Gnu’s Not Unix, để đối nghịch hoàn toàn với CopyRight !) hay còn gọi là giấy phép GPL (General Public Licence) là một bước tiến quan trọng theo hướng tự do hóa của các giấy phép phần mềm Giấy phép GPL yêu cầu không những mã nguồn gốc phải được phân phối theo các qui định của GPL mà mọi sản phẩm dẫn xuất cũng phải tuân thủ GPL
- GPL cho người dùng tối đa quyền hạn và tự do đối với các PMNM theo GPL,
cụ thể người dùng có quyền không những sao chép, sửa đổi, mua bán các PMNM dưới CopyLeft mà còn được quyền tự do như vậy đối với các phần mềm dẫn xuất Tóm lại nếu PMNM gốc đã theo CopyLeft thì mọi PMNM dẫn xuất của nó cũng đương nhiên theo CopyLeft
Trang 25Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
2.2 Mô hình tổng quan
Hệ thống mã nguồn mở giám sát hệ thống mạng thông qua giao thức SNMP như hình 2.1
Hình 2 1: Mô hình tổng quan hệ thống gián sát bằng mã nguồn mở
Nguyên lý, cấu trúc chức năng của từng thành phần trong mô hình :
2.2.1 Telegraf
Hình 2 2: Mô hình TICK stack
Trang 26Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
a,Các đặc điểm, tính năng chính:
- Telegraf là 1 sản phẩm mã nguồn mở được phát triển bởi InfluxData, là một phần trong dự án TICK stack ở trên hình 2-2
- Telegraf là một trình phục vụ máy chủ dựa trên plugin để thu thập và báo cáo
số liệu Điều này có nghĩa là Telegaf có thể thu thập dữ liệu từ nhiều nguồn khác nhau,
ví dụ như số liệu thống kê hệ thống, các cuộc gọi API, truy vấn DB và SNMP Sau đó,
nó có thể gửi các chỉ số đó đến nhiều kho dữ liệu khác nhau, ví dụ: Graphite, OpenTSDB, Datadog, Librato Đặc biệt là InfluxDB
- Viết bằng ngồn ngữ lập trình Go
- Tiêu tốn ít bộ nhớ
- Hệ thống Plugin lớn đa dạng cho phép nhập và nhập các đầu vào mới dễ dàng, đồng thời hội trợ nhiều dịch vụ nội tiếng và API (application programming interface)
b, Vai trò của Telegraf trong mô hình ở hình 2-1:
- Telegraf đóng vai trò như 1 collector “kéo” những thông tin cần thiết mà người quản trị cần về từ thiết bị mạng cần giám sát rồi đưa vào InfluxDB
- Các thông tin được lấy về sẽ được đóng gói trong các bản tin SNMP
- Telegraf sẽ bóc tách các bản tin SNMP rồi đẩy dữ liệu lại cho InfluxDB Dữ liệu sẽ được “trình bày” theo 4 phần cơ bản :
+ Measurement Name (phép đo)
+ Tags (thẻ)
+ Fields (trường)
+ Timestamp (tem thời gian)
c,Cài đặt Telegraf:
- Đối với Ubuntu & Debian:
+ Thêm kho của InfluxData:
curl -sL https://repos.influxdata.com/influxdb.key | sudo key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb
https://repos.influxdata.com/debian wheezy stable" | sudo tee
Trang 27Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
test $VERSION_ID = "8" && echo "deb
https://repos.influxdata.com/debian jessie stable" | sudo tee
/etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "9" && echo "deb
https://repos.influxdata.com/debian stretch stable" | sudo tee
/etc/apt/sources.list.d/influxdb.list
+ Cài đặt và bắt đầu dịch vụ Telegraf:
sudo apt-get update && sudo apt-get install telegraf
sudo systemctl start telegraf
- Đối với RedHat & CentOS:
+ Thêm kho của InfluxData:
# wget 1.4.2-1.x86_64.rpm
https://dl.influxdata.com/telegraf/releases/telegraf-# sudo yum localinstall telegraf-1.4.2-1.x86_64.rpm
+ Cài đặt và bắt đầu dịch vụ Telegraf:
# systemctl start telegraf
# systemctl enable telegraf
d,Cấu hình Telegraf:
- File cấu hình của Telegraf được lưu ở: /etc/telegraf/telegraf.conf
Thiết lập output cho Telegraf:
urls = ["http://localhost:8086"] # required
database = "telegraf" # required
Trang 28Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
timeout = "5s"
username = "influx"
password = "influx_pass"
- Telegraf sử dụng port 8086 để giao tiếp với InfluxDB
- Username và Password được thiết lập cùng thông số khi cài đặt cho InfluxDB
để xác thực
Thiết lập input cho Telegraf:
- Đặc điểm của giao thức SNMP sử dụng các giá trị OID để quy định nội dung
object mà gói tin mang trong nó là gì Do đó yêu cầu cài đặt các gói hỗ trợ : Snmp và
snmp-mibs-downloader
$ sudo apt-get install snmp-mibs-downloade
$ sudo download-mibs
- Telegraf ko tự mình hiểu được các OID và phải nhở Snmp và
snmp-mibs-downloader biên dịch lại thành dữ liệu mà Telegraf có thể hiểu
agents – địa chỉ ip của thiết bị mạng cần dám sát
version – phiên bản SNMP đang sử dụng
community – giá trị dùng để xác thực
Chú ý: Hoàn tất thiết lập phải restart lại dịch vụ telegraf
Trang 29Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
2.2.2 InfluxDB
a,Các đặc điểm, tính năng chính:
- InfluxDB cũng là 1 sản phẩm mã nguồn mở được phát triển bởi InfluxData, là một phần trong dự án TICK stack ở trên hình 2-2
- InfluxDB là TSDB “time series database” ( “cơ sở dữ liệu theo chuỗi thời gian” dùng đề lưu trữ những dữ liệu chuỗi thời gian - một chuỗi các điểm dữ liệu được thu thập ở các khoảng thời gian đều đặn trong một khoảng thời gian ) được xây dựng
từ nền tảng để xử lý tải ghi và truy vấn cao
- Viết bằng ngồn ngữ lập trình Go
- Các API viết và truy vấn HTTP,S API đơn giản, hiệu quả cao
- Plugin hỗ trợ cho các giao thức nhập dữ liệu khác như Graphite, collectd, và OpenTSDB
- Ngôn ngữ truy vấn giống SQL Expressive được thiết kế để dễ dàng truy vấn
dữ liệu tổng hợp
- Thẻ cho phép chuỗi được lập chỉ mục cho các truy vấn nhanh và hiệu quả
- Chính sách lưu giữ có hiệu quả tự động hết hạn dữ liệu cũ
- Truy vấn liên tục tự động tính toán dữ liệu tổng hợp để làm cho truy vấn thường xuyên hiệu quả hơn
- Được xây dựng trong giao diện quản trị web.ng ngồn ngữ lập trình Go
b,Vai trò của InfluxDB trong mô hình ở hình 2-1:
- InfluxDB đóng vai trò là nơi lưu trữ những dữ liệu lấy được từ Telegraf trả về lưu trữ thành một hệ thống với chính sách cụ thể và hỗ trợ việc chọc vào truy xuất dữ liệu của Grafana
- Dữ liệu được lưu trữ trên InfluxDB được quản lý hiệu quả với chính sách lưu trữ mềm dẻo, dữ liệu được trình bày dễ hiểu sát với yêu cầu của người quản trị (được trình bày như hình 2.3)
Trang 30Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
c,Cách tổ chức dữ liệu trên InfluxDB:
Hình 2 3: Bảng dữ liệu mẫu trong InfluxDB
Trong bảng ta có:
- name là measurement name (phép đo )
- Time chính là cột giá trị thời gian điều là đặc trưng của bất kì 1 time series database nào
- 2 cột tiếp theo butterflies và honeybees là các fields (trường) 1 trường gồm có:
field keys (tên trường) và field values (giá trị trường):
• Các field keys ( butterfliesvà honeybees) là chuỗi và chúng lưu trữ siêu dữ liệu; field keys butterflies cho chúng ta biết rằng các field values 12 - 7 và field keys honeybees cho chúng ta biết rằng các field values 23 – 22
• Tổng hợp các field keys và field values ta sẽ có field set ( thiết lập trường)
butterflies = 12 butterflies = 1 butterflies = 11 butterflies = 3 butterflies = 2 butterflies = 1 butterflies = 8 butterflies = 7
honeybees = 23 honeybees = 30 honeybees = 28 honeybees = 28 honeybees = 11 honeybees = 10 honeybees = 23 honeybees = 22
Trang 31Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
• Fields (trường) là một phần bắt buộc của cấu trúc dữ liệu của InfluxDB - bạn không thể có dữ liệu trong InfluxDB mà không có fields Cũng cần lưu ý rằng các trường không được lập chỉ mục(indexed) Truy vấn (Queries) sử dụng giá trị trường làm bộ lọc phải quét tất cả các giá trị khớp với các điều kiện khác trong truy vấn Do
đó, các truy vấn này không có hiệu suất so với các truy vấn trên thẻ (tags)
- Hai cột cuối cùng trong dữ liệu mẫu: location và scientist là các thẻ (tag) Thẻ được tạo thành từ khóa thẻ (tag keys) và giá trị thẻ (tag values) :
• Cả hai khóa thẻ (tag keys) và các giá trị thẻ (tag values) được lưu trữ dưới
dạng chuỗi và siêu dữ liệu ghi lại Các khóa thẻ trong dữ liệu mẫu là locationvà scientist Khóa thẻ location có hai giá trị thẻ: 1và 2 Khóa thẻ scientistcũng có hai giá
trị thẻ: langstroth và perpetua
• Tổng hợp các tag keys và tag values ta sẽ có tag set ( thiết lập tag)
location = 1, scientist = langstroth location = 2, scientist = langstroth location = 1, scientist = perpetua
• Thẻ (tags) là tùy chọn không bắt buộc Bạn không cần phải có các thẻ trong cấu trúc dữ liệu của mình, nhưng nói chung bạn nên sử dụng chúng vì, không giống như các trường, các thẻ được lập chỉ mục Điều này có nghĩa là các truy vấn trên thẻ nhanh hơn và các thẻ là lý tưởng để lưu trữ siêu dữ liệu thông thường
d,Chính sách lưu trữ dữ liệu của InfluxDB:
Hình 2 4: Bảng thể hiện chính sách lưu trữ ứng với các chuỗi thu thập dữ liệu
- Một phép đo (measurement) có thể thuộc về các chính sách lưu giữ khác nhau Một chính sách lưu trữ gồm khoảng thời gian InfluxDB giữ dữ liệu ( DURATION) và bao nhiêu bản sao của những dữ liệu đó được lưu trữ trong cluster ( REPLICATION)
Trang 32Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
- Nếu không thiết lập gì dữ liệu sẽ được lưu trữ với chính sách mặc định là
autogen có khoảng thời gian lưu trữ là vô hạn và số bản sao được lưu trữ với tần suất
là 1
- InfluxDB hỗ trợ API tốt giúp người quản trị dễ dàng quản lý cơ sở dữ liệu với những chính sách lưu trữ mềm dẻo:
• Tạo một cơ sở dữ liệu mới:
CREATE DATABASE <database_name> [WITH [DURATION <duration>]
[REPLICATION <n>] [SHARD DURATION <duration>] [NAME
- <database_name> tên của database dùng để lưu trữ dữ liệu
- <duration> giá trị thiết lập cho khoảng thời gian lưu trữ dữ liệu
- <n>] giá trị thiết lập cho số bản sao của dữ liệu được lấy về
- SHARD DURATION <duration> phân mảnh dữ liệu đầu vào thành những mảnh nhỏ theo khoảng thởi gian thiết lập
- <retention-policy-name> tên của chính sách lưu trữ
e,Cài đặt InfluxDB:
- Đối với Ubuntu & Debian:
+ Thêm kho của InfluxData:
curl -sL https://repos.influxdata.com/influxdb.key | sudo key add -
source /etc/os-release
test $VERSION_ID = "7" && echo "deb
https://repos.influxdata.com/debian wheezy stable" | sudo tee
/etc/apt/sources.list.d/influxdb.list
test $VERSION_ID = "8" && echo "deb
https://repos.influxdata.com/debian jessie stable" | sudo tee
/etc/apt/sources.list.d/influxdb.list
Trang 33Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
test $VERSION_ID = "9" && echo "deb
https://repos.influxdata.com/debian stretch stable" | sudo tee
/etc/apt/sources.list.d/influxdb.list
+ Cài đặt và bắt đầu dịch vụ InfluxDB
sudo apt-get update && sudo apt-get install influxdb
sudo systemctl start influxdb
- Đối với RedHat & CentOS:
+ Thêm kho của InfluxData:
# wget 1.3.6.x86_64.rpm
https://dl.influxdata.com/influxdb/releases/influxdb-# sudo yum localinstall influxdb-1.3.6.x86_64.rp
+ Cài đặt và bắt đầu dịch vụ Telegraf:
# systemctl start influxdb
# systemctl enable influxdb
g,Cấu hình InfluxDB:
- File cấu hình của Telegraf được lưu ở: /etc/influxdb/influxdb.conf
Thiết lập xác thực HTTP cho InfluxDB trong file cấu hình:
# Determines whether HTTP authentication is enabled
Chú ý: Hoàn tất thiết lập phải restart lại dịch vụ inflluxDB
sudo systemctl start influxdb
2.2.3 Grafana
a, Các đặc điểm, tính năng chính:
- Grafana là phần mềm mã nguồn mở được phát triển bởi Grafana Labs
- Grafana cung cấp giao diện ứng dụng web viết bằng ngôn ngữ lập trình JavaScript và Golang có thể tương tác mạnh mẽ với các “storage backends” như InfluxDB, graphite và opentsdb
Trang 34Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
- Grafana cho phép hiển thị thông tin hữu ích một cách rõ ràng, súc tích dưới dạng đồ thị, bảng,…
- Grafana có thư viện “plugin” mạnh mẽ với nhiều nguồn dữ liệu khác nhau
b, Vai trò của Grafana trong mô hình ở hình 2-1:
- Grafana “chọc” vào database trên InfluxDB để truy xuất ra những thông tin cần thiết thể hiện trên bảng điều khiển (Dashboards) dưới dạng biểu đồ, đồ thị hay bảng số liệu… trên giao diện web browser, cung cấp cho người quản trị cái nhìn trực quan về các số liệu Grafana hỗ trợ xác thực để đảm bảo tính bảo mật cho phép người
có thẩm quyền mới có thể đăng nhập vào bảng điều khiển (Dashboards)
- Đồng thời Grafana cũng câp cấp khả năng tính toán và cảnh báo đến người quản trị thống qua các dịch vụ sms, mail,…
- Trên mô hinh 2-2 InfluxData cũng cung cấp 2 open-sources Chronograf và Kapacitor với tính năng tương tự Grafana nhưng vẫn đang trong giai đoạn phát triển sơ khai nên trong đồ án này em lựa chọn Grafana với những nền tảng đã được phát triển
từ trước
c,Cài đặt Grafana:
Đối với Ubuntu & Debian:
Cài đặt gói cho nhà phát triển (gói ổn định):
Wgethttps://s3uswest2.amazonaws.com/grafanareleases/release/gra fana_4.6.2_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.6.2_amd64.deb
Cài đặt gói APT:
deb https://packagecloud.io/grafana/stable/debian/ jessie main deb https://packagecloud.io/grafana/testing/debian/ jessie main curl https://packagecloud.io/gpg.key | sudo apt-key add -
sudo apt-get update
sudo apt-get install grafana
sudo apt-get install -y apt-transport-https
Trang 35Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
• Đối với RedHat & CentOS:
$ wget
https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.6.2-1.x86_64.rpm
$ sudo yum install initscripts fontconfig
$ sudo rpm -Uvh grafana-4.6.2-1.x86_64.rpm
Hoặc:
$ sudo yum install releases/release/grafana-4.6.2-1.x86_64.rpm
https://s3-us-west-2.amazonaws.com/grafana-d,Cấu hình Grafana trên giao diện web:
- Grafana sử dụng port 3000 để truyền dịch vụ Có thể kiểm tra tại file câu hình /etc/grafana/grafana.ini, hoặc sử dụng câu lệnh: netstat -ntlp trên linux để kiểm tra dịch vụ mà grafana đang chạy
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address ForeignAddress State
Trang 36http://your-ip-Đồ án tốt nghiệp Chương II: Xây dựng hệ thống giám sát quản tri mạng…
Hình 2 5:Giao diện đăng nhập vào Grafana
Hình 2 6: Giao diện sau khi đăng nhập vào Grafana
- Vào “Home Dashboard” chọn “Add data source” để thêm nguồn dữ liệu cho