Header Ads Widget

Ticker

6/recent/ticker-posts

Hướng dẫn cài dặt Prometheus và Grafana cho Ubuntu bằng cách thủ công và docker-compose

Keywords: How to install Prometheus and Grafana on Ubuntu by handmade and docker-compose

Đã rất lâu rồi mình chưa viết được bài Blog nào vì công việc đã thay đổi, mình đã không còn làm việc tại Sutrix nữa, gắn bó nơi đó cũng gần 2 năm trời nhiều kỉ niệm, thế nhưng tiệc nào rồi cũng sẻ đến lúc tàn, mình cần đi để học hỏi nhiều thứ mới mẻ hơn và cũng nhờ đều đó mà mình đã tìm hiểu được hệ thống Prometheus và Grafana nhìn chung thì nó cũng khá giống với Nagios nhưng cùng theo sau mình để tìm hiểu về nó nhé.

Tại sao phải thực hiện 2 cái này chung bởi vì các bạn hiểu rằng Prometheus có nhiệm vụ Query và Alert chấp nhận metrics để thực hiện theo dõi và Grafana sẻ lấy giá trị từ Prometheus cũng như Alert từ Prometheus để dễ dàng thực hiện hơn bằng giao diện trực quan đẹp mắt hơn, chưa kể ở Grafana có các Chart nhìn đẹp mắt dễ dàng phân tích hơn, vì vậy 2 thằng này trở thành bộ đôi hoàn hảo là vậy, ok không nói nhiều nữa chúng ta sẻ bắt đầu thực hiện luôn vậy.

Phần 1:  Thực hiện Download Prometheus tại đây nhé

Mình sử dụng lệnh wget để thực hiện download như sau

wget https://github.com/prometheus/prometheus/releases/download/v2.22.0-rc.0/prometheus-2.22.0-rc.0.linux-amd64.tar.gz

Trên đó cũng có rất nhiều exporter có sẵn cho các bạn lựa chọn

Chắc rằng nhiều bạn cũng sẻ suy ngẫm exporter là gì đúng không, thì theo như mình hiểu exporter là một source code chứa các metrics để export value ra ngoài, để mình lấy ví dụ từ exporter của solr của mình cho các bạn hiểu nhé, như hình nó sẻ là source code như thế này

Ở đây file solrtopic.xml chính là config nơi chứa các đoạn code metrics để giúp Prometheus get value ra, khi mình chạy lệnh config cho source code trên như sau
cd contrib/prometheus-exporter
$ ./bin/solr-exporter -p 9854 -b http://localhost:8983/solr -f ./conf/solr-exporter-config.xml -n 8

Nó sẻ thực thi file config của solr với link http://localhost:8983/solr để lấy giá trị từ solr này với port 9854 nghĩa là khi mình truy cập ip với port 9854 sẻ ra giao diện của trang quản lý metrics như sau, thường source này dùng json là chủ yếu nói chung code nào cũng được miễn ra trang metrics vậy là ok

Chắc rằng các bạn sẻ hỏi ủa vậy cái solr_metrics_jetty_response_total nó ở đâu mà tại sao khi chạy config nó lại ra ? chính là file config lúc nảy mình nói ở trên đấy code query config nằm trong đó kiểu như hình dưới

Ok quay lại phần download lúc nảy chúng ta thực hiện giải nén file đã download
tar xvfz prometheus-*.tar.gz
cd prometheus-*

sau khi giải nén xong chúng ta sẻ được như sau, thực hiện tiếp dời prometheus và promtool để làm service

cp prometheus promtool /usr/local/bin/

Sau đó thực hiện chạy các lệnh sau để check coi đã có environment hay chưa nhé

Bây giờ để muốn start Prometheus thì chúng ta chỉ cần chạy câu lệnh sau nữa là ổn
./prometheus --config.file=prometheus.yml

Ok sau khi nó chạy như sau thì các bạn thực hiện truy cập link với port 9090 để check coi Prometheus đã chạy chưa nhé

Ok như vậy coi như các bạn đã gần xong phần Prometheus rồi đấy nhưng ai mà lại để Prometheus vậy mà chạy, các bạn nên tạo cho nó 1 cái service như bài viết sau của mình

Link: https://www.itblognote.com/2019/12/huong-dan-tao-va-chay-file-script-nhu.html

Tại đây mình cũng sẻ làm y chang cái bài viết trên nên mình sẻ không giải thích gì nhiều thêm

cd /etc/systemd/system/
sudo vi prometheus.service
Chèn đoạn code sau vào trong file prometheus.service
[Unit]
Description=prometheus-server
[Service]
User=root
WorkingDirectory=/data/prometheus/prometheus-2.22.0-rc.0.linux-amd64
ExecStart=/data/prometheus/prometheus-2.22.0-rc.0.linux-amd64/prometheus --config.file=prometheus.yml
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target

Chú ý lại những cái cần chỉnh sửa mà mình tô màu lên trên nhé, sau đó thực hiện tiếp 3 lệnh sau

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

Sau khi mọi thứ như vậy nghĩa là ok rồi đó

mặc định prometheus.yml chỉ có như thế và không có gì thêm cả, ngay cả phần alerting cũng chưa có đợi sau này khi mình cần nhận thông báo thì mình sẻ cấu hình thêm thằng này

Các bạn chú ý phần scrape_configs: đây sẻ là nơi ta add các exporter vào đấy, để nó nhận các metrics thì hiện tại nó đã có sẵn 1 exporter đó là của thằng Prometheus này luôn, nên các bạn thực hiện lên Prometheus để test nào, tại đây mình chọn đại 1 metrics đầu tiên đi và thấy rằng nó đã get value thành công rồi, giờ nếu như các bạn muốn theo dõi thêm cái gì nữa thì chỉ cần add thêm exporter của cái đó vào thôi ví dụ là solr chẳng hạn 

Sau đây là một mẫu config exporter solr mà mình add vào config của prometheus.yml như sau

- job_name: 'solr'
    scrape_interval: 5m
    scrape_timeout: 300s
    #Duong dan den metrics con neu khong co thi cac ban nen xoa no di
    metrics_path: /metrics
    static_configs:
      - targets: ['YourIP:YourPort']

Giả sử link metrics mình là http://localhost:9854/metrics thì mình để path là /metrics còn nếu như nó chỉ là http://localhost:9854 thì mình sẻ ẩn nó đi và chỉ để IP và Port thôi và đơn nhiên như mình nói ở trên việc lấy giá trị là ở thằng metrics gọi chung là exporter, còn thằng prometheus chỉ để show ra cho chúng ta 1 cách dễ dàng hơn chưa kể prometheus có thể giúp chúng ta tính toán bằng các query function của nó nữa, các bạn có thể tham khảo link sau để biết về query của prometheus nhiều hơn nhé, nó cũng như excel bình thường với các hàm đơn giản ak

Link Query Function: https://prometheus.io/docs/prometheus/latest/querying/functions/

Ok coi như phần Prometheus mình đã giới thiệu và giải quyết xong bây giờ chúng ta sẻ đến với Grafana nhé, đơn nhiên prometheus thì với giao diện đơn giản chúng ta vẫn chưa thể quản lý nhiều với nó được, để có giao diện tốt hơn rõ ràng hơn thì chúng ta phải cần đến Grafana

Phần 2: Grafana cho Prometheus

Đối với Grafana việc cài đặt diễn ta tốt hơn nhiều chỉ cần các bạn làm theo các lệnh sau

sudo apt-get install -y apt-transport-https
sudo apt-get install -y software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list 
sudo apt-get update
sudo apt-get install grafana

Sau khi cài xong các bạn thực hiện chạy tiếp 3 câu lệnh sau để open service lên và thực hiện truy cập để đổi pass grafana

systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server

Sau đó truy cập với tài khoản và pass là admin với port 3000 như vậy là xong rồi đó

Bây giờ chúng ta sẻ quay về thằng prometheus để thực hiện 1 chút vấn đề cho các bạn hiểu được nữa nhé nó có hơi liên quan tới grafana 1 chút, như các bạn đã thấy mình đã lựa chọn metrics go_gc_duration_seconds để chạy thử và ra như hình

Nó sẻ ra 5 giá trị thế rồi các bạn tự ngẫm mẹ bà thằng metrics code nó đã làm hết rồi vậy thằng prometheus này nó có khác gì thằng grafana đâu cũng chỉ show value lên, sai rồi nhé vì nó có 1 phần rất đặc biệt đó là query function như mình nói ở trên, ở đây mình thử tính tổng của 5 giá trị này nhé vì thế mình sẻ thực hiện hàm sum()

Giờ bạn đã hiểu được ý nghĩa của thằng Prometheus này rồi chứ nhưng ai mà lại đi lấy Prometheus quản lý với nhìn basic như thế được, giờ là ta phải sử dụng Grafana, mới trực quan hơn

Để sử dụng Grafana để quản lý thì ta cần add Prometheus vào Grafana đã các bạn đi đến cài đặt và chọn data source nhé chọn add data source và thêm Prometheus vào

Sau đó thực hiện tạo Dashboard Prometheus như sau

Chọn tiếp Add Panel và thực hiện query như trên Prometheus ta làm hồi nảy

Sau đó chúng ta add Metrics vào phần Metrics như sau

Đấy mình đã xong 1 bản theo dõi rồi đấy giờ mình sẻ tạo thêm 1 bản sum nữa nhé

Còn nhiều Chart khác nữa như kiểu Pie hay là số v.v thì các bạn chỉ cần vào phần cài đặt add thêm plugin vào nữa là sẻ ra rất nhiều kiểu chart cho các bạn lựa chọn trong quá trình công việc nếu có yêu cầu, như vậy là mình đã hướng dẫn xong cho các bạn về Prometheus và Grafana rồi đấy, nếu các bạn muốn nhanh thì có thể sử dụng file docker-compose.yaml sau của mình, thực hiện tạo network cho docker monitor và dùng file sau để chạy, đều kiện phải có docker

docker network create monitor-net

Thực hiện tạo file docker-compose.yaml và file prometheus.yml lần lượt với nội dung như sau

version: '3.3'

networks:
    monitor-net:
        external: true

services:
    prometheus:
        image: prom/prometheus
        container_name: prometheus
        ports:
            - "1000:9090"
        volumes:
            - /data/prometheus/docker/config-prometheus:/etc/prometheus
        networks:
            - monitor-net 
    
    grafana:
        image: grafana/grafana
        container_name: grafana
        restart: on-failure
        ports:
            - "1001:3000"
        networks:
            - monitor-net

Chạy tiếp lệnh sau để tạo file trong thư mục ta mount cho docker-compose touch /data/prometheus/docker/config-prometheus/prometheus.yml

# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

Sau đó chạy lệnh

docker-compose up

Chúc các bạn thành công !

Nguồn: itblognote.com

Post a Comment

0 Comments