iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
1
DevOps

DevOps with Proxmox系列 第 19

Day 19 - 監測服務 - Hands-on - 1

  • 分享至 

  • xImage
  •  

我們接下來要介紹怎麽安裝各種軟體,我們先從 Grafana 開始
接下來的示範都會利用 Ubuntu 20.04

要安裝 Grafana 再簡單也不過,只要底下的指令即可

sudo apt-get install -y adduser libfontconfig1
wget https://dl.grafana.com/oss/release/grafana_7.2.0_amd64.deb
sudo dpkg -i grafana_7.2.0_amd64.deb
sudo systemctl daemon-reload
sudo systemctl enable --now grafana-server

接下來,連到 <VM_IP>:3000,你應該會看到 Grafana 的畫面
利用 admin/admin 登入,再建立新的密碼,你就能進入 Grafana 了!

剛裝好的 Grafana 大概長這樣

grafana_welcome_dashboard

接下來我們要先安裝 Prometheus,首先要到這裡下載
下載完後解壓縮,會得到 Prometheus 的檔案,長這個樣子

.
|-- LICENSE
|-- NOTICE
|-- console_libraries
|   |-- menu.lib
|   `-- prom.lib
|-- consoles
|   |-- index.html.example
|   |-- node-cpu.html
|   |-- node-disk.html
|   |-- node-overview.html
|   |-- node.html
|   |-- prometheus-overview.html
|   `-- prometheus.html
|-- prometheus
|-- prometheus.yml
`-- promtool

2 directories, 14 files

/etc 裡建立一個資料夾叫 prometheus,然後把 prometheuspromtool 以外的東西都放進去
prometheuspromtool 都放進 /usr/local/bin,如下

$ mkdir -p /etc/prometheus
$ mv prometheus promtool /usr/local/bin
$ mv ./* /etc/prometheus

接著,由於系統沒有安裝 Prometheus 的自動啟動設定,我們要寫一個 Systemd Service File 讓系統能在開機時自動啟動 Prometheus
建立檔案 /etc/systemd/system/prometheus.service,然後填入這些內容

[Unit]
Description=Prometheus
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml

[Install]
WantedBy=multi-user.target

接下來執行

$ sudo systemctl daemon-reload
$ sudo systemctl enable --now prometheus

接下來用瀏覽器連上 <VM_IP>:9090,應該會看到這樣的畫面

prometheus_homepage

看到這樣的畫面就裝好 Prometheus 了,再來是 Node Exporter

Node Exporter 安裝的過程類似 Prometheus,一樣都要手動安裝
這裡抓 Node Exporter,然後一樣解壓縮
會得到這樣的檔案

.
|-- LICENSE
|-- NOTICE
`-- node_exporter
0 directories, 3 files

我們把 node_exporter 移到 /usr/local/bin

$ sudo mv node_exporter /usr/local/bin

接下來一樣要寫 Systemd Service File,建立一個檔案 /etc/systemd/system/node_exporter.service,然後填這些內容

[Unit]
Description=Node Exporter
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

接下來我們測試看看 Node Exporter 有沒有正常運作

$ curl localhost:9100/metrics

如果看到一堆輸出,就是 Node Exporter 有安裝成功

接下來我們設定 Prometheus,讓 Prometheus 會去跟 Node Exporter 要資料
打開 /etc/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']

這裡可以看到 Prometheus 的各項設定,包含 Alert
不過我們這裡先不提 Alert,我們先讓 Prometheus 能收到 Node Exporter 的資料就好

我們可以看到 scrape_configs: 裡有定義了 Job
Prometheus 會定時執行各個 Job,每個 Job 可以是不同的主機群
例如現在有個 Job 是 prometheus,而裡面有個 target 是 localhost:9090
Prometheus 在執行這個 Job 時,會對這個 target 要求路徑 /metrics 的內容
而當 target 回傳內容時,這些內容就會被存進 Prometheus,然後完成監控的工作

我們新增一個 Job node_exporter,然後我們比照 job prometheus 的方式建立
不過 targets 我們設定 localhost:9100,讓 Prometheus 去抓 Node Exporter 的資料
如下

  - job_name: 'node_exporter'
    static_configs:
    - targets: ['localhost:9100']

好了後存檔,重新啟動 Prometheus,再進到 Prometheus 的面板,點開 Status > Targets
應該能看到這樣的畫面

prometheus_targets

可以看到我們新建立的 job node_exporter 以及狀態

接下來,我們讓這些數據在 Grafana 上能被呈現

回到 Grafana 首頁,在設定圖示裡點開 Data Sources,然後新增一個 Data Source
Data Source 選擇 Prometheus

在裡面填入 Prometheus 主機資訊,如下

grafana_add_data_source_prometheus

好了以後壓最底下的 "Save & Test",確認沒問題後就新增完成了

接下來我們要建立 Dashboard 來呈現我們的資料
不過要手動建立 Dashboard 實在太麻煩了,我們可以快速匯入別人建好的面板,省去客製化的時間

我們要匯入的面板是1 Node Exporter for Prometheus Dashboard EN v20200628

在 Grafana 左側的加號圖示裡選擇 Import,在 Import 那欄輸入 ID 11074,接著壓 Load

grafana_import_11074

會看到這樣的畫面,然後我們要選擇 Data Source,選擇剛建立的 Prometheus
然後壓 Import,就能看到建立好的 Dashboard 了

grafana_prometheus_dashboard

建立完成後能看到主機的各項資訊,不過由於我們才剛安裝好 Prometheus 沒多久,還收集不到什麼資訊
不過這樣大概能讓你知道整個流程

我們明天說明怎麽安裝 InfluxDB & Telegraf


上一篇
Day 18 - 監測服務 - InfluxDB & Telegraf
下一篇
Day 20 - 監測服務 - Hands-on - 2
系列文
DevOps with Proxmox30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言