Cách cài đặt và giám sát các dịch vụ bằng Netdata Monitoring Tool trên Rocky Linux 8

theanh

Administrator
Nhân viên
Netdata là một hệ thống giám sát mã nguồn mở dành cho các hệ điều hành dựa trên Linux. Nó cung cấp hiệu suất và giám sát theo thời gian thực bằng cách sử dụng các bảng điều khiển đẹp và chi tiết. Nó cung cấp hàng trăm công cụ để giám sát máy chủ, CPU, mức sử dụng bộ nhớ, quy trình hệ thống, mức sử dụng đĩa, mạng IPv4 và IPv6, tường lửa hệ thống và các ứng dụng như Nginx, MySQL, MongoDB, Redis, ElasticSearch, PostgreSQL, PHP-FPM, v.v. Nó tích hợp với các công cụ giám sát khác như Prometheus, Graphite, Kafka, Grafana, v.v.

Trong hướng dẫn này, bạn sẽ học cách cài đặt và giám sát nhiều dịch vụ khác nhau bằng Netdata Tool trên máy chủ Rocky Linux 8. Chúng tôi sẽ sử dụng Netdata để theo dõi số liệu của ngăn xếp LEMP và công cụ Docker.

Điều kiện tiên quyết​

  • Máy chủ chạy Rocky Linux 8.
  • Người dùng không phải root có quyền sudo.
  • Tên miền đủ điều kiện (FQDN) như netdata.example.com trỏ đến máy chủ của bạn.
  • Tài khoản Slack và không gian làm việc để nhận thông báo.
  • Tài khoản SMTP có dịch vụ email như Amazon SES hoặc Mailgun.
  • Vô hiệu hóa SELinux.

Bước 1 - Cấu hình Tường lửa​

Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --staterunning
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Nó sẽ hiển thị đầu ra sau.
Mã:
cockpit dhcpv6-client ssh
Cho phép các cổng HTTP và HTTPS.
Mã:
$ sudo firewall-cmd --permanent --add-service=http$ sudo firewall-cmd --permanent --add-service=https
Kiểm tra lại trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --permanent --list-services
Bạn sẽ thấy đầu ra tương tự.
Mã:
cockpit dhcpv6-client http https ssh
Tải lại tường lửa để kích hoạt các thay đổi.
Mã:
$ sudo firewall-cmd --reload

Bước 2 - Cài đặt NetData​

Netdata đi kèm với một tập lệnh cài đặt có thể hoạt động trên bất kỳ bản phân phối Linux nào. Chạy lệnh sau để tải xuống và chạy tập lệnh cài đặt.
Mã:
$ bash  (($status >= $WARNING) ? (60) : (70))crit: $this > (($status == $CRITICAL) ? (75) : (85))
Lưu tệp và thoát khỏi trình chỉnh sửa.

Cài đặt trên sẽ gửi cảnh báo nếu mức sử dụng CPU nằm trong khoảng từ 60 đến 70% và cảnh báo nghiêm trọng khi mức sử dụng CPU nằm trong khoảng từ 75 đến 85%.

Khởi động lại dịch vụ Netdata.
Mã:
$ sudo systemctl restart netdata
Chúng ta hãy kiểm tra cài đặt bằng cách cài đặt ứng dụng Stress.
Mã:
$ sudo dnf install stress
Chạy lệnh sau để tăng đột biến mức sử dụng CPU của máy chủ.
Mã:
$ stress --cpu 2
Để lệnh chạy trong 5-10 phút và bạn sẽ nhận được thông báo Mức sử dụng CPU cao. Sau khi nhận được những thông báo này, hãy quay lại terminal và thoát lệnh bằng cách nhấn Ctrl + Z.

Sau khi dừng dịch vụ, bạn sẽ nhận được thông báo CPU đã phục hồi trên Slack.


Bước 10 - Cấu hình Nginx Monitoring​

Một trong những ứng dụng được giám sát phổ biến nhất bằng Netdata là các gói máy chủ và SQL. Hãy giám sát máy chủ Nginx bằng Netdata.

Để bật giám sát máy chủ Nginx, chúng ta cần sử dụng ngx_http_stub_status_module. Nó thường được cài đặt sẵn với Nginx. Bạn có thể kiểm tra xem mô-đun có hiện diện hay không.
Mã:
$ nginx -V 2>&1 | grep -o with-http_stub_status_modulewith-http_stub_status_module
Nếu bạn không nhận được phản hồi, điều đó có nghĩa là cài đặt Nginx của bạn không hỗ trợ tính năng này. Bạn sẽ cần phải biên dịch Nginx trong trường hợp đó.

Mở tệp cấu hình mặc định của Nginx /etc/nginx/conf.d/default.conf để chỉnh sửa. Vị trí của tệp khác vì chúng tôi đã cài đặt Nginx từ kho lưu trữ chính thức của nó. Nếu bạn đang cài đặt Nginx từ kho lưu trữ của hệ điều hành, thì vị trí của tệp sẽ là /etc/nginx/nginx.conf.
Mã:
$ sudo nano /etc/nginx/conf.d/default.conf
Nhập mã sau vào khối máy chủ trước dấu ngoặc nhọn đóng cuối cùng.
Mã:
# Bật mô-đun stub_statuslocation /stub_status { stub_status; allow 127.0.0.1; #only allow requests from localhost deny all; #từ chối tất cả các máy chủ khác}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: thử nghiệm tệp cấu hình /etc/nginx/nginx.conf thành công
Khởi động lại máy chủ Nginx.
Mã:
$ sudo systemctl restart nginx
Khởi động lại dịch vụ Netdata.
Mã:
$ sudo systemctl restart netdata
Bạn sẽ thấy thông tin chi tiết về kết nối Nginx trong bảng điều khiển Netdata của mình.


Theo dõi Nhật ký Nginx​

Netdata cũng có thể theo dõi Nginx nhật ký truy cập. Để thực hiện điều đó, hãy chuyển sang thư mục Netdata.
Mã:
$ cd /etc/netdata
Chạy lệnh sau để tạo tệp cấu hình để theo dõi Nhật ký truy cập.
Mã:
$ sudo ./edit-config python.d/web_log.conf
Cuộn xuống cuối tệp và tìm phần sau.
Mã:
# ----------------------------------------# nginx log on various distros# debian, archnginx_log: name: 'nginx' path: '/var/log/nginx/access.log'# gentoonginx_log2: name: 'nginx_site' path: '/var/log/nginx/localhost.access_log'
Thay đổi đường dẫn để theo dõi các tệp nhật ký tương ứng. Bạn có thể thêm nhiều phần để theo dõi nhiều máy chủ và tệp nhật ký truy cập của chúng. Tệp cấu hình của chúng tôi trông như sau.
Mã:
# -------------------------------------------# nginx log on various distros# debian, archnginx_log: name: 'nginx' path: '/var/log/nginx/access.log'nginx_log2: name: 'nginx_site1' path: '/var/log/nginx/site1.access_log'nginx_log3: name: 'nginx_site2' path: '/var/log/nginx/site2.access_log'nginx_log4: name: 'nginx_site3' path: '/var/log/nginx/site3.access_log'
Lưu và thoát khỏi trình chỉnh sửa.

Để truy cập các tệp nhật ký, Netdata cần có quyền truy cập vào thư mục. Theo mặc định, nhóm hệ thống adm có quyền truy cập vào các tệp nhật ký. Để cấp quyền truy cập Netdata, chúng ta cần thêm người dùng netdata vào nhóm adm.
Mã:
$ sudo usermod -aG adm netdata
Khởi động lại Nginx và dịch vụ Netdata.
Mã:
$ sudo systemctl restart nginx netdata
Tải lại bảng điều khiển Netdata để xem dữ liệu tệp nhật ký của bạn.


Bước 11 - Cấu hình Giám sát MySQL/MariaDB​

Chúng ta sẽ cài đặt MariaDB cho hướng dẫn này. Các bước vẫn giữ nguyên nếu bạn đang sử dụng máy chủ MySQL.

Thêm kho lưu trữ cho MariaDB 10.6.
Mã:
$ sudo nano /etc/yum.repos.d/MariaDB.repo
Dán mã sau vào đó.
Mã:
# MariaDB 10.6 CentOS repository list - created 2022-04-12 11:12 UTC# https://mariadb.org/download/[mariadb]name = MariaDBbaseurl = https://download.nus.edu.sg/mirror/mariadb/yum/10.6/centos8-amd64module_hotfixes=1gpgkey=https://download.nus.edu.sg/mirror/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck=1
Lưu tệp bằng nhấn Ctrl + X và nhập Y khi được nhắc.

Cài đặt MariaDB.
Mã:
$ sudo dnf install MariaDB-server
Bật máy chủ MariaDB.
Mã:
$ sudo systemctl enable mariadb
Khởi chạy tập lệnh cài đặt bảo mật MySQL. Tên tệp khác nhau trong trường hợp của MariaDB.
Mã:
$ sudo mariadb-secure-installation....Nhập mật khẩu hiện tại cho root (nhập nếu không có): (Nhấn Enter)....Chuyển sang xác thực unix_socket [Y/n] Y (Nhập Y và Nhấn Enter)....Đổi mật khẩu root? [Y/n] Y (Nhập Y và Nhấn Enter)Mật khẩu mới:Nhập lại mật khẩu mới:Đã cập nhật mật khẩu thành công!....Xóa người dùng ẩn danh? [Y/n] Y (Nhập Y và nhấn Enter)...Không cho phép đăng nhập root từ xa? [Y/n] Y (Nhập Y và nhấn Enter)....Xóa cơ sở dữ liệu thử nghiệm và quyền truy cập vào cơ sở dữ liệu đó? [Y/n] Y (Nhập Y và nhấn Enter)....Tải lại bảng đặc quyền ngay bây giờ? [Y/n] Y (Nhập Y và nhấn Enter)....Xong! Nếu bạn đã hoàn tất tất cả các bước trên, thì cài đặt MariaDBcủa bạn hiện đã an toàn.Cảm ơn bạn đã sử dụng MariaDB!
Mở tệp /etc/my.cnf.d/server.cnf để chỉnh sửa.
Mã:
$ sudo nano /etc/my.cnf.d/server.cnf
Tìm phần [mariadb] trong tệp và dán dòng sau như hiển thị bên dưới để kích hoạt plugin Userstats. Thiết lập này chỉ hoạt động trên MariaDB và không hoạt động trên máy chủ MySQL.
Mã:
[mariadb]userstat = 1
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động máy chủ MariaDB.
Mã:
$ sudo systemctl start mariadb
Khởi động lại dịch vụ Netdata.
Mã:
$ sudo systemctl restart netdata
Bảng điều khiển MariaDB/MySQL sẽ bắt đầu xuất hiện trong bảng điều khiển Netdata.


Bước 12 - Cấu hình Giám sát PHP-FPM​

Bạn có thể giám sát một hoặc nhiều phiên bản PHP-FPM bằng Netdata. Đối với hướng dẫn của chúng tôi, chúng tôi sẽ cài đặt PHP 8.0 và sau đó bật tính năng giám sát của nó.

Chúng tôi sẽ cài đặt PHP bằng kho lưu trữ Remi. Chúng tôi đã cài đặt kho EPEL ở bước 3. Cài đặt kho Remi.
Mã:
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Kiểm tra các luồng PHP khả dụng.
Mã:
$ dnf module list php -yKiểm tra ngày hết hạn siêu dữ liệu gần nhất: 0:00:12 trước vào Thứ sáu, ngày 03 tháng 12 năm 2021 lúc 09:39:32 sáng UTC.Rocky Linux 8 - AppStreamTên Stream Profiles Tóm tắtphp 7.2 [d] common [d], devel, minimal PHP scripting languagephp 7.3 common [d], devel, minimal PHP scripting languagephp 7.4 common [d], devel, minimal PHP scripting languageRemi's Modular repository for Enterprise Linux 8 - x86_64Tên Stream Profiles Tóm tắtphp remi-7.2 common [d], devel, minimal PHP scripting languagephp remi-7.3 common [d], devel, minimal PHP scripting languagephp remi-7.4 common [d], devel, minimal PHP scripting languagephp remi-8.0 common [d], devel, minimal PHP scripting languagephp remi-8.1 common [d], devel, minimal PHP scripting languageGợi ý: [d]efault, [e]nabled, [x]disabled, [i]ninstalled
Phiên bản mặc định là 7.2. Kích hoạt kho lưu trữ PHP 8.0 của Remi.
Mã:
$ sudo dnf module reset php -y$ sudo dnf module enable php:remi-8.0
Tiếp theo, cài đặt PHP và các tiện ích mở rộng mà Firefly III yêu cầu. Gói php chứa một số phần phụ thuộc mà Firefly III yêu cầu, vì vậy hãy đảm bảo bạn bao gồm chúng.
Mã:
$ sudo dnf install php php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-intl php-bcmath php-gd php-ldap php-cli
Xác minh cài đặt.
Mã:
$ php --versionPHP 8.0.16 (cli) (xây dựng: 15 tháng 2 năm 2022 21:34:32) (NTS gcc x86_64)Bản quyền (c) The PHP GroupZend Engine v4.0.16, Bản quyền (c) Zend Technologies với Zend OPcache v8.0.16, Bản quyền (c), của Zend Technologies

Cấu hình PHP​

Mở tệp /etc/php-fpm.d/www.conf.
Mã:
$ sudo nano /etc/php-fpm.d/www.conf
Chúng ta cần đặt người dùng/nhóm Unix của các quy trình PHP thành nginx. Tìm các dòng user=www-data và group=www-data trong tệp và thay đổi chúng thành nginx.
Mã:
...; Người dùng/nhóm quy trình Unix; Lưu ý: Người dùng là bắt buộc. Nếu nhóm không được đặt, nhóm người dùng mặc định; sẽ được sử dụng.; RPM: người dùng apache được chọn để cung cấp quyền truy cập vào cùng thư mục với httpduser = nginx; RPM: Giữ một nhóm được phép ghi vào thư mục nhật ký.group = nginx...
Cuộn xuống tệp để tìm tùy chọn ;pm.status_path = /status. Bỏ chú thích dòng bằng cách xóa dấu chấm phẩy ở phía trước, như được hiển thị bên dưới.
Mã:
; Lưu ý: Có một trang web mẫu giám sát trạng thái FPM theo thời gian thực; Trang web này có sẵn trong: @EXPANDED_DATADIR@/fpm/status.html;; Lưu ý: Giá trị phải bắt đầu bằng dấu gạch chéo (/) ở đầu. Giá trị có thể là; bất kỳ giá trị nào, nhưng có thể không nên sử dụng phần mở rộng .php hoặc có thể; xung đột với tệp PHP thực.; Giá trị mặc định: không được thiết lậppm.status_path = /status
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Bật và khởi động dịch vụ PHP.
Mã:
$ sudo systemctl enable php-fpm --now

Thêm cài đặt PHP vào Nginx​

Mở tệp cấu hình mặc định của Nginx /etc/nginx/conf.d/default.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/default.conf
Nhập mã sau vào bên trong khối máy chủ trước dấu ngoặc nhọn đóng cuối cùng.
Mã:
# định nghĩa giám sát PHP-FPMvị trí ~ ^/(status|ping)$ { cho phép 127.0.0.1; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_index index.php; bao gồm fastcgi_params; fastcgi_pass unix:/run/php-fpm/.sock; # Tùy thuộc vào Phiên bản PHP và Bản phân phối HĐH}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh cấu hình Nginx.
Mã:
$ sudo nginx -tnginx: cú pháp tệp cấu hình /etc/nginx/nginx.conf là oknginx: thử nghiệm tệp cấu hình /etc/nginx/nginx.conf thành công
Khởi động lại máy chủ Nginx.
Mã:
$ sudo systemctl restart nginx
Khởi động lại dịch vụ Netdata.
Mã:
$ sudo systemctl restart netdata
Tải lại bảng điều khiển Netdata và bạn sẽ thấy số liệu thống kê PHP-FPM.


Bước 13 - Cấu hình Docker Engine và Giám sát Container Nó cũng có thể giám sát các ứng dụng đang chạy bên trong các container này, nhưng chúng tôi sẽ không đề cập đến nó trong hướng dẫn này.​

Trước tiên, hãy cài đặt Docker.
Mã:
$ sudo dnf install yum-utils$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo$ sudo dnf install docker-ce docker-ce-cli containerd.io
Bật và khởi động dịch vụ Docker.
Mã:
$ sudo systemctl enable docker --now
Để giám sát công cụ Docker, bạn cần bật tính năng số liệu của Docker.

Tạo và mở tệp /etc/docker/daemon.jsonđể chỉnh sửa.
Mã:
$ sudo nano /etc/docker/daemon.json
Dán mã sau vào đó.
Mã:
{ "metrics-addr" : "127.0.0.1:9323", "experimental" : true}
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Khởi động lại dịch vụ Netdata và Docker.
Mã:
$ sudo systemctl restart docker netdata
Tải lại bảng điều khiển Netdata và bạn có thể thấy số liệu thống kê Docker.



Bạn sẽ thấy một mục nhập khác có tên Prometheus Metrics trên bảng điều khiển của mình vì tùy chọn số liệu thống kê được tạo cho bảng điều khiển Prometheus.



Bước tiếp theo là theo dõi vùng chứa Docker. Netdata sử dụng nhóm điều khiển, được gọi là cgroups để theo dõi vùng chứa Docker. Nhóm điều khiển là một tính năng của Linux giới hạn và theo dõi mức sử dụng tài nguyên của một tập hợp các quy trình, trong trường hợp này là vùng chứa. Nếu bạn có các container Docker đang chạy khi bạn cài đặt Netdata, chúng sẽ tự động được theo dõi. Tuy nhiên, nếu bạn chạy một container sau khi cài đặt Netdata, bạn cần khởi động lại nó.

Chạy một container thử nghiệm.
Mã:
$ docker container run -d nginx
Kiểm tra trạng thái của container.
Mã:
$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES938b2cf30927 nginx "/docker-entrypoint.…" 3 giây trước Lên 2 giây 80/tcp pensive_lovelace
Tên của container là tender_murdock như hiển thị. Vì container đã được khởi động sau khi cài đặt Netdata, hãy khởi động lại dịch vụ.
Mã:
$ sudo systemctl restart netdata
Tải Dashboard và bạn sẽ có thể thấy số liệu thống kê của Container.


Kết luận​

Bài hướng dẫn này kết thúc về cách cài đặt và sử dụng hệ thống giám sát Netdata để giám sát nhiều ứng dụng khác nhau như Nginx, MySQL, PHP-FPM và Docker trên máy chủ Rocky Linux. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên