使用Prometheus+Grafana搭建企业级监控服务

568 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第天8,点击查看活动详情

前言

大家好,我是 Taylor,一个有趣且乐于分享的人,目前专注前端、Node.js技术栈分享,如果你对 前端、Node.js 学习感兴趣的话(后续有计划也可以),可以关注我掘金.

背景

随着docker服务越来越多,监控报警就该做起来。

不仅可以监控docker, mysql 服务器都可以

不过这好像是运维的活??

地址/账号

看看呗

地址 http://47.100.224.112:8102****

仅查看权限账号 pu/pu

效果

简介

Prometheus(普罗米修斯)

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。

架构图

Grafana

Grafana是一个开源的功能丰富的数据可视化平台

我看的就是可以和Prometheus 配合使用且十分精美的UI界面

简单的理解 他两 的关系 就是 Prometheus 负责采集数据, Grafana给你展示出来。

建设

我使用docker-compose一键安装部署, 真的是非常的好用, 所有相关服务一键启动

安装docker-compose

详见 使用docker-compse部署Node.js

创建目录

创建一个目录 例如 prometheus

mkidr prometheus

在目录下创建如下文件夹并授权可写权限

prometheus_data

grafana_data

准备两个文件

两个文件放在创建好的**prometheus** 目录

端口号我这里用的 8100-8103,。

左边是宿主机-右边是容器里, 可以根据需要自行修改

1、docker-compose.yml

下面镜像释义

  • prom/node-exporter 服务器监控数据收集
  • prom/prometheus 普罗米休斯程序
  • google/cadvisor docker数据收集程序
  • grafana 可视化数据面板

就是收集程序负责相关应用数据收集 比如收集docker的、mysql都有各自的, 最后注册到普罗米修斯

version : "3.7"  services : node- exporter :  image : prom/node- exporter :latest  container_name : "node-exporter0"   ports : - "8100:9100"   volumes : - "/etc/localtime:/etc/localtime:ro"  - "/etc/timezone:/etc/timezone:ro"   restart : always  prometheus :  image : prom/ prometheus :latest  container_name : "prometheus0"   restart : always  ports : - "8101:9090"   volumes : - "/etc/localtime:/etc/localtime:ro"  - "/etc/timezone:/etc/timezone:ro"  - "./prometheus.yml:/etc/prometheus/prometheus.yml" # 前面是普罗米修斯配置文件路径, 默认我放在和docker-compose一个目录 - "./prometheus_data:/prometheus"   cadvisor :  image : google/ cadvisor :latest  container_name : monitoring_cadvisor  restart : unless-stopped  volumes : - "/:/rootfs:ro"  - "/var/run:/var/run:rw"  - "/sys:/sys:ro"  - "/var/lib/docker/:/var/lib/docker:ro"   ports : - "8103:8080"   grafana :  image : grafana/grafana  container_name : "grafana0"   ports : - "8102:3000"   restart : always  volumes : - "/etc/localtime:/etc/localtime:ro"  - "/etc/timezone:/etc/timezone:ro"  - "./grafana_data:/var/lib/grafana"  - "./grafana_log:/var/log/grafana"  - "./grafana_data/crypto_data:/crypto_data"   # 宿主机的地址是冒号前面的,冒号后面的是容器地址,不可变,这个用来放sqlite数据库的位置。  

2、prometheus.yml

普罗米休斯的配置文件

global:
  scrape_interval:     15s # 默认抓取周期
 external_labels:
    monitor: 'codelab-monitor'
scrape_configs:
  - job_name: 'node' #服务的名称
 scrape_interval: 5s
    metrics_path: /metrics  #获取指标的url
 static_configs:
      - targets: ['172.16.6.51:8100'] # 这里的ip是我配的是内网ip, 你要换成自己的
- job_name: 'docker' #服务的名称
 static_configs:
      - targets: [ '172.16.6.51:8103' ] # 这里的ip是我配的是内网ip, 你要换成自己的

一键启动

确保prometheus.yml和docker-compose.yml在同一文件夹

docker-compose up -d

grafana界面使用及其配置

配置连接prometheus

grafana 设置里数据源 地址填prometheus的端口

测试连接

如图就是连接成功

添加模板

加了一个docker的

查看效果

踩坑

待补充

1、模板不显示数据

相关参考

epk.fun/d/273-grafa…

grafana.com/docs/grafan…