Phần mềm giám sát hệ thống là một công cụ quan trọng giúp cho việc quản lý và bảo trì hệ thống được hiệu quả hơn. Nó giúp cho người quản trị có thể giám sát các thông số của hệ thống như tài nguyên CPU, bộ nhớ, đĩa và mạng để có thể phát hiện và khắc phục các vấn đề kịp thời. Ngoài ra, phần mềm giám sát hệ thống còn cung cấp các tính năng như giám sát thời gian thực, cảnh báo và ghi lại lịch sử giám sát. Điều này giúp cho người quản trị có thể đưa ra các quyết định đúng đắn và kịp thời để đảm bảo hoạt động của hệ thống được ổn định và hiệu quả.
Trong bài này mình sẽ giới thiệu giải pháp giám sát hệ thống máy chủ AIX thông qua giải pháp Njmon - InfluxDB - Grafana
Với bộ giải pháp này ngoài có thể giám sát hệ thống AIX nói chung thì chúng ta cũng có thể giám sát các máy VIOS power của IBM hay giám sát thu thập thông tin của các máy chủ Linux (Ubuntu, SLES, RHEL,...)
Để xây dựng giải pháp này chúng ta cần:
1.1 Tool Njmon:
NJMon là một phần mềm giám sát hệ thống mã nguồn mở được viết bằng Perl. Nó được thiết kế để giám sát các thông số hệ thống như tài nguyên CPU, bộ nhớ, đĩa và mạng. NJMon cung cấp các tính năng như giám sát thời gian thực, cảnh báo và ghi lại lịch sử giám sát.
Njmon giống như nmon nhưng thu thập nhiều dữ liệu cấu hình và hiệu suất hơn cũng như đầu ra ở định dạng JSON sẵn sàng để tải ngay lên cơ sở dữ liệu thống kê hiệu suất để vẽ biểu đồ gần thời gian thực bằng các công cụ vẽ biểu đồ trực tuyến. njmon cũng có thể được chuyển sang chế độ nimon, chế độ này tạo định dạng Giao thức dòng InfluxDB để gửi trực tiếp tới InfluxDB. Có một phiên bản njmon cho AIX và một njmon khác cho Linux.
Những Infrastructure có thể chọn lựa cho Njmon
Có thể kết hợp giải pháp Njmon cho database influxDB, splunk, elastic hay Prometheus, tất cả những database trên đều tích hợp tốt với Grafana
Trong bài này mình sẽ hướng dẫn với giải pháp Njmon -> InfluxDB -> Grafana
1.2. Database InfluxDB
InfluxDB là bộ công cụ chuỗi thời gian thiết yếu - một cơ sở dữ liệu chuỗi thời gian mã nguồn mở được thiết kế để xử lý tải lượng ghi và truy vấn cao. Nó có thể lưu trữ các số liệu, sự kiện, nhật ký, dấu vết từ hệ thống, cảm biến, hàng đợi, cơ sở dữ liệu và mạng; và có thể nhập hàng triệu điểm dữ liệu mỗi giây.
Có hơn 260.000 phiên bản InfluxDB đang được sử dụng trên khắp thế giới, bao gồm một số nhiều hệ thống giám sát (giám sát DevOps, IoT và giám sát cảm biến, phân tích thời gian thực, giám sát mạng và học máy) trong một số ngành. Vì nó là một dự án mã nguồn mở, InfluxDB là nơi bắt đầu nếu bạn cần một cơ sở dữ liệu chuỗi thời gian.
Không giống như các loại cơ sở dữ liệu khác được điều chỉnh cho chuỗi thời gian, InfluxDB được xây dựng nhằm mục đích xử lý dữ liệu được đóng dấu thời gian, giúp dễ dàng tích lũy, phân tích và hành động dựa trên các số liệu mà hệ thống của bạn được thiết kế.
1.3. Grafana
Grafana là một nền tảng quan sát mã nguồn mở để trực quan hóa các số liệu, nhật ký và dấu vết được thu thập từ các ứng dụng của bạn. Đó là một giải pháp gốc trên đám mây để nhanh chóng tập hợp các bảng điều khiển dữ liệu cho phép bạn kiểm tra và phân tích ngăn xếp của mình.
Grafana kết nối với nhiều nguồn dữ liệu khác nhau như Prometheus, InfluxDB, ElasticSearch và các công cụ cơ sở dữ liệu quan hệ truyền thống. Trang tổng quan phức tạp được tạo bằng cách sử dụng các nguồn này để chọn các trường có liên quan từ dữ liệu của bạn. Bảng điều khiển có thể kết hợp nhiều thành phần trực quan khác nhau như biểu đồ, bản đồ nhiệt và biểu đồ.
2. Triển khai
2.1 Yêu cầu máy chủ
Cấu hình LVM cho disk sdb 100GB và mount vào thư mục /data
Cấu hình LVM disk sdb:
Tạo file docker-compose.yml trong thư mục /data/influxdb-grafana
với file docker-compose.yml, thông tin tổng quát gồm:
Chạy lệnh để khởi tạo 2 service influxdb và grafana: docker-compose up -d
Sau khi dịch vụ grafana và influxdb lên. truy cập vào grafana tiến hành cấu hình ban đầu cho hệ thống
Chọn Data source để map với database InfluxDB
Chọn InfluxDB
Điền IP của máy influxDB server
Nhập database, username, pass mình đã cấu hình trong file docker-compose
Sau đó nhấn Save & Test để hoàn tất bước cấu hình 2 dịch vụ InfluxDB và Grafana bằng file docker-compose
Như vậy phần này mình đã giới thiệu sơ lược hệ thống giám sát các máy chủ AIX cũng như các máy chủ linux thông qua giải pháp NJMON - InfluxDB - Grafana.
Ở phần này mình cũng đã xây dựng xong 2 dịch vụ quan trọng của hệ thống là InfluxDB và Grafana thông qua file Docker-compose. (chỉ bẳng 1 lệnh đơn giản để chạy file này thì chúng ta đã dựng xong 1 server gồm 2 service Influx DB và Grafana rồi).
Phần tiếp theo mình sẽ hướng dẫn cách sử dụng tool njmon để collect thông tin của máy chủ linux cũng tương tự như máy chủ AIX, và cách push dữ liệu đó vào database influxdb.
Trong bài này mình sẽ giới thiệu giải pháp giám sát hệ thống máy chủ AIX thông qua giải pháp Njmon - InfluxDB - Grafana
Với bộ giải pháp này ngoài có thể giám sát hệ thống AIX nói chung thì chúng ta cũng có thể giám sát các máy VIOS power của IBM hay giám sát thu thập thông tin của các máy chủ Linux (Ubuntu, SLES, RHEL,...)
Để xây dựng giải pháp này chúng ta cần:
- 1 tool Njmon để thu thập thông tin của server ( các thông tin này sẽ được collect thành dạng file json)
- 1 Database InfluxDB (Database chứa dữ liệu được collect từ tool njmon được lấy từ các server)
- 1 Grafana (Sử dụng dữ liệu từ Database InfluxDB -> Hiển thị dữ liệu trên các dashboard dễ dàng phân tích và theo dõi)
1.1 Tool Njmon:
NJMon là một phần mềm giám sát hệ thống mã nguồn mở được viết bằng Perl. Nó được thiết kế để giám sát các thông số hệ thống như tài nguyên CPU, bộ nhớ, đĩa và mạng. NJMon cung cấp các tính năng như giám sát thời gian thực, cảnh báo và ghi lại lịch sử giám sát.
Njmon giống như nmon nhưng thu thập nhiều dữ liệu cấu hình và hiệu suất hơn cũng như đầu ra ở định dạng JSON sẵn sàng để tải ngay lên cơ sở dữ liệu thống kê hiệu suất để vẽ biểu đồ gần thời gian thực bằng các công cụ vẽ biểu đồ trực tuyến. njmon cũng có thể được chuyển sang chế độ nimon, chế độ này tạo định dạng Giao thức dòng InfluxDB để gửi trực tiếp tới InfluxDB. Có một phiên bản njmon cho AIX và một njmon khác cho Linux.
- njmon for AIX
- Sử dụng AIX libperfstat để trích xuất số liệu thống kê hiệu suất.
- 1400 stats cho AIX, thêm 55 cho Virtual I/O Server (VIOS) và thêm 35 nếu máy chủ sử dụng VIOS Shared Storage Pool.
- njmon for Linux
- Các số liệu thống kê hiệu suất chủ yếu đến từ /proc file system and system calls.
- 800 stats - số liệu thống kê có thể có trong tương lai bao gồm số liệu thống kê FC SAN.
- Spectrum Scale (GPFS) & Process stats được thêm gần đây
Những Infrastructure có thể chọn lựa cho Njmon
Có thể kết hợp giải pháp Njmon cho database influxDB, splunk, elastic hay Prometheus, tất cả những database trên đều tích hợp tốt với Grafana
Trong bài này mình sẽ hướng dẫn với giải pháp Njmon -> InfluxDB -> Grafana
1.2. Database InfluxDB
InfluxDB là bộ công cụ chuỗi thời gian thiết yếu - một cơ sở dữ liệu chuỗi thời gian mã nguồn mở được thiết kế để xử lý tải lượng ghi và truy vấn cao. Nó có thể lưu trữ các số liệu, sự kiện, nhật ký, dấu vết từ hệ thống, cảm biến, hàng đợi, cơ sở dữ liệu và mạng; và có thể nhập hàng triệu điểm dữ liệu mỗi giây.
Có hơn 260.000 phiên bản InfluxDB đang được sử dụng trên khắp thế giới, bao gồm một số nhiều hệ thống giám sát (giám sát DevOps, IoT và giám sát cảm biến, phân tích thời gian thực, giám sát mạng và học máy) trong một số ngành. Vì nó là một dự án mã nguồn mở, InfluxDB là nơi bắt đầu nếu bạn cần một cơ sở dữ liệu chuỗi thời gian.
Không giống như các loại cơ sở dữ liệu khác được điều chỉnh cho chuỗi thời gian, InfluxDB được xây dựng nhằm mục đích xử lý dữ liệu được đóng dấu thời gian, giúp dễ dàng tích lũy, phân tích và hành động dựa trên các số liệu mà hệ thống của bạn được thiết kế.
1.3. Grafana
Grafana là một nền tảng quan sát mã nguồn mở để trực quan hóa các số liệu, nhật ký và dấu vết được thu thập từ các ứng dụng của bạn. Đó là một giải pháp gốc trên đám mây để nhanh chóng tập hợp các bảng điều khiển dữ liệu cho phép bạn kiểm tra và phân tích ngăn xếp của mình.
Grafana kết nối với nhiều nguồn dữ liệu khác nhau như Prometheus, InfluxDB, ElasticSearch và các công cụ cơ sở dữ liệu quan hệ truyền thống. Trang tổng quan phức tạp được tạo bằng cách sử dụng các nguồn này để chọn các trường có liên quan từ dữ liệu của bạn. Bảng điều khiển có thể kết hợp nhiều thành phần trực quan khác nhau như biểu đồ, bản đồ nhiệt và biểu đồ.
2. Triển khai
2.1 Yêu cầu máy chủ
CPU | 4vCPU |
Memory | 8 GB |
Disk | 50 GB SDA, 100 GB SDB |
OS | Ubuntu 20.04 |
Appliance | Docker |
InfluxDB | InfluxDB version 1.8 (Container) listen port 8086 |
Grafana | Grafana CE (Container) listen port 3000 |
Cấu hình LVM cho disk sdb 100GB và mount vào thư mục /data
Cấu hình LVM disk sdb:
- sudo pvcreate /dev/sdb
- sudo vgcreate datavg /dev/sdb
- sudo lvcreate -l 100%FREE -n datalv datavg
- mkfs.xfs /dev/datavg/datalv
- sudo mount /dev/datavg/datalv /data
- df -h
Tạo file docker-compose.yml trong thư mục /data/influxdb-grafana
Code:
version: '3.6'
services:
influxdb:
image: influxdb:1.8-alpine
container_name: influxdb
restart: always
environment:
- INFLUXDB_DB=influx
- INFLUXDB_ADMIN_USER=admin
- INFLUXDB_ADMIN_PASSWORD=admin
ports:
- '8086:8086'
volumes:
- /data/influxdb-grafana/influxdb:/var/lib/influxdb
grafana:
image: grafana/grafana
container_name: grafana-server
restart: always
depends_on:
- influxdb
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin
- GF_INSTALL_PLUGINS=
links:
- influxdb
ports:
- '3000:3000'
volumes:
- /data/influxdb-grafana/grafana:/var/lib/grafana
với file docker-compose.yml, thông tin tổng quát gồm:
InfluxDB:
- Version 1.8-alpine
- port: 10.120.201.222:8086
- database: influx
- user: admin
- password: admin
Grafana:
- port: 10.120.201.222:3000
- user: admin
- password: admin
Sau khi dịch vụ grafana và influxdb lên. truy cập vào grafana tiến hành cấu hình ban đầu cho hệ thống
Chọn Data source để map với database InfluxDB
Chọn InfluxDB
Điền IP của máy influxDB server
Nhập database, username, pass mình đã cấu hình trong file docker-compose
Sau đó nhấn Save & Test để hoàn tất bước cấu hình 2 dịch vụ InfluxDB và Grafana bằng file docker-compose
Như vậy phần này mình đã giới thiệu sơ lược hệ thống giám sát các máy chủ AIX cũng như các máy chủ linux thông qua giải pháp NJMON - InfluxDB - Grafana.
Ở phần này mình cũng đã xây dựng xong 2 dịch vụ quan trọng của hệ thống là InfluxDB và Grafana thông qua file Docker-compose. (chỉ bẳng 1 lệnh đơn giản để chạy file này thì chúng ta đã dựng xong 1 server gồm 2 service Influx DB và Grafana rồi).
Phần tiếp theo mình sẽ hướng dẫn cách sử dụng tool njmon để collect thông tin của máy chủ linux cũng tương tự như máy chủ AIX, và cách push dữ liệu đó vào database influxdb.
Last edited: