Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。
它涵盖了可以绑定的整个生态系统工具集及其功能。
Prometheus主要用于对基础设施的监控。包括服务器,数据库,VPS,几乎所有东西都可以通过Prometheus进行监控。Prometheus希望通过对Prometheus配置中定义的某些端点执行的HTTP调用来检索度量标准。
普罗米修斯的主要特点是:
1. 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据
2.PromQL,一种灵活的查询语言 ,可利用此维度
3.不依赖分布式存储;单服务器节点是自治的
4.时间序列收集通过HTTP上的拉模型进行
5.通过中间网关支持推送时间序列
6.通过服务发现或静态配置发现目标
7.多种图形和仪表板支持模式
需要下载镜像:prom/mysqld-exporter(监控mysql)
prom/prometheus
prom/node-exporter(监控node节点整机状态)
prometheus原理
![](https://img-blog.csdnimg.cn/20210912212514313.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
1.启动prometheus容器服务
启动前需要先手动在当前目录下创建prometheus.yml文件:touch prometheus.yml,不然会报挂在文件创建失败的错误,因为docker run时默认创建的挂载点是目录,不是文件。
docker run -d --name prometheus -p 9090:9090 -v ${PWD}/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
![](https://img-blog.csdnimg.cn/20210912214528473.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
2.启动成功后,公网访问该9090端口进入普罗米修斯主页
![](https://img-blog.csdnimg.cn/2021091221470041.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
3.部署mysqld-exporer监控mysql数据库(想监控什么就部署对应的exporter即可)
a.先部署mysql服务(有监控对象)
docker run -d --name my-mysql -v /home/gaofei/test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=1qaz9ol. -p 8888:3306 mysql:5.5
b.进入prometheus.io/download下载对应的exporter
![](https://img-blog.csdnimg.cn/20210912220402483.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
docker run -d --name mysql-exporter -p 9104:9104 -e DATA_SOURCE_NAME="root:1qaz9ol.@(mysql主机ip:888)/mysql" prom/mysqld-exporter
![](https://img-blog.csdnimg.cn/20210912222323891.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
配置prometheus.yml文件
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
- rules/*.rules
scrape_configs:
- job_name: 'prometheus'
scrape_interval: 5s
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
scrape_interval: 10s
static_configs:
- targets: ['ip:9100']
- job_name: 'mysql'
scrape_interval: 10s
static_configs:
- targets: ['ip:9104']
4.重启prometheus服务
docker restart prometheus
5.访问prometheus主页查看mysql的监控
![](https://img-blog.csdnimg.cn/20210912224423298.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/20210912234458818.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
点击mysql---show more
![](https://img-blog.csdnimg.cn/20210912235018345.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
由上可见,是通过一个metrics的接口来传输数据的,此时mysql和node都处于可监控的状态了。
——————————————————————————————————————————
6.将监控数据通过grafana面板展示
a.启动grafana服务
docker run -d --name=grafana -p 3000:3000 grafana/grafana
b.访问grafana首页(默认用户和密码:admin/admin)
![](https://img-blog.csdnimg.cn/20210913000524759.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
3.选择数据源
![](https://img-blog.csdnimg.cn/20210913000647743.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_15,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/20210913000713533.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/20210913000735643.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
只需要配置URL即可
![](https://img-blog.csdnimg.cn/20210913001001432.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
4.制作对应服务的仪表盘
![](https://img-blog.csdnimg.cn/20210913001214380.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
将id粘贴后点击load
![](https://img-blog.csdnimg.cn/20210913001402298.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/20210913001620617.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
点击import
![](https://img-blog.csdnimg.cn/20210913001658607.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
同理配置node-exporter监控
grafana中搜索
![](https://img-blog.csdnimg.cn/20210913001936800.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
![](https://img-blog.csdnimg.cn/20210913002014521.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
配置好grafana面板后发现没有数据
![](https://img-blog.csdnimg.cn/20210913002628471.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
是因为在服务端没有启动node-exporter 服务,直接下载二进制文件然后启动(方便,因为node_exporter设计用于监控主机系统。不建议将其部署为Docker容器,因为它需要访问主机系统)
![](https://img-blog.csdnimg.cn/20210913002611386.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
将该文件上传至宿主机后,执行以下1,2,3步,可使用nohup ./node_exporter --web.listen-address=":9100"&命令后台启动
![](https://img-blog.csdnimg.cn/20210913004047830.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
启动后公网访问9100端口即可验证是否可用
![](https://img-blog.csdnimg.cn/20210913004358193.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_19,color_FFFFFF,t_70,g_se,x_16)
然后再访问grafana中node-exporter就有node宿主机的系统监控数据了
![](https://img-blog.csdnimg.cn/20210913101258179.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2h1bnRpYW5fdGVzdGVy,size_20,color_FFFFFF,t_70,g_se,x_16)
OK,
大功告成~~~
后期可结合jmeter使用,可以边压测,边观察服务资源利用率等数据~~~~~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)