Cách cài đặt Prometheus trên Ubuntu 16.04
Prometheus là một hệ thống giám sát open-souce , mạnh mẽ, thu thập các số liệu từ các dịch vụ của bạn và lưu trữ chúng trong database chuỗi thời gian. Nó cung cấp mô hình dữ liệu đa chiều, ngôn ngữ truy vấn linh hoạt và khả năng trực quan hóa đa dạng thông qua các công cụ như Grafana .Theo mặc định, Prometheus chỉ xuất các số liệu về chính nó (ví dụ: số lượng yêu cầu mà nó nhận được, mức tiêu thụ bộ nhớ, v.v.). Tuy nhiên, bạn có thể mở rộng Prometheus rất nhiều bằng cách cài đặt trình xuất , các chương trình tùy chọn tạo ra các số liệu bổ sung.
Các nhà xuất khẩu - cả những nhà xuất khẩu chính thức mà group Prometheus duy trì cũng như những nhà xuất khẩu do cộng đồng đóng góp - cung cấp thông tin về mọi thứ từ cơ sở hạ tầng, database và web server đến hệ thống nhắn tin, API, v.v.
Một số lựa chọn phổ biến nhất bao gồm:
- node_exporter - Công cụ này tạo ra các số liệu về cơ sở hạ tầng, bao gồm mức sử dụng CPU, bộ nhớ và đĩa hiện tại, cũng như số liệu thống kê I / O và mạng, chẳng hạn như số byte được đọc từ đĩa hoặc tải trung bình của server .
- blackbox_exporter - Điều này tạo ra các chỉ số bắt nguồn từ các giao thức thăm dò như HTTP và HTTPS để xác định tính khả dụng của điểm cuối, thời gian phản hồi và hơn thế nữa.
- mysqld_exporter - Điều này tập hợp các số liệu liên quan đến server MySQL, chẳng hạn như số lượng truy vấn được thực thi, thời gian phản hồi truy vấn trung bình và trạng thái sao chép cụm.
- Rabbitmq_exporter - Công cụ này xuất ra các chỉ số về hệ thống nhắn tin RabbitMQ , bao gồm số lượng tin nhắn đã xuất bản, số lượng tin nhắn sẵn sàng được gửi và kích thước của tất cả các tin nhắn trong hàng đợi.
- nginx-vts-exportorter - Phần này cung cấp các số liệu về web server Nginx sử dụng mô-đun Nginx VTS , bao gồm số lượng kết nối đang mở, số lượng phản hồi đã gửi (được group theo mã phản hồi) và tổng kích thước của các yêu cầu đã gửi hoặc nhận được tính bằng byte .
Bạn có thể tìm thấy danh sách đầy đủ hơn về cả nhà xuất khẩu chính thức và do cộng đồng đóng góp trên trang web của Prometheus .
Trong hướng dẫn này, bạn sẽ cài đặt, cấu hình và bảo mật Prometheus và Node Exporter để tạo các số liệu giúp theo dõi hiệu suất server của bạn dễ dàng hơn.
Yêu cầu
Trước khi làm theo hướng dẫn này, hãy đảm bảo bạn có:
- Một server Ubuntu 16.04, được cài đặt theo hướng dẫn Cài đặt server ban đầu với Ubuntu 16.04 , bao gồm user sudo không phải root và firewall .
- Đã cài đặt Nginx theo hai bước đầu tiên của hướng dẫn Cách cài đặt Nginx trên Ubuntu 16.04 .
Bước 1 - Tạo user dịch vụ
Vì mục đích bảo mật, ta sẽ bắt đầu bằng cách tạo hai account user mới, prometheus và node_exporter . Ta sẽ sử dụng các account này trong suốt hướng dẫn để tách biệt quyền sở hữu đối với các file và folder cốt lõi của Prometheus.
Tạo hai user này và sử dụng các tùy chọn --no-create-home
và --shell /bin/false
để những user này không thể đăng nhập vào server .
- sudo useradd --no-create-home --shell /bin/false prometheus
- sudo useradd --no-create-home --shell /bin/false node_exporter
Trước khi ta download các file binary Prometheus, hãy tạo các folder cần thiết để lưu trữ các file và dữ liệu của Prometheus. Tuân theo các quy ước chuẩn của Linux, ta sẽ tạo một folder trong /etc
cho các file cấu hình của Prometheus và một folder trong /var/lib
cho dữ liệu của nó.
- sudo mkdir /etc/prometheus
- sudo mkdir /var/lib/prometheus
Bây giờ, hãy đặt quyền sở hữu user và group trên các folder mới cho user prometheus .
- sudo chown prometheus:prometheus /etc/prometheus
- sudo chown prometheus:prometheus /var/lib/prometheus
Với user và folder của ta tại chỗ, giờ đây ta có thể download Prometheus và sau đó tạo file cấu hình tối thiểu để chạy Prometheus lần đầu tiên.
Bước 2 - Download Prometheus
Đầu tiên, download và extract version Prometheus ổn định hiện tại vào folder chính của bạn. Bạn có thể tìm thấy các mã binary mới nhất cùng với tổng kiểm tra của chúng trên trang download Prometheus .
- cd ~
- curl -LO https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
Tiếp theo, sử dụng lệnh sha256sum
để tạo tổng kiểm tra của file đã download :
- sha256sum prometheus-2.0.0.linux-amd64.tar.gz
So sánh kết quả từ lệnh này với tổng kiểm tra trên trang download Prometheus đảm bảo rằng file của bạn vừa chính hãng vừa không bị hỏng.
Outpute12917b25b32980daee0e9cf879d9ec197e2893924bd1574604eb0f550034d46 prometheus-2.0.0.linux-amd64.tar.gz
Nếu tổng kiểm tra không khớp, hãy xóa file đã download và lặp lại các bước trước đó để download lại file .
Bây giờ, hãy extract repository đã download .
- tar xvf prometheus-2.0.0.linux-amd64.tar.gz
Thao tác này sẽ tạo một folder có tên prometheus-2.0.0.linux-amd64
chứa hai file binary ( prometheus
và promtool
), consoles
và folder console_libraries
chứa file giao diện web, giấy phép, thông báo và một số file ví dụ.
Sao chép hai file binary vào folder /usr/local/bin
.
- sudo cp prometheus-2.0.0.linux-amd64/prometheus /usr/local/bin/
- sudo cp prometheus-2.0.0.linux-amd64/promtool /usr/local/bin/
Đặt quyền sở hữu user và group trên các file binary thành user prometheus được tạo ở Bước 1.
- sudo chown prometheus:prometheus /usr/local/bin/prometheus
- sudo chown prometheus:prometheus /usr/local/bin/promtool
Sao chép consoles
và folder console_libraries
vào /etc/prometheus
.
- sudo cp -r prometheus-2.0.0.linux-amd64/consoles /etc/prometheus
- sudo cp -r prometheus-2.0.0.linux-amd64/console_libraries /etc/prometheus
Đặt quyền sở hữu user và group trên các folder cho user prometheus . Sử dụng cờ -R
sẽ đảm bảo quyền sở hữu cũng được đặt trên các file bên trong folder .
- sudo chown -R prometheus:prometheus /etc/prometheus/consoles
- sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
Cuối cùng, xóa các file còn sót lại khỏi folder chính của bạn vì chúng không còn cần thiết nữa.
- rm -rf prometheus-2.0.0.linux-amd64.tar.gz prometheus-2.0.0.linux-amd64
Bây giờ Prometheus đã được cài đặt, ta sẽ tạo các file cấu hình và dịch vụ của nó để chuẩn bị cho lần chạy đầu tiên.
Bước 3 - Cấu hình Prometheus
Trong folder /etc/prometheus
, sử dụng nano
hoặc editor yêu thích của bạn để tạo file cấu hình có tên prometheus.yml
. Hiện tại, file này sẽ chỉ chứa đủ thông tin để chạy Prometheus lần đầu tiên.
- sudo nano /etc/prometheus/prometheus.yml
Cảnh báo: Tệp cấu hình của Prometheus sử dụng định dạng YAML , định dạng này nghiêm cấm các tab và yêu cầu hai dấu cách để thụt lề. Prometheus sẽ không khởi động nếu file cấu hình được định dạng không chính xác.
Trong global
cài đặt, xác định khoảng thời gian mặc định cho cào số liệu. Lưu ý Prometheus sẽ áp dụng các cài đặt này cho mọi nhà xuất khẩu trừ khi cài đặt riêng của từng nhà xuất khẩu overrides lên global .
global: scrape_interval: 15s
Giá trị scrape_interval
này yêu cầu Prometheus thu thập số liệu từ các nhà xuất khẩu của bạn sau mỗi 15 giây, thời gian này đủ dài đối với hầu hết các nhà xuất khẩu.
Bây giờ, hãy thêm chính Prometheus vào danh sách các nhà xuất khẩu để loại bỏ bằng chỉ thị scrape_configs
sau:
... scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090']
Prometheus sử dụng job_name
để gắn nhãn các nhà xuất khẩu trong các truy vấn và trên đồ thị, vì vậy hãy đảm bảo chọn nội dung mô tả ở đây.
Và, vì Prometheus xuất dữ liệu quan trọng về chính nó mà bạn có thể sử dụng để theo dõi hiệu suất và gỡ lỗi, ta đã overrides chỉ thị scrape_interval
global từ 15 giây xuống 5 giây để cập nhật thường xuyên hơn.
Cuối cùng, Prometheus sử dụng chỉ thị static_configs
và targets
để xác định vị trí các nhà xuất khẩu đang chạy. Vì nhà xuất khẩu cụ thể này đang chạy trên cùng một server với chính Prometheus, ta có thể sử dụng localhost
thay vì địa chỉ IP cùng với cổng mặc định, 9090
.
Tệp cấu hình của bạn bây giờ sẽ giống như sau:
global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090']
Lưu file và thoát khỏi editor của bạn.
Bây giờ, hãy đặt quyền sở hữu user và group trên file cấu hình thành user prometheus đã tạo ở Bước 1.
- sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml
Với cấu hình hoàn tất, ta đã sẵn sàng để kiểm tra Prometheus bằng cách chạy nó lần đầu tiên.
Bước 4 - Chạy Prometheus
Khởi động Prometheus với quyền là user prometheus , cung cấp đường dẫn đến cả file cấu hình và folder dữ liệu.
- sudo -u prometheus /usr/local/bin/prometheus \
- --config.file /etc/prometheus/prometheus.yml \
- --storage.tsdb.path /var/lib/prometheus/ \
- --web.console.templates=/etc/prometheus/consoles \
- --web.console.libraries=/etc/prometheus/console_libraries
Đầu ra chứa thông tin về tiến trình tải, file cấu hình và các dịch vụ liên quan của Prometheus. Nó cũng xác nhận Prometheus đang nghe trên cổng 9090
.
Outputlevel=info ts=2017-11-17T18:37:27.474530094Z caller=main.go:215 msg="Starting Prometheus" version="(version=2.0.0, branch=HEAD, re vision=0a74f98628a0463dddc90528220c94de5032d1a0)" level=info ts=2017-11-17T18:37:27.474758404Z caller=main.go:216 build_context="(go=go1.9.2, user=root@615b82cb36b6, date=20171108- 07:11:59)" level=info ts=2017-11-17T18:37:27.474883982Z caller=main.go:217 host_details="(Linux 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 1 4:24:03 UTC 2017 x86_64 prometheus-update (none))" level=info ts=2017-11-17T18:37:27.483661837Z caller=web.go:380 component=web msg="Start listening for connections" address=0.0.0.0 :9090 level=info ts=2017-11-17T18:37:27.489730138Z caller=main.go:314 msg="Starting TSDB" level=info ts=2017-11-17T18:37:27.516050288Z caller=targetmanager.go:71 component="target manager" msg="Starting target manager... " level=info ts=2017-11-17T18:37:27.537629169Z caller=main.go:326 msg="TSDB started" level=info ts=2017-11-17T18:37:27.537896721Z caller=main.go:394 msg="Loading configuration file" filename=/etc/prometheus/promethe us.yml level=info ts=2017-11-17T18:37:27.53890004Z caller=main.go:371 msg="Server is ready to receive requests."
Nếu bạn nhận được thông báo lỗi, hãy kiểm tra kỹ xem bạn đã sử dụng cú pháp YAML trong file cấu hình của bạn hay chưa rồi làm theo hướng dẫn trên màn hình để giải quyết sự cố.
Bây giờ, hãy tạm dừng Prometheus bằng cách nhấn CTRL+C
, sau đó mở file dịch vụ systemd
mới.
- sudo nano /etc/systemd/system/prometheus.service
Tệp dịch vụ yêu cầu systemd
chạy Prometheus với quyền là user prometheus , với file cấu hình nằm trong folder /etc/prometheus/prometheus.yml
và lưu trữ dữ liệu của nó trong folder /var/lib/prometheus
. (Chi tiết về các file dịch vụ systemd
nằm ngoài phạm vi của hướng dẫn này, nhưng bạn có thể tìm hiểu thêm tại Tìm hiểu về Đơn vị Systemd và Tệp Đơn vị .)
Sao chép nội dung sau vào file :
[Unit] Description=Prometheus Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries [Install] WantedBy=multi-user.target
Cuối cùng, lưu file và đóng editor của bạn.
Để sử dụng dịch vụ mới tạo, hãy reload systemd
.
- sudo systemctl daemon-reload
Đến đây bạn có thể khởi động Prometheus bằng lệnh sau:
- sudo systemctl start prometheus
Để đảm bảo Prometheus đang chạy, hãy kiểm tra trạng thái của dịch vụ.
- sudo systemctl status prometheus
Đầu ra cho bạn biết trạng thái của Prometheus, mã định danh quy trình chính (PID), sử dụng bộ nhớ và hơn thế nữa.
Nếu trạng thái của dịch vụ không active
, hãy làm theo hướng dẫn trên màn hình và theo dõi lại các bước trước đó để giải quyết sự cố trước khi tiếp tục hướng dẫn.
Output● prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2017-07-21 11:40:40 UTC; 3s ago Main PID: 2104 (prometheus) Tasks: 7 Memory: 13.8M CPU: 470ms CGroup: /system.slice/prometheus.service ...
Khi đã sẵn sàng tiếp tục, hãy nhấn Q
để thoát khỏi lệnh status
.
Cuối cùng, cho phép dịch vụ bắt đầu khi server khởi động .
- sudo systemctl enable prometheus
Bây giờ Prometheus đã được cài đặt và chạy, ta có thể cài đặt một trình xuất bổ sung để tạo các số liệu về tài nguyên server của ta .
Bước 5 - Download Node Exporter
Để mở rộng Prometheus ngoài các chỉ số về chính nó, ta sẽ cài đặt một trình xuất khẩu bổ sung có tên là Node Exporter. Node Exporter cung cấp thông tin chi tiết về hệ thống, bao gồm cả việc sử dụng CPU, đĩa và bộ nhớ.
Trước tiên, hãy download version ổn định hiện tại của Node Exporter vào folder chính của bạn. Bạn có thể tìm các mã binary mới nhất cùng với tổng kiểm tra của chúng trên trang download của Prometheus .
- cd ~
- curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.15.1/node_exporter-0.15.1.linux-amd64.tar.gz
Sử dụng lệnh sha256sum
để tạo tổng kiểm tra của file đã download :
- sha256sum node_exporter-0.15.1.linux-amd64.tar.gz
Xác minh tính toàn vẹn của file đã download bằng cách so sánh tổng kiểm tra của nó với tổng kiểm tra trên trang download .
Output7ffb3773abb71dd2b2119c5f6a7a0dbca0cff34b24b2ced9e01d9897df61a127 node_exporter-0.15.1.linux-amd64.tar.gz
Nếu tổng kiểm tra không khớp, hãy xóa file đã download và lặp lại các bước trước đó.
Bây giờ, hãy extract repository đã download .
- tar xvf node_exporter-0.15.1.linux-amd64.tar.gz
Thao tác này sẽ tạo một folder có tên node_exporter-0.15.1.linux-amd64
chứa file binary có tên node_exporter
, giấy phép và thông báo.
Sao chép file binary vào folder /usr/local/bin
và đặt quyền sở hữu user và group thành user node_exporter mà bạn đã tạo ở Bước 1.
- sudo cp node_exporter-0.15.1.linux-amd64/node_exporter /usr/local/bin
- sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
Cuối cùng, xóa các file còn sót lại khỏi folder chính của bạn vì chúng không còn cần thiết nữa.
- rm -rf node_exporter-0.15.1.linux-amd64.tar.gz node_exporter-0.15.1.linux-amd64
Đến đây bạn đã cài đặt Node Exporter, hãy kiểm tra nó bằng cách chạy nó trước khi tạo file dịch vụ cho nó để nó bắt đầu khởi động.
Bước 6 - Chạy Node Exporter
Các bước để chạy Node Exporter tương tự như các bước để chạy chính Prometheus. Bắt đầu bằng cách tạo file dịch vụ Systemd cho Node Exporter.
- sudo nano /etc/systemd/system/node_exporter.service
Tệp dịch vụ này yêu cầu hệ thống của bạn chạy Node Exporter với quyền là user node_exporter với bộ sưu tập mặc định được bật.
Sao chép nội dung sau vào file dịch vụ:
[Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=node_exporter Group=node_exporter Type=simple ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=multi-user.target
Bộ sưu tập xác định số liệu nào mà Node Exporter sẽ tạo. Bạn có thể xem danh sách bộ sưu tập đầy đủ của Node Exporter - bao gồm cả những bộ sưu tập được bật theo mặc định và những bộ không được dùng nữa - trong tệp README của Node Exporter .
Nếu bạn cần overrides danh sách bộ sưu tập mặc định, bạn có thể sử dụng cờ --collectors.enabled
, như:
... ExecStart=/usr/local/bin/node_exporter --collectors.enabled meminfo,loadavg,filesystem ...
Ví dụ trước sẽ yêu cầu Node Exporter tạo các số liệu chỉ bằng cách sử dụng các trình thu thập meminfo
, loadavg
và filesystem
. Bạn có thể giới hạn bộ sưu tập ở mức ít hoặc nhiều mà bạn cần, nhưng lưu ý không có khoảng trống trước hoặc sau dấu phẩy.
Lưu file và đóng editor của bạn.
Cuối cùng, reload systemd
để sử dụng dịch vụ mới tạo.
- sudo systemctl daemon-reload
Đến đây bạn có thể chạy Node Exporter bằng lệnh sau:
- sudo systemctl start node_exporter
Xác minh Node Exporter đang chạy chính xác bằng lệnh status
.
- sudo systemctl status node_exporter
Giống như trước đây, kết quả này cho bạn biết trạng thái của Node Exporter, mã định danh quy trình chính (PID), mức sử dụng bộ nhớ, v.v.
Nếu trạng thái của dịch vụ không active
, hãy làm theo thông báo trên màn hình và theo dõi lại các bước trước đó để giải quyết sự cố trước khi tiếp tục.
Output● node_exporter.service - Node Exporter Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2017-07-21 11:44:46 UTC; 5s ago Main PID: 2161 (node_exporter) Tasks: 3 Memory: 1.4M CPU: 11ms CGroup: /system.slice/node_exporter.service
Cuối cùng, kích hoạt Node Exporter để bắt đầu khi server khởi động .
- sudo systemctl enable node_exporter
Với Node Exporter được cấu hình đầy đủ và chạy như mong đợi, ta sẽ yêu cầu Prometheus bắt đầu rà soát các chỉ số mới.
Bước 7 - Cấu hình Prometheus để Scrape Node Exporter
Vì Prometheus chỉ loại bỏ các nhà xuất khẩu được xác định trong phần scrape_configs
của file cấu hình của nó, ta cần thêm một mục nhập cho Node Exporter, giống như ta đã làm cho chính Prometheus.
Mở file cấu hình.
- sudo nano /etc/prometheus/prometheus.yml
Ở cuối khối scrape_configs
, thêm một mục mới có tên là node_exporter
.
... - job_name: 'node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100']
Bởi vì trình xuất khẩu này cũng đang chạy trên cùng một server với chính Prometheus, ta có thể sử dụng localhost thay vì địa chỉ IP cùng với cổng mặc định của Node Exporter, 9100
.
Toàn bộ file cấu hình của bạn sẽ giống như sau:
global: scrape_interval: 15s scrape_configs: - job_name: 'prometheus' scrape_interval: 5s static_configs: - targets: ['localhost:9090'] - job_name: 'node_exporter' scrape_interval: 5s static_configs: - targets: ['localhost:9100']
Lưu file và thoát khỏi editor của bạn khi bạn sẵn sàng tiếp tục.
Cuối cùng, khởi động lại Prometheus để các thay đổi có hiệu lực.
- sudo systemctl restart prometheus
, hãy xác minh mọi thứ đang chạy chính xác bằng lệnh status
.
- sudo systemctl status prometheus
Nếu trạng thái của dịch vụ không được đặt thành active
, hãy làm theo hướng dẫn trên màn hình và theo dõi lại các bước trước đó của bạn trước khi tiếp tục.
Output● prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2017-07-21 11:46:39 UTC; 6s ago Main PID: 2219 (prometheus) Tasks: 6 Memory: 19.9M CPU: 433ms CGroup: /system.slice/prometheus.service
Bây giờ ta đã cài đặt, cấu hình và chạy Prometheus và Node Exporter. Như một biện pháp phòng ngừa cuối cùng trước khi kết nối với giao diện web, ta sẽ tăng cường bảo mật cho cài đặt của bạn bằng xác thực HTTP cơ bản đảm bảo rằng user lạ không thể truy cập các chỉ số của ta .
Bước 8 - Bảo mật Prometheus
Prometheus không bao gồm xác thực tích hợp hoặc bất kỳ cơ chế bảo mật mục đích chung nào khác. Một mặt, điều này nghĩa là bạn đang có một hệ thống rất linh hoạt với ít hạn chế cấu hình hơn; mặt khác, điều đó nghĩa là bạn phải đảm bảo các chỉ số và cài đặt tổng thể của bạn đủ an toàn.
Để đơn giản hơn, ta sẽ sử dụng Nginx để thêm xác thực HTTP cơ bản vào cài đặt của bạn , cả Prometheus và công cụ trực quan hóa dữ liệu ưa thích của nó, Grafana, đều hỗ trợ đầy đủ.
Bắt đầu bằng cách cài đặt apache2-utils
, nó sẽ cung cấp cho bạn quyền truy cập vào tiện ích htpasswd
để tạo file password .
- sudo apt-get update
- sudo apt-get install apache2-utils
Bây giờ, tạo một file password bằng cách cho htpasswd
nơi bạn muốn lưu file và tên user nào bạn muốn sử dụng để xác thực.
Lưu ý: htpasswd
sẽ nhắc bạn nhập và xác nhận lại password bạn muốn liên kết với user này. Ngoài ra, hãy ghi lại cả tên user và password bạn nhập tại đây, vì bạn cần chúng để đăng nhập vào Prometheus ở Bước 9.
- sudo htpasswd -c /etc/nginx/.htpasswd sammy
Kết quả của lệnh này là một file mới được tạo có tên .htpasswd
, nằm trong folder /etc/nginx
, chứa tên user và version băm của password bạn đã nhập.
Tiếp theo, cấu hình Nginx để sử dụng các password mới tạo.
Trước tiên, hãy tạo một bản sao dành riêng cho Prometheus của file cấu hình Nginx mặc định để bạn có thể hoàn nguyên về mặc định sau này nếu gặp sự cố.
- sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/prometheus
Sau đó, mở file cấu hình mới.
- sudo nano /etc/nginx/sites-available/prometheus
Xác định location /
khối dưới khối server
. Nó sẽ giống như:
... location / { try_files $uri $uri/ =404; } ...
Vì ta sẽ chuyển tiếp tất cả lưu lượng truy cập tới Prometheus, hãy thay thế lệnh try_files
bằng nội dung sau:
... location / { auth_basic "Prometheus server authentication"; auth_basic_user_file /etc/nginx/.htpasswd; proxy_pass http://localhost:9090; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } ...
Các cài đặt này đảm bảo user sẽ phải xác thực khi bắt đầu mỗi phiên mới. Ngoài ra, Reverse Proxy sẽ hướng tất cả các yêu cầu do khối này xử lý tới Prometheus.
Khi bạn thực hiện xong các thay đổi, hãy lưu file và đóng editor của bạn.
Bây giờ, hãy hủy kích hoạt file cấu hình Nginx mặc định bằng cách xóa liên kết đến file đó trong folder /etc/nginx/sites-enabled
và kích hoạt file cấu hình mới bằng cách tạo liên kết đến nó.
- sudo rm /etc/nginx/sites-enabled/default
- sudo ln -s /etc/nginx/sites-available/prometheus /etc/nginx/sites-enabled/
Trước khi khởi động lại Nginx, hãy kiểm tra cấu hình xem có lỗi không bằng lệnh sau:
- sudo nginx -t
Kết quả kết quả phải cho biết syntax is ok
và test is successful
. Nếu bạn nhận được thông báo lỗi, hãy làm theo hướng dẫn trên màn hình để khắc phục sự cố trước khi tiếp tục bước tiếp theo.
Output of Nginx configuration testsnginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Sau đó, reload Nginx để kết hợp tất cả các thay đổi.
- sudo systemctl reload nginx
Xác minh Nginx đang hoạt động.
- sudo systemctl status nginx
Nếu kết quả của bạn không cho biết trạng thái của dịch vụ đang active
, hãy làm theo thông báo trên màn hình và theo dõi lại các bước trước đó để giải quyết sự cố trước khi tiếp tục.
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en Active: active (running) since Mon 2017-07-31 21:20:57 UTC; 12min ago Process: 4302 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s r Main PID: 3053 (nginx) Tasks: 2 Memory: 3.6M CPU: 56ms CGroup: /system.slice/nginx.service
Đến đây, ta có một server Prometheus đầy đủ chức năng và được bảo mật, vì vậy ta có thể đăng nhập vào giao diện web để bắt đầu xem xét các chỉ số.
Bước 9 - Kiểm tra Prometheus
Prometheus cung cấp giao diện web cơ bản để theo dõi trạng thái của chính nó và các nhà xuất của nó, thực hiện các truy vấn và tạo đồ thị. Tuy nhiên, do sự đơn giản của giao diện, group Prometheus khuyên bạn nên cài đặt và sử dụng Grafana cho bất kỳ điều gì phức tạp hơn là thử nghiệm và gỡ lỗi.
Trong hướng dẫn này, ta sẽ sử dụng giao diện web tích hợp sẵn đảm bảo rằng Prometheus và Node Exporter đang hoạt động và ta cũng sẽ xem xét các truy vấn và đồ thị đơn giản.
Để bắt đầu, hãy trỏ trình duyệt web tới http:// your_server_ip
.
Trong hộp thoại xác thực HTTP, hãy nhập tên user và password bạn đã chọn ở Bước 8.
Sau khi đăng nhập, bạn sẽ thấy Trình duyệt biểu thức , nơi bạn có thể thực thi và trực quan hóa các truy vấn tùy chỉnh.
Trước khi thực hiện bất kỳ biểu thức nào, hãy xác minh trạng thái của cả Prometheus và Node Explorer bằng cách nhấp trước vào menu Trạng thái ở đầu màn hình, sau đó nhấp vào tùy chọn menu Mục tiêu . Vì ta đã cấu hình Prometheus để quét cả chính nó và Node Exporter, bạn sẽ thấy cả hai mục tiêu được liệt kê ở trạng thái UP
.
Nếu một trong hai nhà xuất khẩu bị thiếu hoặc hiển thị thông báo lỗi, hãy kiểm tra trạng thái của dịch vụ bằng các lệnh sau:
- sudo systemctl status prometheus
- sudo systemctl status node_exporter
Đầu ra cho cả hai dịch vụ phải báo cáo trạng thái Active: active (running)
. Nếu một dịch vụ hoàn toàn không hoạt động hoặc đang hoạt động nhưng vẫn không hoạt động chính xác, hãy làm theo hướng dẫn trên màn hình và theo dõi lại các bước trước đó trước khi tiếp tục.
Tiếp theo, đảm bảo rằng các trình xuất đang hoạt động chính xác, ta sẽ thực thi một vài biểu thức đối với Node Exporter.
Đầu tiên, nhấp vào menu Đồ thị ở đầu màn hình để quay lại Trình duyệt Biểu thức .
Trong trường Expression , nhập node_memory_MemAvailable
và nhấn nút Execute để cập nhật tab Console với dung lượng bộ nhớ mà server của bạn có.
Theo mặc định, Node Exporter báo cáo số tiền này theo byte. Để chuyển đổi thành megabyte, ta sẽ sử dụng các toán tử toán học để chia cho 1024 hai lần.
Trong trường Biểu thức , nhập node_memory_MemAvailable/1024/1024
, sau đó nhấn nút Thực thi .
Tab Control panel bây giờ sẽ hiển thị kết quả tính bằng megabyte.
Nếu bạn muốn xác minh kết quả, hãy thực hiện lệnh free
từ terminal của bạn. (Cờ -h
cho biết free
báo cáo lại ở định dạng con người có thể đọc được, cung cấp cho ta số lượng tính bằng megabyte.)
- free -h
Đầu ra này chứa thông tin chi tiết về việc sử dụng bộ nhớ, bao gồm cả bộ nhớ khả dụng được hiển thị trong cột khả dụng .
Output total used free shared buff/cache available Mem: 488M 144M 17M 3.7M 326M 324M Swap: 0B 0B 0B
Ngoài các toán tử cơ bản, ngôn ngữ truy vấn Prometheus còn cung cấp nhiều chức năng để tổng hợp kết quả.
Trong trường Biểu thức , nhập avg_over_time(node_memory_MemAvailable[5m])/1024/1024
và nhấp vào nút Thực thi . Kết quả sẽ là bộ nhớ khả dụng trung bình trong 5 phút qua tính bằng megabyte.
Bây giờ, hãy nhấp vào tab Đồ thị để hiển thị biểu thức được thực thi dưới dạng đồ thị thay vì dưới dạng văn bản.
Cuối cùng, khi vẫn ở trên tab này, hãy di chuột qua biểu đồ để biết thêm chi tiết về bất kỳ điểm cụ thể nào dọc theo trục X và Y của biểu đồ.
Nếu bạn muốn tìm hiểu thêm về cách tạo biểu thức trong giao diện web tích hợp của Prometheus, hãy xem phần Truy vấn Prometheus của tài liệu chính thức.
Kết luận
Trong hướng dẫn này, ta đã download , cấu hình , bảo mật và thử nghiệm cài đặt Prometheus hoàn chỉnh với một trình xuất bổ sung.
Nếu bạn muốn tìm hiểu thêm về cách Prometheus hoạt động, hãy xem Cách truy vấn Prometheus trên Ubuntu 14.04 . (Vì bạn đã cài đặt Prometheus, bạn có thể bỏ qua bước đầu tiên.)
Để xem những gì Prometheus có thể làm, hãy truy cập tài liệu chính thức của Prometheus .
Và, để tìm hiểu thêm về việc mở rộng Prometheus, hãy xem danh sách các nhà xuất khẩu hiện có cũng như trang web chính thức của Grafana .
Các tin liên quan
Cách theo dõi cảnh báo Nagios với Alerta trên Ubuntu 16.042017-12-13
Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên Ubuntu 14.04
2017-12-01
Cách cài đặt và sử dụng TensorFlow trên Ubuntu 16.04
2017-12-01
Cách cài đặt Elasticsearch, Logstash và Kibana (ELK Stack) trên Ubuntu 14.04
2017-12-01
Cách cài đặt Jenkins trên Ubuntu 16.04
2017-11-29
Cách tạo thiết lập tính khả dụng cao với Heartbeat và IP nổi trên Ubuntu 16.04
2017-11-22
Cách cài đặt phpIPAM trên Ubuntu 16.04
2017-11-22
Cách sử dụng Logrotate và S3cmd để lưu trữ log vào bộ nhớ đối tượng trên Ubuntu 16.04
2017-11-09
Cách quản lý các tệp log bằng Logrotate trên Ubuntu 16.04
2017-11-09
Cách tạo VPN điểm-điểm với WireGuard trên Ubuntu 16.04
2017-11-09