生產環境之Docker部署Prometheus+Grafana+InfluxDB+Skywalking


生產環境之Docker部署Prometheus+Grafana+InfluxDB+Skywalking

一、Prometheus監控docker容器

監控服務器 需要安裝4個服務
  • Prometheus Server(普羅米修斯監控主服務器 )
  • Node Exporter (收集Host硬件和操作系統信息)
  • cAdvisor (負責收集Host上運行的容器信息)
  • Grafana (展示普羅米修斯監控界面)
被監控的只有安裝2個
  • Node Exporter (收集Host硬件和操作系統信息)
  • cAdvisor (負責收集Host上運行的容器信息)

中文文檔

需了解cadvisor

首先在監控服務器安裝:

1.安裝Node Exporter 來收集硬件信息

所有節點運行以下命令安裝Node Exporter 容器
docker run -d -p 59100:9100 \
-v "/proc:/host/proc" \
-v "/sys:/host/sys" \
-v "/:/rootfs" \
-v "/etc/localtime:/etc/localtime" \
--name=node-exporter \
prom/node-exporter

2.安裝cAdvisor 來收集容器信息 

所有節點運行以下命令來安裝cAdvisor

docker run -d \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=58080:8080 \
--detach=true \
--name=cadvisor \
-v "/etc/localtime:/etc/localtime" \
google/cadvisor:latest

3.安裝普羅米修斯服務

首先在本地創建prometheus.yml這是普羅米修斯的配置文件
將下方內容寫入到文件中
將監聽的地址改為自己本機地址
mkdir -p /data/prometheus
vim /data/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).
 
 
# 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:59090','localhost:59100']
 
 
  - job_name: 'xh-base-01'
    static_configs:
    - targets: ['172.18.68.236:58080','172.18.68.236:59100']
 
 
  - job_name: 'xh-base-02'
    static_configs:
    - targets: ['172.18.69.43:58080','172.18.69.43:59100']
 
  - job_name: 'xh-base-03'
    static_configs:
    - targets: ['172.18.69.44:58080','172.18.69.44:59100']
 
  - job_name: 'xh-master-01'
    static_configs:
    - targets: ['172.18.69.40:58080','172.18.69.40:59100']
 
  - job_name: 'xh-master-02'
    static_configs:
    - targets: ['172.18.69.41:58080','172.18.69.41:59100']
 
  - job_name: 'xh-master-03'
    static_configs:
    - targets: ['172.18.69.42:58080','172.18.69.42:59100']

啟動容器

docker run -d -p 59090:9090 \
-v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v "/etc/localtime:/etc/localtime" \
--name prometheus \
prom/prometheus:v2.27.1
 
當Prometheus容器啟動成功后訪問
 

二、在DockerMachine上運行Grafana

docker run -d -i -p 53000:3000 \
-v "/etc/localtime:/etc/localtime:ro" \
-e "GF_SERVER_ROOT_URL=http://grafana.xh.sunli.work" \
-e "GF_SECURITY_ADMIN_PASSWORD=123456" \
--name grafana \
grafana/grafana:7.2.0
  • nginx配置
server{
       listen       80;
        server_name  grafana.xh.sunli.work;
        location / {
                proxy_pass http://127.0.0.1:53000;
                proxy_connect_timeout      5;
                proxy_read_timeout         10;
                proxy_send_timeout         10;
        }
    }
  • 添加Prometheus
"Configuration"——>"Data Sources"——>"Add data source"——>"URL:http://172.18.68.221:59090/"——>"Save & Test"     測試成功並保存
Create——>"import"——>"8321"——>"Load"——>"Import"    (推薦好用模板:8321、8919、2204、13978、11558、12232)
  • 展示
  • 安裝實用插件
docker exec -it grafana sh
$ cd /usr/share/bin/
$ grafana-cli plugins install alexanderzobnin-zabbix-app 安裝zabbix插件
$ grafana-cli plugins install grafana-worldmap-panel 安裝世界地圖插件
$ grafana-cli plugins install grafana-clock-panel 安裝時間插件
$ grafana-cli plugins install grafana-piechart-panel 安裝圓餅插件
 

三、InfluxDB的安裝

說明當前最新版2.0的influxdb自帶UI監控界面,與Granfan融合有點問題(only me),而1.7的版本需要進容器里創建賬號密碼,所以選定1.8的版本
docker run -itd -p 58086:8086 -p 2003:2003 \
        -e INFLUXDB_GRAPHITE_ENABLED=true \
        -e INFLUXDB_DB=xuehua_db0 \
        -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=123456 \
        -e INFLUXDB_USER=xuehua -e INFLUXDB_USER_PASSWORD=123456 \
        --name=xh-influxdb \
        influxdb:1.8
  • 添加influxdb
"Configuration"——>"Data Sources"——>"Add data source"——>"URL: http://172.18.68.221:58086/"——>"Database:xuehua_db0"——>"User:xuehua"——>"Password:BaoDian1608"——>"Save & Test"     測試成功並保存
 
 

四、Docker部署skywalking

  • 啟動 SkyWalking Server
docker run -itd \
--name skywalking-oap \
--restart=always \
-p 1234:1234 -p 11800:11800 -p 12800:12800 \
-e SW_STORAGE=elasticsearch7 \
-e SW_STORAGE_ES_CLUSTER_NODES=172.18.169.173:9200 \
apache/skywalking-oap-server:8.3.0-es7
  • 啟動 UI
docker run -itd  \
--name skywalking-ui \
--restart=always  \
-p 48080:8080 \
--link skywalking-oap:skywalking-oap \
-e SW_OAP_ADDRESS=skywalking-oap:12800 \
apache/skywalking-ui:8.3.0
  • nginx配置
htpasswd -c /usr/local/nginx/conf/base-auth/passwd.db xuehua
server {
        listen       80;
        server_name  skywalking.xh.sunli.work;
        location / {
            proxy_pass http://127.0.0.1:48080;
            auth_basic            "Basic Auth";
            auth_basic_user_file  "/usr/local/nginx/conf/base-auth/passwd.db";
        }
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM