Docker基础课二:基于Docker搭建Prometheus和Grafana的监控平台

Prometheus

  1. Prometheus是一套基于应用的metrics来进行监控和报警的开源工具;

  2. 原理,通过HTTP请求周期性的抓取metrics接口信息获取被监控应用的状态,因此需要应用提供HTTP的metrics接口就可以接入监控,非常适合虚拟化环境比如VM或者Docker;

  3. prometheus有非常高效的存储,平均一个采样数据占约3.5bytes左右,320万的时间序列,每30秒采样,保持60天,消耗磁盘大概228G;

  4. 更多信息,参考:https://www.cnblogs.com/xiao987334176/p/9930517.html

Prometheus的docker安装

  1. 拉取镜像:docker pull prom/prometheus;

  2. 创建配置文件:vi ~/prometheus/opt/prometheus.yml,在配置文件中添加需要监控的exporter,这里为了测试,添加了用于监控当前机器状态的node-exporter,稍后会在机器上部署该exporter,部署路径192.168.99.100:9100;

	 - job_name: linux-status
	    static_configs:
	      - targets: ['192.168.99.100:9100']
	        labels:
	          instance:  linux-status
  1. 创建prometheus的启动脚本:注意–net="host"的设置使得docker容器内部和宿主机公用了网络,这样使得docker容器之间可以互相访问;
	su -c "setenforce 0";
	docker stop prometheus-monitor;
	docker rm prometheus-monitor;
	docker run -d --name prometheus-monitor -p 9090:9090 --net="host"  -v /home/dengh/prometheus/opt/prometheus.yml:/etc/prometheus/prometheus.yml 		prom/prometheus:latest;
  1. 在当前机器部署一个node-exporter,用来输出linux主机信息:也需要–net=“host”
	docker pull prom/node-exporter;
	su -c "setenforce 0";
	docker stop node-exporter;
	docker rm node-exporter;
	docker run -d --name node-exporter -p 9100:9100 --net="host"  -v /home/dengh/node-exporter/proc:/host/proc:ro -v /home/dengh/node-exporter/sys:/host/sys:ro -v /home/dengh/node-exporter/:/rootfs:ro  prom/node-exporter:latest;
  1. 首先启动node-exporter,然后启动prometheus,随后就可以通过浏览器访问http://192.168.99.100:9090/targets和/graph来查找各个endpoint的监控值;
    Docker基础课二:基于Docker搭建Prometheus和Grafana的监控平台_第1张图片

  2. 如果出现windows中的web页面无法访问虚拟机端口的情况,导致Prometheus的页面不显示,但在虚拟机中是可以通过curl访问的,说明很可能是防火墙的问题,简单的关闭防火墙(systemctl stop firewalld.service)不推荐,且可能造成其他应用无法启动,可以通过配置暴露防火墙端口来解决,参考:https://blog.csdn.net/xiunai78/article/details/84981281

	firewall-cmd --zone=public --add-port=9090/tcp --permanent
	firewall-cmd --reload
  1. 与springboot应用的集成,请参考:https://editor.csdn.net/md?articleId=104199041;

Grafana

  1. 开源的度量分析和可视化工具,将采集的数据进行可视化的展示,提供查询功能,并及时通知和告警;

  2. 数据源可以是Graphite,InfluxDB,OpenTSDB,Prometheus,Elasticsearch,CloudWatch和KairosDB等;

  3. 为了扩展监控和告警,和更方便的展示监控信息,往往会prometheus的监控数据集成到Grafana中;

Grafana的docker安装

  1. 拉取镜像:docker pull grafana/grafana

  2. 编写启动脚本,并启动容器:

	su -c "setenforce 0";
	docker stop grafana-monitor;
	docker rm grafana-monitor;
	docker run -d --name grafana-monitor -p 3000:3000  -e "GF_SERVER_ROOT_URL=http://grafana.server.name" -e "GF_SECURITY_ADMIN_PASSWORD=dengh"  -v /home/dengh/grafana/data:/var/lib/grafana grafana/grafana:latest;
  1. 启动容器时如果要挂载配置,-v /home/dengh/grafana/etc:/etc/grafana,可能提示无权限,待解决;

  2. 浏览器访问,http://192.168.99.100:3000/,用户名,admin;

  3. 参考:https://www.jianshu.com/p/fc6a85d830ab

Grafana聚合Prometheus

  1. 首先访问grafana,http://192.168.99.100:3000/,并添加数据源,add data source,url 输入Prometheus的ip+端口(
    http://192.168.99.100:9090/);

  2. 然后添加dashboard,点击graph,选择panel,进行edit,并选择监控的metrics,enable query后即可看到对mertics的监控;
    Docker基础课二:基于Docker搭建Prometheus和Grafana的监控平台_第2张图片

  3. 示例参考:https://blog.csdn.net/qq_28128035/article/details/104199041;

你可能感兴趣的:(微服务生态)