Cách thiết lập giám sát hiệu suất thời gian thực với Netdata trên Ubuntu 16.04
Netdata cung cấp khả năng giám sát hiệu suất chính xác thông qua các trang tổng quan web có thể mở rộng giúp trực quan hóa các quy trình và dịch vụ trên hệ thống Linux của bạn. Nó giám sát các số liệu về CPU, bộ nhớ, đĩa, mạng, quy trình và hơn thế nữa. Netdata không cần cấu hình bổ sung sau khi cài đặt, nhưng cung cấp khả năng tùy chỉnh đáng kể. Hiệu quả và tốc độ của ứng dụng nhằm mục đích tương đương với các công cụ quản trị console root như vmstat
, iostat
và htop
.
Các bước trong hướng dẫn này bao gồm mọi thứ bạn cần để cài đặt thành công một server Ubuntu 16.04 chạy Netdata bằng web server tích hợp của nó hoặc sử dụng Nginx, tùy chọn.
Yêu cầu
Để làm theo hướng dẫn này, bạn cần :
- Một server Ubuntu 16.04 được cài đặt bằng cách thực hiện theo Cài đặt server ban đầu cho Ubuntu 16.04 , bao gồm user không phải root có quyền sudo và firewall .
- Git được cài đặt trên server của bạn, bạn có thể cài đặt theo Cách cài đặt Git trên Ubuntu 16.04 .
- Theo tùy chọn, Nginx được cài đặt trên server của bạn, bạn có thể cài đặt theo Cách cài đặt Nginx trên Ubuntu 16.04 . Điều này không bắt buộc, nhưng cho phép nhiều chức năng và bảo mật hơn so với web server tích hợp của Netdata.
Bước 1 - Cài đặt Netdata
Trước khi ta cài đặt bất cứ thứ gì, hãy đảm bảo index gói hệ thống được cập nhật.
- sudo apt-get update
Tiếp theo, cài đặt các phụ thuộc của Netdata, bao gồm gcc
(một trình biên dịch C), các công cụ GNU Autoconf , quản lý GUID và các thư viện nén cho web server nội bộ của Netdata.
- sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make autoconf autoconf-archive autogen automake pkg-config curl
Tập hợp các gói tiếp theo là tùy chọn nhưng được Netdata khuyến nghị và bao gồm Python , một số gói Python và Node.JS. Phiên bản ổn định của Node.js đi kèm với trình quản lý gói hệ thống phù hợp với các yêu cầu của Netdata. Cài đặt tiếp theo.
- sudo apt-get install python python-yaml python-mysqldb python-psycopg2 nodejs lm-sensors netcat
Để cài đặt chính Netdata, ta phải sử dụng repository GitHub của dự án. Sao chép repository Netdata vào folder chính của bạn.
- git clone https://github.com/firehol/netdata.git --depth=1 ~/netdata
Di chuyển đến folder mới được nhân bản.
- cd ~/netdata
Bây giờ xây dựng và cài đặt ứng dụng bằng script shell netdata-installer.sh
trong folder này. Đảm bảo thêm sudo
ở đây, nếu không cách Netdata thu thập dữ liệu hệ thống (thông qua trình thu thập dữ liệu) sẽ không hoạt động chính xác.
- sudo ./netdata-installer.sh
Đầu ra bạn sẽ thấy lúc đầu chứa thông tin về nơi Netdata sẽ lưu trữ tất cả các thành phần của nó. Bạn có thể đọc qua những điều này để quen thuộc hơn một chút với cách chương trình được dàn trải trên hệ thống file sau khi cài đặt.
Installer Output. . . It will be installed at these locations: - the daemon at /usr/sbin/netdata - config files at /etc/netdata - web files at /usr/share/netdata - plugins at /usr/libexec/netdata - cache files at /var/cache/netdata - db files at /var/lib/netdata - log files at /var/log/netdata - pid file at /var/run . . .
Nhấn ENTER
để tiếp tục cài đặt. Sau một lúc, ở cuối chuỗi kết quả , bạn sẽ thấy thông báo sau:
Installer Output. . . ^ |.-. .-. .-. .-. .-. . netdata .-. .- | '-' '-' '-' '-' '-' is installed and running now! -' '-' +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+---> enjoy real-time performance and health monitoring...
Netdata hiện đã được cài đặt và chạy thành công, đồng thời sẽ tự động chạy khi khởi động lại server .
Nếu bạn đã bật UFW, như đã nêu chi tiết trong hướng dẫn Cài đặt server ban đầu cho Ubuntu 16.04 , bạn cần mở cổng 19999
cho web server nội bộ của Netdata.
- sudo ufw allow 19999/tcp
Đến đây, bạn có thể xem trang tổng quan mặc định bằng cách truy cập http:// your_server_ip :19999/
trong trình duyệt yêu thích của bạn . Bạn sẽ thấy tổng quan về các chỉ số trực tiếp của hệ thống. Đây là một kiểm tra tốt rằng mọi thứ đang hoạt động cho đến nay, nhưng trước khi ta khám phá GUI, hãy tùy chỉnh Netdata một chút.
Bước 2 - Cấu hình mức sử dụng bộ nhớ của Netdata
Bạn có thể xem cấu hình hiện tại của Netdata trong trình duyệt của bạn bằng cách truy cập http:// your_server_ip :19999/netdata.conf
.
Bạn sẽ thấy ở đây rằng tất cả (hoặc hầu hết) các tùy chọn có thể cấu hình đều được comment (nghĩa là bắt đầu bằng dấu #
). Điều này là do cấu hình của Netdata hoạt động bằng cách sử dụng một tập hợp các giá trị mặc định giả định. Mọi cài đặt bị vô hiệu hóa đều sử dụng giá trị mặc định của Netdata; nếu một cài đặt không được chú thích, giá trị được chỉ định sẽ overrides lên giá trị mặc định. Điều này giữ cho file cấu hình chỉ chứa những gì bạn đã sửa đổi.
Quay lại server của bạn, file cấu hình chính là /etc/netdata/netdata.conf
. Tùy chọn mà ta sẽ tùy chỉnh trong hướng dẫn này là tham số history
. Điều này kiểm soát kích thước tối đa của database bộ nhớ được Netdata sử dụng.
Đây là nơi bạn sẽ phải quyết định dung lượng RAM bạn muốn dành cho Netdata hoặc thời gian bạn muốn lưu giữ dữ liệu biểu đồ đã ghi trước khi bị mất:
- 3600 giây (1 giờ lưu trữ dữ liệu biểu đồ) sử dụng 15 MB RAM
- 7200 giây (2 giờ lưu giữ dữ liệu biểu đồ) sử dụng 30 MB RAM
- 14400 giây (4 giờ lưu trữ dữ liệu biểu đồ) sử dụng 60 MB RAM
- 28800 giây (8 giờ lưu trữ dữ liệu biểu đồ) sử dụng 120 MB RAM
- 43200 giây (12 giờ lưu trữ dữ liệu biểu đồ) sử dụng 180 MB RAM
- 86400 giây (24 giờ lưu giữ dữ liệu biểu đồ) sử dụng 360 MB RAM
Lưu ý các ước tính ở trên dựa trên số lượng biểu đồ được sử dụng bởi console chứng khoán. Việc xóa hoặc thêm biểu đồ tùy chỉnh trong tương lai sẽ ảnh hưởng đến những ước tính này.
Mở file cấu hình chính của Netdata bằng nano
hoặc editor yêu thích của bạn.
- sudo nano /etc/netdata/netdata.conf
Tìm tùy chọn history
trong phần [global]
.
. . . [global] # glibc malloc arena max for plugins = 1 . . . # hostname = test-netdata # history = 3600 # update every = 1 . . .
Thay thế giá trị 3600
giá trị bạn đã quyết định trước đó. Ở đây, ta đang sử dụng 14400
, cung cấp cho ta 4 giờ lưu trữ dữ liệu. Đảm bảo bỏ comment bằng cách xóa ký hiệu #
để tùy chọn này không còn bị Netdata bỏ qua.
. . . [global] # glibc malloc arena max for plugins = 1 . . . # hostname = test-netdata history = 14400 # update every = 1 . . .
Lưu file sau khi thực hiện thay đổi này.
Mặc dù sửa đổi này có thể làm tăng dung lượng RAM mà Netdata sẽ sử dụng, nhưng sửa đổi tiếp theo mà ta sẽ thực hiện trong bước tiếp theo sẽ giảm đáng kể.
Bước 3 - Bật hợp nhất nhân cùng trang
Mặc dù Netdata chạy và hoạt động ngay lập tức, ta có thể thực hiện nhiều sửa đổi hơn đối với cách Netdata sử dụng tài nguyên hệ thống để tăng tốc và tối ưu hóa hiệu suất của nó. Ta sẽ bắt đầu với việc bật Kernel Same-page Merging , viết tắt là KSM. Các nhà phát triển Netdata ước tính điều này làm giảm mức sử dụng bộ nhớ của Netdata từ 40-60%.
Sau khi được kích hoạt, trình KSM sẽ quét bộ nhớ định kỳ, tìm kiếm các trang có nội dung giống hệt nhau có thể được thay thế bằng một trang được bảo vệ chống ghi. Trong bối cảnh này, nó cho phép chia sẻ các trang bộ nhớ giống nhau giữa các quy trình hoặc chương trình khác nhau đang chạy trên hệ thống. Điều này làm giảm việc tạo ra các nội dung bộ nhớ trùng lặp không cần thiết.
Để kích hoạt vĩnh viễn khía cạnh này của nhân hệ thống Linux, hãy mở file /etc/rc.local
bằng editor .
- sudo nano /etc/rc.local
Tệp /etc/rc.local
hoặc file điều khiển chạy này được thực thi sau khi tất cả các dịch vụ và quy trình hệ thống Linux bình thường khác được khởi động. Nó hữu ích để chỉ định các dịch vụ tùy chỉnh - hoặc, trong trường hợp của ta , để bật KSM tại thời gian chạy của server .
Thêm hai lệnh được đánh dấu bên dưới vào cuối file , trước dòng exit 0
cuối cùng, như được hiển thị ở đây:
#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. echo 1 > /sys/kernel/mm/ksm/run echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs exit 0
Lệnh đầu tiên thêm 1 vào file kernel KSM run
, lệnh này sẽ kích hoạt tính năng. Lệnh thứ hai yêu cầu trình KSM chạy một lần mỗi giây và đánh giá 100 trang để loại bỏ trùng lặp.
Sau khi bạn lưu file , KSM bây giờ sẽ được bật vào lần tiếp theo server khởi động lại và vẫn tồn tại cho đến khi khởi động lại trong tương lai. Để bật nó trong phần còn lại của thời gian hoạt động hiện tại của server này, bạn cần chạy hai lệnh bạn đã thêm vào rc.local
theo cách thủ công trên dòng lệnh.
Đầu tiên, bắt đầu và nhập phiên shell mới với quyền là user root của server bằng cách sử dụng cờ -s
với sudo
. Điều này là cần thiết vì hai lệnh trước đó sử dụng chuyển hướng kết quả (thông qua toán tử >
) và cần được thực thi bởi một shell root để thành công.
- sudo -s
Bây giờ nhập hai lệnh từ trước:
- echo 1 > /sys/kernel/mm/ksm/run
- echo 1000 > /sys/kernel/mm/ksm/sleep_millisecs
Sau đó, rời khỏi shell root và trả lại phiên shell bình thường của bạn.
- exit
Cuối cùng, để áp dụng tất cả các thay đổi ta đã thực hiện trong bước này và bước trước đó, ta phải khởi động lại Netdata.
- sudo systemctl restart netdata
Bạn có thể xác minh KSM hiện đã được bật bằng cách tìm biểu đồ KSM hoạt động mới được thêm vào trong console Netdata. Điều này được tìm thấy trong cây menu ở bên phải, bên dưới Bộ nhớ> Bộ nhớ Deduper .
Bây giờ ta biết rằng console và KSM đang hoạt động, nên cấp quyền truy cập vào console thông qua một web server như Nginx thay vì web server tích hợp sẵn. Điều này không hoàn toàn cần thiết, nhưng nó được khuyến khích, vì vậy hãy làm theo bước tiếp theo để cài đặt nó.
Bước 4 - Lưu trữ Trang tổng quan thông qua Nginx (Tùy chọn)
Lưu trữ Netdata qua Nginx giúp bạn dễ dàng truy cập trang tổng quan an toàn hơn và cũng cho phép bạn trỏ đến trang tổng quan Netdata của các server khác trong tương lai, nếu bạn cần. Bạn có thể làm theo hướng dẫn yêu cầu cho Nginx để cài đặt nó ngay bây giờ, nếu bạn chưa có.
Bạn cũng cần cài đặt gói apache2-utils
. Gói này chứa chương trình htpasswd
, mà ta cần sau này đảm bảo quyền truy cập vào trang console .
- sudo apt-get install apache2-utils
Tiếp theo, tạo một file cấu hình server Nginx mới. Lưu ý ở đây, ta đang sử dụng một file trong folder /conf.d
, nhưng bạn có thể sử dụng /sites-available
và /sites-enabled
nếu bạn đang sử dụng Nginx cho những thứ khác ngoài Netdata. Bạn có thể đọc thêm về các file và folder Nginx trong hướng dẫn cài đặt .
- sudo nano /etc/nginx/conf.d/default.conf
Tệp cấu hình này sẽ cho Nginx biết các yêu cầu đến proxy cho trang console . Ta cũng sẽ thêm một dấu nhắc xác thực đơn giản để chỉ những người có tên user và password chính xác mới có thể truy cập.
Dưới đây là toàn bộ file cấu hình để bạn copy paste . Thay đổi hai màu đỏ mục đánh dấu cho sự listen
và server_name
chỉ thị trên địa chỉ IP của server và domain được phân bổ tương ứng. Hãy cẩn thận để bao gồm sự kết thúc ;
ở cuối mỗi. Nếu bạn không có domain , bạn có thể để lại lệnh server_name
dưới dạng example.com
.
upstream netdata-backend { server 127.0.0.1:19999; keepalive 64; } server { listen your_server_ip:80; server_name example.com; auth_basic "Authentication Required"; auth_basic_user_file netdata-access; location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://netdata-backend; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header Connection "keep-alive"; proxy_store off; } }
Khi bạn chắc chắn rằng file của bạn trùng với khối mã này, bạn có thể lưu và thoát để quay lại dấu nhắc lệnh.
Hãy giải thích file này để bạn hiểu nó đang làm gì. Đây là phần đầu tiên:
upstream netdata-backend { server 127.0.0.1:19999; keepalive 64; }
Mô-đun upstream
này có tên là netdata-backend
nhắm đến đến web server Netdata được tích hợp sẵn bằng cách sử dụng địa chỉ loopback của server , 127.0.0.1
và cổng của Netdata, 19999
. Chỉ thị keepalive
đặt số lượng tối đa các kết nối không hoạt động ngược dòng có thể vẫn mở tại bất kỳ thời điểm nào (cho mỗi tiến trình Nginx worker). Định nghĩa module upstream
này được yêu cầu sau này bởi chỉ thị proxy_pass
.
Trực tiếp sau đây là khối server
chính.
server { listen your_server_ip:80; server_name example.com; auth_basic "Authentication Required"; auth_basic_user_file netdata-access;
Hai dòng đầu tiên trong khối xác định địa chỉ IP bên ngoài mà Nginx sẽ listen
khi client cố gắng kết nối. Lệnh server_name
yêu cầu Nginx chạy khối server này khi client sử dụng domain được chỉ định.
Hai dòng cuối cùng trong đoạn mã này cài đặt xác thực tên user và password HTTP đơn giản. Nó thực hiện điều này bằng cách sử dụng module auth_basic
để hiển thị dấu nhắc tên user và password . Bạn có thể tùy chỉnh thông báo cho dấu nhắc ; ở đây, nó được đặt thành Yêu cầu xác thực . auth_basic_user_file
chỉ định tên file và vị trí để lưu trữ thông tin đăng nhập của dấu nhắc xác thực, được tạo sau này trong bước này.
Khối location
cuối cùng, được lồng bên trong khối server
, xử lý ủy quyền và chuyển các yêu cầu đến cho Nginx.
location / { proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://netdata-backend; proxy_http_version 1.1; proxy_pass_request_headers on; proxy_set_header Connection "keep-alive"; proxy_store off; } }
Tóm lại ở đây, mã này là thứ chuyển các yêu cầu của khách hàng đến web server Netdata và đến lượt là console . Dòng chỉ thị proxy_pass
trở lại module upstream
ở đầu file phải trỏ đến nó theo tên, netdata-backend
.
Nếu chưa có, bạn có thể lưu file cấu hình này. Đây là nơi chương trình htpasswd
từ gói apache2-utils
giúp ta tạo thông tin xác thực đăng nhập user cho dấu nhắc đăng nhập console .
Đầu tiên, ta sẽ tạo tên user và password . Chạy lệnh sau, thay thế sammy bằng bất kỳ tên user nào bạn muốn sử dụng trong Netdata. Khi được yêu cầu , hãy nhập password bạn muốn sử dụng.
- sudo htpasswd -c /etc/nginx/netdata-access sammy
Thao tác này tạo một file tại /etc/nginx/netdata-access
chứa tên user và password bạn đã cung cấp. Mật khẩu đã tạo được mã hóa trong file , vì vậy nó không thể được xem là văn bản thuần túy.
Khởi động lại Nginx để kích hoạt cấu hình mới mà ta đã thêm.
- sudo systemctl restart nginx
Để kiểm tra cấu hình Nginx lần đầu tiên, hãy truy cập http:// your_server_ip
trong trình duyệt web yêu thích của bạn. Bạn sẽ thấy một dấu nhắc xác thực. Nhập tên user cộng với password mà bạn đã cung cấp trước đó trong bước này để có quyền truy cập vào trang tổng quan mà ta sẽ khám phá trong Bước 5.
Bước 5 - Khám phá Trang tổng quan
Nếu bạn không thực hiện theo Bước 4 tùy chọn, hãy truy cập http:// your_server_ip :19999/
trong trình duyệt yêu thích của bạn ngay bây giờ để truy cập trang tổng quan.
Bạn sẽ thấy trang tổng quan và tổng quan về các chỉ số trực tiếp của hệ thống. Các chỉ báo kiểu HUD ở đầu trang thay đổi khi bạn di chuột qua mỗi khoảng thời gian trong các biểu đồ tiếp theo.
Các đồ thị và biểu đồ riêng lẻ trong phần tổng quan này cung cấp các account chi tiết về từng khía cạnh hệ thống, từ CPU đến bộ nhớ đến lưu lượng mạng và hơn thế nữa.
Biểu đồ có tính tương tác và có thể được kéo sang trái hoặc phải bằng nút chuột của bạn để di chuyển qua lại trong các khoảng thời gian khác nhau.
Nhấn giữ SHIFT
và cuộn chuột vào hoặc cuộn ra trên biểu đồ sẽ thu hẹp hoặc mở rộng các mốc thời gian. Nhấp đúp vào biểu đồ để đặt lại biểu đồ về giao diện và chế độ xem mặc định.
Cách nhanh nhất để chuyển xung quanh trang tổng quan là sử dụng cây menu ở bên phải của trang. Điều này thay đổi tiêu điểm và màu sắc tùy thuộc vào phần nào của trang bạn hiện đang xem.
Cuộn xuống trang hoặc sử dụng cây menu cho phép truy cập vào các biểu đồ chuyên sâu hơn. Chúng rất chi tiết và được kiểm soát giống như các biểu đồ trong phần tổng quan ban đầu.
Có rất nhiều biểu đồ bổ sung về thống kê cụ thể có sẵn thông qua Netdata.
Một phần quan trọng của GUI là trang cập nhật. Netdata nhận được các bản cập nhật khá thường xuyên và việc duy trì cài đặt của bạn hiện tại rất dễ thực hiện. Trang tổng quan chứa nút Cập nhật ở trên cùng cho phép bạn kiểm tra xem có version mới để download hay không.
Nhấp vào nút này sẽ mở ra menu mới với nhiều chi tiết hơn và nút Kiểm tra ngay để kiểm tra các bản cập nhật theo cách thủ công.
Nếu có sẵn bản cập nhật, bạn chỉ cần chạy tập lệnh cập nhật được cung cấp từ repository Netdata Git, mà ta đã sao chép vào folder chính của user Linux ở Bước 1. Tức là, khi có bản cập nhật, chỉ cần chạy sudo ~/netdata/netdata-updater.sh
từ dòng lệnh.
Kết luận
Để tìm hiểu thêm về dự án Netdata và cách mở rộng hơn nữa những gì đã được cài đặt tại đây, hãy truy cập dự án Netdata GitHub . Thông tin về register Netdata, cài đặt cảnh báo và cài đặt biểu đồ / module tùy chỉnh được đề cập trong Netdata wiki , cũng thảo luận về các chủ đề như tạo huy hiệu HTML hoặc xử lý file log của Netdata.
Các tin liên quan
Cách sắp xếp công việc theo nhóm với ONLYOFFICE trên Ubuntu 14.042016-11-22
Cách triển khai CockroachDB trên Cụm ba node trên Ubuntu 16.04
2016-11-18
Cách thu thập các chỉ số cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 16.04
2016-11-03
Cách thu thập số liệu cơ sở hạ tầng với Packetbeat và ELK trên Ubuntu 14.04
2016-11-02
Cách thiết lập ứng dụng Node.js để sản xuất trên Ubuntu 16.04
2016-11-01
Cách cài đặt và cấu hình ownCloud trên Ubuntu 16.04
2016-10-31
Cách sử dụng module bản đồ của Nginx trên Ubuntu 16.04
2016-10-31
Cách thực hiện bộ đệm trình duyệt với module tiêu đề của Nginx trên Ubuntu 16.04
2016-10-31
Cách di chuyển thư mục dữ liệu cho ownCloud trên Ubuntu 16.04
2016-10-19
Cách cài đặt Hadoop ở chế độ độc lập trên Ubuntu 16.04
2016-10-13