本次服务搭建采用容器进行部署,需要部署的容器有prometheus、pushgateway、node-exporter、
cadvisor、consul、granfana
- prometheus: prometheus监控服务,收集、存储监控数据
- pushgateway: prometheus采用pull模式,可能由于不在一个子网或防火墙导致无法直接拉取各target数据,需要将不同数据汇总后,再由Prometheus统一收集
- node_exporter: 常用收集运行节点监控信息,节点CPU、内存等;
- cadvisor: 用于收集节点运行docker容器的监控数据;
- granfana : 用于将prometheus的监控数据进行可视化展示;
- consul:: 实现将监控收集服务进行注册,与prometheus自动注册,上报监控数据;(prometheus.yml里配置需要监听的服务时,我们需要按服务名手动写入,也就是说以后每增加一个服务,就得手动修改此配置,并重启promethues服务,使用consul后可自动实现监控服务注册);
- prometheus服务启动
docker run --name prom --hostname prom -p 9090:9090 -v /var/config/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
启动以后,我们运行http://ip:9090 可以访问Prometheus
修改prometheus.yaml配置文件,增加以下内容,并重启prometheus
- job_name: pushgateway
scrape_interval: 30s
static_configs:
- targets: ['192.168.*.*:9091']
labels:
instance: pushgateway
- pushgateway启动
docker run -d -p 9091:9091 prom/pushgateway
启动以后,我们运行http://ip:909 可以访问pushgateway
- node_exporter启动
容器启动:
docker run -d -p 9100:9100 --restart=always -m 5G --memory-swap=5G -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" --name node_exporter quay.io/prometheus/node-exporter --path.procfs /host/proc --path.sysfs /host/sys --collector.filesystem.ignored-mount-points "^/(sys|proc|dev|host|etc)($|/)"
当 Node Exporter 运行起来后,在浏览器中访问 http://IP:9100/metrics查看抓取metrics.
修改prometheus.yaml配置文件,增加以下内容,并重启prometheus
- job_name: 'nodeexporter'
static_configs:
- targets: ['192.168.*.*:9100']
- cadvisor容器启动
$ docker run --volume=/:/rootfs:ro --volume=/var/run:/var/run:ro --volume=/sys:/sys:ro --volume=/var/lib/docker/:/var/lib/docker:ro --volume=/dev/disk/:/dev/disk:ro --publish=9090:8080 --detach=true --name=cadvisor --privileged --device=/dev/kmsg google/cadvisor
当 cadvisor 运行起来后,在浏览器中访问 http://IP:9090/metrics查看抓取metrics.
修改prometheus.yaml配置文件,增加以下内容,并重启prometheus
- job_name: 'cadvisor'
static_configs:
- targets: ['192.168.*.*:9090']
- consul启动
docker run --name consul -d -p 8500:8500 consul
当 consul运行起来后,在浏览器中访问 http://IP:8500
修改prometheus.yaml配置文件,增加以下内容,并重启prometheus
- job_name: 'consul'
consul_sd_configs:
- server: '192.168.*.*:8500'
services: [] #匹配所有service
relabel_configs:
- source_labels: [__meta_consul_service] #service 源标签
regex: "consul" #匹配为"consul" 的service
有关relabel_configs 更多配置可查阅资料配置
6. grafana启动
docker run -d --name grafana -p 3000:3000 -v /data/grafana:/var/lib/grafana grafana/grafana
当 grafana运行起来后,在浏览器中访问 http://IP:3000 ,使用admin/admin进入系统 。
- 添加数据源
- 配置Grafana数据展示模板
Grafana里有很多的模板可以直接使用(https://grafana.com/dashboards),我这里使用的是https://grafana.com/dashboards/8919,其中8919是ID号,可以在Grafana中import,直接输入ID号会自动找到该模板。
有关promtheus配置还有很多,监控报警设置,报警信息可发送只钉钉、邮箱等,在此不做赘述



