Thứ ba, 05/08/2014 | 00:00 GMT+7

Giới thiệu về Ganglia trên Ubuntu 14.04

Ganglia là một hệ thống giám sát phân tán có thể mở rộng. Nó mở rộng quy mô tốt với số lượng server rất lớn và hữu ích để xem các chỉ số hiệu suất trong thời gian gần thực.

Mặt sau, Ganglia được tạo thành từ các thành phần sau:

  • Gmond (daemon giám sát Ganglia): một dịch vụ nhỏ thu thập thông tin về một nút. Điều này được cài đặt trên mọi server bạn muốn theo dõi.
  • Gmetad (Ganglia meta daemon): một daemon trên nút chính thu thập dữ liệu từ tất cả các daemon Gmond (và các daemon Gmetad khác, nếu có).
  • Công cụ RRD (Round Robin Database): một công cụ trên nút chính được sử dụng để lưu trữ dữ liệu và hình ảnh hóa cho Ganglia theo chuỗi thời gian.
  • PHP web front-end: giao diện web trên nút chính hiển thị đồ thị và số liệu từ dữ liệu trong công cụ RRD.

Về cơ bản, mọi nút ( server ) mà bạn muốn theo dõi đều đã được cài đặt Gmond. Mỗi nút đều sử dụng Gmond để gửi dữ liệu đến nút chính duy nhất chạy Gmetad, nút này thu thập tất cả dữ liệu nút và gửi đến công cụ RRD để lưu trữ. Sau đó, bạn có thể xem dữ liệu trong trình duyệt web của bạn với sự trợ giúp của các tập lệnh PHP và Apache.

Dưới đây là sơ đồ của lưới Ganglia đang hoạt động, với nút chính được hiển thị là Server Ganglia đang chạy trình Gmetad và các node khác được hiển thị là server kết nối chạy trình Gmond:

Kiến trúc Ganglia

Khi bạn sử dụng giao diện web để xem dữ liệu được giám sát, dữ liệu được sắp xếp theo nhiều cấp độ. Ganglia tổ chức các node , là các máy được giám sát riêng lẻ, thành các cụm , là các group các node giống nhau. Ở cấp độ cao hơn, các bộ sưu tập của các cụm cũng có thể được tổ chức thành các lưới . Bạn sẽ thấy tổ chức này khi đăng nhập vào giao diện web.

Trong bài viết này, trước tiên ta sẽ cài đặt một cụm duy nhất được gọi là cụm của tôi , với hai nút. Sau đó, ta sẽ cài đặt một lưới duy nhất có tên London với hai cụm, Server Database . Các ví dụ sẽ hiển thị hai nút trong mỗi cụm.

Yêu cầu

Bạn cần :

  • Một nút chính Server chạy Ubuntu 14.04 . Đây là nút bạn sẽ sử dụng để xem tất cả dữ liệu giám sát.
  • Ít nhất một nút bổ sung mà bạn muốn theo dõi, chạy Ubuntu 14.04
  • Nếu bạn muốn khớp chính xác các ví dụ lưới, bạn nên có thêm hai nút chạy Ubuntu 14.04 . Tuy nhiên, bạn có thể dễ dàng hoàn thành hướng dẫn chỉ với một nút trên mỗi cụm.

Tạo một user sudo trên mỗi Server. Đầu tiên, tạo user bằng lệnh adduser , thay thế tên user bằng tên bạn muốn sử dụng.

adduser username 

Điều này sẽ tạo user và folder chính và group thích hợp. Bạn sẽ được yêu cầu đặt password cho user mới và xác nhận password . Bạn cũng sẽ được yêu cầu nhập thông tin của user . Xác nhận thông tin user để tạo user .

Tiếp theo, cấp cho user các quyền sudo bằng lệnh visudo .

visudo 

Thao tác này sẽ mở file /etc/sudoers . Trong phần User privilege specification , hãy thêm một dòng khác cho user đã tạo để nó trông giống như sau (với tên user đã chọn của bạn thay vì username ):

# User privilege specification root       ALL=(ALL:ALL) ALL username   ALL=(ALL:ALL) ALL 

Lưu file và chuyển sang user mới.

su - username 

Cập nhật và nâng cấp các gói hệ thống.

sudo apt-get update && sudo apt-get -y upgrade 

Cài đặt

Trên nút chính, hãy cài đặt màn hình Ganglia, RRDtool, Gmetad và giao diện user web Ganglia.

sudo apt-get install -y ganglia-monitor rrdtool gmetad ganglia-webfrontend 

Trong khi cài đặt, bạn cần khởi động lại Apache. Chọn có. Tùy thuộc vào hệ thống của bạn, bạn có thể được hỏi hai lần. Chọn có .

Cài đặt console đồ họa trực tuyến bằng cách sao chép file cấu hình giao diện user web Ganglia vào folder sites-enabled Apache.

sudo cp /etc/ganglia-webfrontend/apache.conf /etc/apache2/sites-enabled/ganglia.conf 

Tùy chọn: Bạn có thể cần bảo vệ trang web này bằng mật khẩu để tăng cường bảo mật. Nếu không, nó sẽ được mở trên Internet và bạn có thể không muốn tiết lộ cấu hình server và địa chỉ IP của bạn .

Lưu ý: Phần này và phần Cài đặt Máy khách hiển thị một cài đặt đơn giản hơn liên quan đến một cụm duy nhất, được đặt tên là cụm của tôi . Nếu bạn muốn cài đặt lưới và cả hai cụm ngay lập tức, bạn cũng có thể cần tham khảo cài đặt trong phần Lưới .

Chỉnh sửa file cấu hình Gmetad để cài đặt cụm của bạn. Tệp này cấu hình địa điểm và cách thức mà daemon Getad sẽ thu thập dữ liệu.

sudo vi /etc/ganglia/gmetad.conf 

Tìm dòng bắt đầu bằng data_source , như hình dưới đây:

data_source "my cluster" localhost 

Chỉnh sửa dòng data_source để liệt kê tên của cụm của bạn, tần suất thu thập dữ liệu tính bằng giây và thông tin kết nối server của bạn. Trong ví dụ bên dưới, nguồn dữ liệu được gọi là my cluster và nó thu thập số liệu mỗi phút một lần từ localhost (chính nó). Bạn có thể thêm nhiều dòng data_source để tạo nhiều cụm tùy thích.

data_source "my cluster" 60 localhost 

Lưu các thay đổi .

Tiếp theo, chỉnh sửa file cấu hình Gmond. Mặc dù đây là nút chính, ta cũng đang cài đặt nó để giám sát như là nút đầu tiên trong cụm “cụm của tôi”. Tệp gmond.conf cấu hình nơi nút gửi thông tin của nó.

sudo vi /etc/ganglia/gmond.conf 

Trong phần cluster , hãy đảm bảo bạn đặt tên giống với tên bạn đã đặt trong file gmetad.conf , trong ví dụ này là my cluster . Phần còn lại của các trường là tùy chọn và có thể được để ở dạng unspecified .

Để tham khảo, giá trị owner chỉ định administrator của cụm, giá trị này hữu ích cho mục đích liên hệ. Các latlong giá trị đặt vĩ độ và kinh độ cho các cụm phân phối trên phạm vi global . Giá trị url dành cho một liên kết để cung cấp thêm thông tin về cụm.

[...] cluster {   name = "my cluster" ## use the name from gmetad.conf   owner = "unspecified"   latlong = "unspecified"   url = "unspecified" } [...] 

Trong phần udp_send_channel , hãy chèn một dòng host mới với giá trị localhost , là server mà bạn đang gửi thông tin. Comment dòng mcast_join .

Để tham khảo, giá trị mcast_join cung cấp địa chỉ multicast, nhưng ta cần gửi dữ liệu đến chỉ một server lưu trữ, vì vậy điều này là không cần thiết. (Nếu sau đó bạn cần tạo lưới cho cụm này, bạn sẽ bật lại nó.)

[...] udp_send_channel   {   #mcast_join = 239.2.11.71 ## comment out   host = localhost   port = 8649   ttl = 1 } [...] 

Trong phần udp_recv_channel , hãy comment về các dòng mcast_joinbind . ( , nếu bạn muốn thêm cụm này vào lưới, bạn sẽ bật lại các dòng này.)

Giá trị bind cung cấp một địa chỉ local để liên kết, nhưng vì cụm sẽ chỉ gửi thông tin nên điều này là không cần thiết.

[...] udp_recv_channel {   #mcast_join = 239.2.11.71 ## comment out   port = 8649   #bind = 239.2.11.71 ## comment out }  /* You can specify as many tcp_accept_channels as you like to share    an xml description of the state of the cluster */ tcp_accept_channel {   port = 8649 } [...] 

Khởi động lại Ganglia-monitor, Gmetad và Apache.

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart 

Giao diện web

Ganglia bây giờ sẽ được cài đặt và có thể truy cập tại http: // ip-address / ganglia .

Trang chính hiển thị chế độ xem lưới, là tổng quan về các node được giám sát của bạn. Ngay bây giờ sẽ chỉ có một: localhost .

Web Ganglia

Tab chính cho phép bạn xem dữ liệu từ tăng thời gian đặt và tùy chỉnh. Bạn cũng có thể làm mới dữ liệu theo cách thủ công bằng cách nhấp vào nút Lấy dữ liệu mới ở trên cùng bên phải.

Giờ Ganglia

Bên dưới lựa chọn phạm vi thời gian, bạn có thể chọn một nút cụ thể từ trình đơn thả xuống có nhãn –Chọn nút . Ngay bây giờ, localhost sẽ là nút duy nhất bạn thấy.

Ganglia Node

Chọn localhost từ danh sách để xem thông tin cụ thể về nút localhost. Vì localhost là nút duy nhất đang được giám sát, thông tin trên trang nút localhost và tab chính sẽ giống nhau.

Ganglia Localhost

Từ đây, bạn cũng có thể nhấp vào nút Node View ở phía trên bên phải để xem thông tin ngữ cảnh về nút.

Chế độ xem nút Ganglia

Phần còn lại của trang chính hiển thị bản tóm tắt các cụm của nút. Nhấp vào bất kỳ biểu đồ nào để xem thông tin chi tiết theo các khoảng tăng thời gian khác nhau, từ một giờ đến một năm, cũng như để xuất dữ liệu biểu đồ ở định dạng CSV hoặc JSON.

Chi tiết Ganglia

Khi các node của bạn phát triển và việc xem tất cả chúng trên trang chính trở nên khó khăn, bạn có thể sử dụng tab tìm kiếm để tìm các server hoặc chỉ số cụ thể, sử dụng biểu thức chính quy. Bạn cũng có thể so sánh các server lưu trữ, tạo biểu đồ tổng hợp tùy chỉnh, v.v.

Cài đặt Máy khách

Trên nút thứ hai bạn muốn giám sát trong cụm cụm của tôi , hãy cài đặt màn hình Ganglia.

sudo apt-get install -y ganglia-monitor 

Chỉnh sửa file cấu hình Gmond để giám sát nút.

sudo vi /etc/ganglia/gmond.conf 

Giống như ta đã làm trên nút chính, hãy cập nhật tên cụm ( my cluster trong ví dụ này) trong phần cluster để nó trùng với tên trên nút chính.

[...] cluster {   name = "my cluster"     ## Cluster name   owner = "unspecified"   latlong = "unspecified"   url = "unspecified" [...] 

Thêm một dòng vào khối udp_send_channel cho host , đây phải là địa chỉ IP của nút Ganglia chính của bạn (ví dụ: 1.1.1.1 ). Comment dòng mcast_join .

[...] udp_send_channel {   #mcast_join = 239.2.11.71   ## Comment   host = 1.1.1.1   ## IP address of master node   port = 8649   ttl = 1 } [...] 

Comment toàn bộ phần udp_recv_channel với cú pháp /* ... */ , vì server này sẽ không nhận được bất kỳ thứ gì.

[...] /* You can specify as many udp_recv_channels as you like as well. udp_recv_channel {   mcast_join = 239.2.11.71   port = 8649   bind = 239.2.11.71 } */ [...] 

Khởi động lại dịch vụ giám sát.

sudo service ganglia-monitor restart 

Chờ một vài phút và reload giao diện web. Nút mới sẽ tự động xuất hiện trong cụm.

Lặp lại các bước này trên bất kỳ nút nào khác mà bạn muốn theo dõi trong cụm này.

Đến đây bạn có một cụm! Bạn có thể xem tổng quan về cụm của bạn trên giao diện web và đi sâu vào các node cụ thể cũng như các số liệu cụ thể.

Cụm Ganglia

Lưới

Lưới cho phép bạn tổ chức nhiều cụm với nhau. Ví dụ: nếu bạn có một số cụm database MySQL phục vụ các ứng dụng khác nhau, bạn có thể tổ chức tất cả các cụm đó trong cùng một lưới để xem hiệu suất của tất cả các server MySQL của bạn. Hoặc nếu bạn có các server ứng dụng trên toàn thế giới, bạn có thể đặt chúng trong một lưới theo vị trí, chẳng hạn như London.

Để tạo lưới, hãy chỉnh sửa file /etc/ganglia/gmetad.conf trên nút chính Ganglia.

Xin lưu ý bạn chỉ có thể tạo một lưới cho mỗi Gmetad. Nếu bạn muốn tạo nhiều lưới, bạn cần cài đặt Gmetad trên một server khác. Trong ví dụ này, ta sẽ gọi lưới của ta là London .

sudo vi /etc/ganglia/gmetad.conf 

Đặt tên cho mạng lưới của bạn trong phần lưới bởi uncommenting các gridname dòng và thay thế MyGrid với tên lưới của sự lựa chọn của bạn. Trong ví dụ này, ta sẽ đặt tên cho lưới là London .

# The name of this Grid. All the data sources above will be wrapped in a GRID # tag with this name. # default: unspecified # gridname "MyGrid" 

Ví dụ: nếu bạn đang tạo lưới cho tất cả các server ở Luân Đôn của bạn :

gridname "London" 

Thêm hoặc chỉnh sửa một dòng data_source mới cho mọi cụm bạn muốn trong lưới này.

Cập nhật tên cho cụm, sau đó thêm thông tin server và cổng cho từng server mà bạn muốn thêm vào cụm đó. Xin lưu ý các cụm được xác định bằng số cổng, vì vậy mỗi dòng hoặc cụm data_source mới phải sử dụng một số cổng khác nhau.

Ví dụ, trong ví dụ dưới đây, ta đang thêm hai cụm, được gọi là Server Database , vào lưới London. Tất cả các node trong Server đang sử dụng cổng 8556 và tất cả các node trong Database đang sử dụng cổng 8857 .

data_source "Servers" localhost 1.1.1.2:8556 data_source "Databases" 1.2.1.1:8557 1.2.1.2:8557 

Trên mỗi server (hoặc nút) được chỉ định trong file cấu hình Gmetad (trong ví dụ này là localhost, 1.1.1.2, 1.2.1.1 và 1.2.1.2), hãy chỉnh sửa file cấu hình Gmond.

sudo vi /etc/ganglia/gmond.conf 

Cập nhật giá trị name trong phần cụm để trùng với tên cụm. Ở đây, ta sẽ cài đặt một nút để trở thành một phần của cụm Database . ( Lưu ý nếu bạn cài đặt hai nút bằng phương pháp trước đó, bạn sẽ phải quay lại và chỉnh sửa file /etc/ganglia/gmond.conf trên mỗi nút để phù hợp với cài đặt mới.)

/* If a cluster attribute is specified, then all gmond hosts are wrapped inside  * of a <CLUSTER> tag.  If you do not specify a cluster tag, then all <HOSTS> will  * NOT be wrapped inside of a <CLUSTER> tag. */  cluster {   name = "Databases"   owner = "unspecified"   latlong = "unspecified"   url = "unspecified" } 

Ngoài ra, không giống như trong các phần trước, bạn không nên comment các dòng mcast_join .

udp_send_channel của bạn sẽ trông như thế này. Đảm bảo cập nhật số port ! Trong ví dụ của ta , vì đây là một phần của cụm Database , cổng phải là 8557 . Các dòng khác có thể giữ nguyên.

udp_send_channel { mcast_join = 239.2.11.71 port = 8557 ttl = 1 } 

udp_recv_channel của bạn sẽ trông như thế này, sử dụng số cổng thích hợp. Các dòng khác có thể giữ nguyên.

udp_recv_channel { mcast_join = 239.2.11.71 port = 8557 bind = 239.2.11.71 } 

Cuối cùng, khối tcp_accept_channel của bạn sẽ trông như thế này, sử dụng số cổng thích hợp.

tcp_accept_channel { port = 8557 } 

Khởi động lại các dịch vụ giám sát trên mỗi nút.

sudo service ganglia-monitor restart 

Khởi động lại Ganglia-monitor, Gmetad và Apache trên server lưu trữ Ganglia hoặc nút chính .

sudo service ganglia-monitor restart && sudo service gmetad restart && sudo service apache2 restart 

Trong giao diện web, bây giờ bạn sẽ thấy tên của lưới của bạn và tùy chọn để chọn một cụm. Từ đó, bạn có thể chọn và đi sâu vào một nút.

Ganglia Grid

Kết luận

Ganglia rất dễ cài đặt và mở rộng quy mô từ một nút lên hàng trăm hoặc hàng nghìn. Nó có mức hiệu suất cao và có thể giúp bạn giám sát bao nhiêu server tùy thích.


Tags:

Các tin liên quan

Cách thực hiện chấm dứt SSL với HAProxy trên Ubuntu 14.04
2014-07-10
Cách sử dụng WP Super Cache và Jetpack Photon để tối ưu hóa hiệu suất WordPress trên Ubuntu 14.04
2014-06-27
Cách cài đặt Tinc và thiết lập VPN cơ bản trên Ubuntu 14.04
2014-06-18
Cách cài đặt và sử dụng OTPW cho mật khẩu SSH dùng một lần trên Ubuntu 14.04
2014-06-17
Cách cài đặt và cấu hình Syncthing để đồng bộ hóa các thư mục trên Ubuntu 14.04
2014-06-16
Cách sử dụng Icinga để giám sát server và dịch vụ của bạn trên Ubuntu 14.04
2014-06-13
Cách sử dụng Logstash và Kibana để tập trung log trên Ubuntu 14.04
2014-06-11
Cách cài đặt Graylog2 và tập trung log trên Ubuntu 14.04
2014-06-06
Cách cài đặt và cấu hình OpenLDAP và phpLDAPadmin trên server Ubuntu 14.04
2014-06-05
Cách cấu hình Collectd để thu thập số liệu hệ thống cho Graphite trên Ubuntu 14.04
2014-06-03