一:Grafana 簡介與部署

安利一個生產環境正在使用的監控和告警平臺:grafana,它是一個開源的可對指標和日誌進行查詢、視覺化和告警的平臺。

docker 安裝官方文件:https://grafana.com/docs/grafana/latest/administration/configure-docker/

  1. # 建立持久化目錄
  2. cd /root/data/docker
  3. mkdir -p grafana/data
  4. mkdir -p grafana/logs
  5. # 將修改後的配置檔案放在指定的目錄
  6. cp grafana.ini grafana/
  7. # 修改目錄許可權,docker方式啟動grafana使用的uid和gid為472
  8. chown 472:472 grafana/data -R
  9. # 啟動容器
  10. docker run -d \
  11. -p 3000:3000 \
  12. --name=grafana \
  13. -v /root/data/docker/grafana/data:/var/lib/grafana \
  14. -v /root/data/docker/grafana/logs:/var/log/grafana \
  15. -v /root/data/docker/grafana/grafana.ini:/etc/grafana/grafana.ini \
  16. --restart=always \
  17. grafana/grafana:7.2.1

注意:需要將 grafana.ini 檔案中的domain改為伺服器的外網ip,否則告警通知連結的host是localhost

環境地址:http://ip:3000/login

初始使用者名稱/密碼為admin/admin

二:Influxdb安裝

InfluxDB是一個由InfluxData開發的開源時序型資料。它由Go寫成,著力於高效能地查詢與儲存時序型資料。InfluxDB被廣泛應用於儲存系統的監控資料,IoT行業的實時資料等場景。

官方文件:https://hub.docker.com/_/influxdb

  1. # 建立持久化目錄
  2. cd /root/data/docker
  3. mkdir -p influxdb
  4. # 啟動容器
  5. docker run -d \
  6. -p 8086:8086 \
  7. --name=influxdb \
  8. -v /root/data/docker/influxdb:/var/lib/influxdb \
  9. --restart=always \
  10. influxdb:1.8

初始化資料庫:

  1. # 啟動influxdb客戶端
  2. docker exec -it influxdb influx
  3. # 建立資料庫,資料ttl 2周
  4. CREATE DATABASE "test" WITH DURATION 2w REPLICATION 1 NAME "default";

三:Prometheus及exporter安裝

官方網址:https://prometheus.io

  1. # 拉取映象
  2. docker pull prom/prometheus
  3. # 建立配置檔案
  4. mkdir -p /root/data/docker/prometheus
  5. cd /root/data/docker/prometheus
  6. # 配置檔案內容見附件, 將裡面的ip改為伺服器的ip
  7. vim prometheus-config.yml
  8. # 啟動
  9. docker run --name prometheus --restart=always -d -p 9090:9090 \
  10. -v /root/data/docker/prometheus/prometheus-config.yml:/etc/prometheus/prometheus.yml \
  11. prom/prometheus --config.file=/etc/prometheus/prometheus.yml

在grafana配置資料來源

下面用prometheus監控伺服器:

  1. vim prometheus-config.yml
  1. # 全域性配置
  2. global:
  3.  
  4. scrape_interval: 15s
  5.  
  6. evaluation_interval: 15s
  7.  
  8. scrape_configs:
  9.  
  10. # 監控伺服器
  11.  
  12. - job_name: 'server'
  13.  
  14. static_configs:
  15.  
  16. - targets: ['內網ip:9100']

安裝:

  1. # 下載安裝包
  2. mkdir -p /root/data/monitor
  3. cd /root/data/monitor
  4. wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
  5. tar zxvf node_exporter-1.1.2.linux-amd64.tar.gz
  6. # 配置系統級的啟動命令
  7. cd /etc/systemd/system/
  8. # 內容見下面
  9. vim node_exporter.service
  10. systemctl daemon-reload
  11. systemctl start node_exporter
  12. systemctl enable node_exporte

node_exporter.service的內容如下:

  1. [Unit]
  2. Description=Node Exporter
  3. Wants=network-online.target
  4. After=network-online.target
  5.  
  6. [Service]
  7. User=root
  8. ExecStart=/root/data/monitor/node_exporter-1.1.2.linux-amd64/node_exporter
  9.  
  10. [Install]
  11. WantedBy=default.target

配置:

11074:https://grafana.com/grafana/dashboards/11074,其實就是官方和社群構建的儀表板。

最終效果:

Grafana、Prometheus、influxdb三者相輔相成,不僅可以快速幫我們構建系統級別的監控,還能快速的匯入伺服器、資料庫等其他常用基建的儀表盤,

同事又支援精緻化的業務打點與告警規則的配置。