基于Docker搭建Prometheus+Grafana
简介
Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。
Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。
下载镜像
docker pull prom/node-exporter
docker pull prom/prometheus
docker pull grafana/grafana
启动node-exporter
docker run -d --name node-exporter \
-p 9100:9100 \
-v "/proc:/host/proc:ro" \
-v "/sys:/host/sys:ro" \
-v "/:/rootfs:ro" \
prom/node-exporter
浏览器访问 ip:9100
这些都是收集到的数据,有了它就可以做数据展示了。
启动prometheus
创建配置文件 prometheus.yml
mkdir /root/test_grafana
cd /root/test_grafana
vim prometheus.yml
内容如下:
global:
scrape_interval: 60s
evaluation_interval: 60s
scrape_configs:
- job_name: prometheus
static_configs:
- targets: ['111.229.180.172:9090']
labels:
instance: prometheus
- job_name: linux
static_configs:
- targets: ['111.229.180.172:9100']
labels:
instance: localhost
启动容器
docker run -d \
--name prometheus \
-p 9090:9090 \
-v /root/test_grafana/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus
浏览器访问 ip:9090
启动grafana
新建空文件夹grafana-storage,用来存储数据
mkdir /root/test_grafana/grafana-storage
chmod 777 -R /root/test_grafana/grafana-storage
启动grafana
docker run -d \
--name=grafana \
-p 3000:3000 \
-v /root/test_grafana/grafana-storage:/var/lib/grafana \
grafana/grafana
浏览器登录 ip:3000
,默认账号密码 admin/admin
配置数据源
选择 prometheus
提示 Data source is working,说明配置成功
导入仪表盘
在 Grafana 里,仪表盘的配置可以通过图形化界面进行,但配置好的仪表盘是以 JSON 存储的。这也就是说,如果你把你的 JSON 数据分享出去,别人导入就可以直接导入同样的仪表盘(前提是你们的监测数据一样)。
对于我们的例子来说,因为我们用了 node-exporter 也就是本机的系统信息监控,那么我们可以先找一个同样用了这个数据源的仪表盘。在 Grafana 网站上,你其实可以找到很多别人已经做好的仪表,可以用来监测非常多标准化的服务。Grafana 的仪表盘市场
比如说针对以下一些服务的标准仪表盘就可以在这里找到
- JVM
- Spring Boot
- MySQL 监控
- Laravel 监控
在左侧的加号里,点 Import 即导入,在出现的界面中填入 11074(仪表盘市场获取) 即我们要导入的仪表盘编号即可。
效果如下
参考
基于Docker搭建Prometheus+Grafana
Grafana 中文入门教程 | 构建你的第一个仪表盘
Docker环境部署Prometheus实践