定稿人 | 定稿日期 | 系統環境
| :--------: | :-----: | :----: |
黃鎮游 | 2017.12.25 | ubuntu14.04 + docker1.13 + docker-compose1.16
## cAdvisor+influxdb+grafana
#### 工具
* `cAdvisor`用來分析運行中的Docker容器的資源占用以及性能特性的工具。用來收集swarm節點性能數據保存到infuxdb中.
* `InfuxDB`是一個開源分布式時序數據庫, 用來保存性能數據.
* `Grafana`性能繪圖儀表盤工具, 讀取Influxdb性能數據,繪圖展示.
#### 創建overlay網絡
```powershell
$ docker network create --driver overlay Monitor
5o2srynkuvecbs0x5wjccuvga
$ docker network ls | grep "Monitor"
5o2srynkuvec Monitor overlay swarm
```
#### influxDB on swarm
```powershell
$ docker service create --network logging -p 8083:8083 -p \
8086:8086 --mount source=influxdb-vol,type=volume,target=/var/lib/influxdb \
--name=influxdb --constraint 'node.hostname==Mai-II' influxdb:1.3
2ihgni3msvgxd4ljeb88jk3kn
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2ihgni3msvgx influxdb replicated 1/1 influxdb:1.3 *:8083->8083/tcp,*:8086->8086/tcp
$ docker service ps influxdb
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
ur5tk4emglcu influxdb.1 influxdb:1.3 Mai-II Running Running about a minute ago
```


#### cAdvisor on swarm
```powershell
$ docker service create --network logging --name cadvisor --mode global --mount source=/var/run,type=bind,target=/var/run,readonly=false --mount source=/,type=bind,target=/rootfs,readonly=true --mount source=/sys,type=bind,target=/sys,readonly=true --mount source=/var/lib/docker,type=bind,target=/var/lib/docker,readonly=true google/cadvisor:v0.23.8 -storage_driver=influxdb -storage_driver_host=influxdb:8086 -storage_driver_db=cadvisor
itcf68rul93zwpybg6vhvt17e
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2ihgni3msvgx influxdb replicated 1/1 influxdb:1.3 *:8083->8083/tcp,*:8086->8086/tcp
itcf68rul93z cadvisor global 2/2 google/cadvisor:v0.23.8
```
- `--mode global` 指定service運行在每個swarm節點上
- `--mount` 掛載本地docker socket用于監控docker性能
- `-storage_driver=influxdb` 指定存儲驅動,使cadvisor將數據存儲到數據庫中
- `-storage_driver_host=influxdb:8086` InfluxDB地址
- `-storage_driver_db=cadvisor` 數據庫名稱
#### grafana on swarm
```powershell
$ docker service create --network logging -p 3000:3000 -e "GF_SECURITY_ADMIN_PASSWORD=admin" --constraint 'node.hostname==Mai-II' --name grafana grafana/grafana
h5mig45awt7svl4jy43bvahzl
Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
$ docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
2ihgni3msvgx influxdb replicated 1/1 influxdb:1.3 *:8083->8083/tcp,*:8086->8086/tcp
h5mig45awt7s grafana replicated 1/1 grafana/grafana:latest *:3000->3000/tcp
itcf68rul93z cadvisor global 2/2 google/cadvisor:v0.23.8
```





## telegraf+influxdb+grafana
##telegraf+influxdb+grafana
####啟動influxdb
```powershell
$ docker run -itd -p 8083:8083 -p 8086:8086 -e ADMIN_USER="root" -e INFLUXDB_INIT_PWD="root" -e PER_CREATE_DB="telegraf" --name influxdb influxdb:1.3
# 第一次telegraf容器
$ docker run -itd --name telegraf telegraf
# 將telegraf容器里的telegraf.conf配置文件復制出來
$ docker cp telegraf:/etc/telegraf/telegraf.conf ./telegraf.conf
# 再次啟動telegraf容器前需要修改telegraf配置文件。如下【在正式啟動telegraf容器前需要修改配置】
$ docker run -itd --name=telegraf -v /home/hzy/telegraf.conf:/etc/telegraf/telegraf.conf -v /var/run:/var/run telegraf
# 啟動Grafana服務,將密碼設置為“admin”
$ docker run -itd -p 3000:3000 -e "GF_SECURITY_ADMIN_PASSWORD=admin" --name grafana grafana/grafana
```
#### 在正式啟動telegraf容器前需要修改配置



####在Grafana添加influxdb的數據源

、
#### 在Grafana官網下載監控配置文件
> https://grafana.com/dashboards
* grafana官網有許多比較完善的配置文件可以下載后直接導入
①篩選對應的插件配置

②注意版本號

#### 導入json配置文件
* 導入json文件的入口

* 選擇導入文件和influxdb源

* 成功后的效果

- Docker
- Docker入門
- docker管理UI
- 封裝各大數據組件
- 自主封裝
- 封裝hadoop
- 封裝spark
- 官方封裝
- 封裝hue
- 封裝jenkins
- Swarm
- Swarm入門
- Zookeeper on swarm
- Hue on swarm
- Grafana
- influxDB
- Prometheus
- cAdvisor
- kubernetes
- k8s入門
- k8s部署dashboard
- minikube
- 手動搭建k8s的高可用集群
- 01環境準備
- 02部署etcd集群
- 03配置kubelet
- 04部署flannel網絡
- 05部署master集群
- 06配置高可用
- 07部署node節點
- 08驗證集群
- Monitor
- swarm 監控
- influxDB+Grafana
- Prometheus+Grafana