很早之前就听说了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