生產環境之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; } }
-
Grafana啟動后,在瀏覽器中打開http://grafana.xh.sunli.work/登錄界面,登錄用admin 密碼為剛創建Grafana時的123456
-
添加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
相關🔗
docs/README.md at master · docker-library/docs · GitHub、
InfluxDB OSS 1.8 Documentation (influxdata.com)、
介紹 · InfluxDB中文文檔 (gitbooks.io)
-
添加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; }
-
訪問: http://skywalking.xh.sunli.work/,輸入賬號密碼即可