很早之前就听说了Grafana这个工具,但是之前的时候没有用,最近的时候NAS总是Down 所以想监控一下 于是就部署了一个,既然部署了那就把内网的服务器全给监控一下,所以就写了这篇文章
Grafana  只是用来展示数据的,我们需要有收集数据的工具和不同的平台上报数据,我使用收集数据的是Prometheus   ,Prometheus需要Exporter 来上报数据。根据不同的平台选择不同的Exporter。
Node Exporter,负责收集所属节点的硬件和操作系统数据。 
VM Exporter ,负责虚拟机的数据 
cadvisor ,收集容器的数据 
windows_exporter,收集Windows数据 
 
安装 Grafanna 使用docker安装Grafana
1 2 3 4 5 6 7 8 9 10 11 12 services:   grafana:     image: grafana/grafana:latest     container_name: grafana     ports:       - "3888:3000"      environment:       - GF_SECURITY_ADMIN_PASSWORD=admin123     volumes:       - /etc/localtime:/etc/localtime:ro     restart: unless-stopped 
 
Prometheus节点 在你需要监控的设备上,根据不同的设备类型安装不同的节点
Node Exporter 一般为Linux主机节点  我是用的是docker安装  也可以直接下载安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 services:   node_exporter:     image: quay.io/prometheus/node-exporter:latest     container_name: node_exporter     command:       - '--path.rootfs=/host'        - '--collector.timex'          network_mode: host     pid: host     restart: unless-stopped     cap_add:       - SYS_TIME                      - SYS_NICE                      - SYS_ADMIN                     - IPC_LOCK                    privileged: false               volumes:       - '/:/host:ro,rslave'      user : root                  
 
下载安装地址GitHub:https://github.com/prometheus/node_exporter/releases 
VM Exporter EXSI使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 services:   vmware-exporter:     image: pryorda/vmware_exporter:latest     container_name: vmware_exporter     restart: unless-stopped     ports:       - "9272:9272"        environment:       - VSPHERE_USER=root         - VSPHERE_PASSWORD=123               - VSPHERE_HOST=192.168 .31.3                       - VSPHERE_IGNORE_SSL=true                          - VSPHERE_SPECS_SIZE=2000                         networks:       - monitoring networks:   monitoring:     driver: bridge 
 
GitHub:https://github.com/pryorda/vmware_exporter 
cadvisor 最开始pull镜像安装之后会出现问题cadvisor  | F0904 08:24:28.483987       1 cadvisor.go:146] Failed to create a Container Manager: mountpoint for cpu not found  因为cgroup 可能使用 cgroup2 或者挂载点位置发生了变化,mount | grep cgroup查完确定使用的cgroup2 换了个其他,就可以了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 services:   cadvisor:     image: lagoudocker/cadvisor:v0.37.0      container_name: cadvisor     privileged: true     restart: unless-stopped     ports:       - "8333:8080"      volumes:       - "/:/rootfs:ro"        - "/var/run:/var/run:ro"        - "/sys:/sys:ro"        - "/var/lib/docker/:/var/lib/docker:ro"        - "/dev/disk/:/dev/disk:ro"      devices:       - "/dev/kmsg:/dev/kmsg"  
 
我在群晖上也部署了这个 ,但是群晖的硬盘映射和普通Linux不太一样所以做了些许更改下方为群晖使用的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 services:   cadvisor:     image: lagoudocker/cadvisor:v0.37.0      container_name: cadvisor     privileged: true     restart: unless-stopped     ports:       - "8333:8080"      volumes:       - "/:/rootfs:ro"        - "/var/run:/var/run:ro"        - "/sys:/sys:ro"        - "/volume1/docker:/var/lib/docker:ro"      devices:       - "/dev/kmsg:/dev/kmsg"  
 
GitHub:https://github.com/google/cadvisor 
windows_exporter 下载安装即可
GitHub:https://github.com/prometheus-community/windows_exporter/releases 
Prometheus安装 在哪安装都行  只要与node是互通的 我用的docker安装的
需要首先更改配置文件Prometheus.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 global:   scrape_interval:      15s     evaluation_interval:  15s      alerting:   alertmanagers:    -  static_configs:      -  targets:         rule_files:       scrape_configs:      -  job_name:  'n100 winserver'                static_configs:             -  targets:  ['192.168.31.53:9100' ]   -  job_name:  'exsi'      static_configs:        -  targets:  ['192.168.31.54:9272' ]   -  job_name:  'n100windows'      static_configs:        -  targets:  ['192.168.31.55:9182' ]   -  job_name:  'docker'      static_configs:        -  targets:  ['192.168.31.33:8333' ,'192.168.31.34:8333' ] 
 
平台安装
1 2 3 4 5 6 7 8 9 10 11 services:   prometheus:     image: prom/prometheus:latest     container_name: prometheus     ports:       - "8989:9090"      volumes:       - ./prometheus.yml:/etc/prometheus/prometheus.yml       - /etc/localtime:/etc/localtime:ro     restart: unless-stopped 
 
GitHub:https://github.com/prometheus/prometheus 
成功之后可以使用浏览器访问http://ip:8989/targets来查看节点是否都上线
配置联动 登录Grafana
设置中文 点击右上角头像 选择 第一个然后语言中选择中文就可以了 
添加数据源:左侧选择连接,数据源 添加Prometheus 添加url保存测试就可以了 
增加仪表盘:点击仪表盘,新建,导入,输入id 
 
我推荐的id :
Node Ezxporter:8919 
Docker:19908