基于docker搭建Prometheus+Grafana监控报警系统

自闭症网瘾萝莉.ら 提交于 2020-08-12 14:28:19

下载prometheus等镜像:

# prometheus镜像
docker pull docker.io/prom/prometheus
 
# grafana镜像
docker pull docker.io/grafana/grafana
 
# node-exporter:监控系统信息,这里先写下,暂时不用
docker pull docker.io/prom/node-exporter

一. Prometheus安装

1.1 编辑配置文件prometheus.yml

简单期间,本文使用Docker方式安装,其他方式安装请详见 Prometheus安装说明 。

# 第一步:建立相应文件夹

mkdir -p /opt/prometheus
mkdir -p /opt/prometheus/server
# mkdir -p /opt/prometheus/client
touch /opt/prometheus/server/rules.yml  # 后面报警系统使用
chmod 777 /opt/prometheus/server/rules.yml

# 第二步:编辑配置文件prometheus.yml

cd /opt/prometheus/
vi prometheus.yml

# 第三步:prometheus.yml内容如下:

更多配置项详见 Prometheus Configuration官方文档

  • instance: 收集数据的目标端点,一般对应一个进程,即指定其来源,如某个机器
  • job: 实现同一功能或目标的一组instance。 如一组机器的集合。
global:
  # 拉取时间间隔, 默认15s
  scrape_interval:     15s
  # 拉取超时时间
  scrape_timeout: 60s
  evaluation_interval: 60s
  external_labels:
    monitor: 'codelab-monitor'
	
# 抓取对象配置		
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s # 重写了全局抓取间隔时间,由15秒重写成5秒
    scrape_timeout: 10s
    metrics_path: '/monitor/actuator/prometheus'
    static_configs:
      - targets: ['localhost:9090']
 
  - job_name: prometheus2
    static_configs:
      - targets: ['localhost:9090']
        labels:
          instance: prometheus
 
  - job_name: linux
    static_configs:
      - targets: ['192.168.91.132:9100']
        labels:
          instance: localhost
		  
  
  - job_name: 'spring'  # 任意写,建议英文,不要包含特殊字符
    
    # 采集服务的地址,设置成上面Spring Boot应用所在服务器的具体地址。
    static_configs:
      - targets: ['30.1.229.89:8080']
    
    # 多久采集一次数据
    scrape_interval: 15s
    
    # 采集时的超时时间
    scrape_timeout: 10s
    
    # 采集的路径
    metrics_path: '/actuator/prometheus'

    # 这样配置后,Prometheus服务器就会自动每隔15秒请求 http://30.1.229.89:8080/actuator/prometheus 。

 注意:修改IP地址,这里的192.168.91.132就是本机地址 

如果想动态配置服务信息,可以参考如下配置:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: 'app-prometheus'
    metrics_path: '/actuator/prometheus'
    # scheme defaults to 'http'.
    basic_auth:
      username: 'admin'
      password_file: './config/basic-auth-password'
    file_sd_configs:
    - files: ['/usr/local/prometheus/prometheus-2.16.0.linux-amd64/config/*.yml']
      refresh_interval: 5s

# 示例: 在 prometheus.yml 中可以添加针对 Spring Boot 应用 的监控 job

- job_name: 'actuator-demo'
    metrics_path: '/prometheus'
    static_configs:
    - targets: ['172.16.2.204:8080']

1.2 启动prometheus

# 默认
docker run  -d \
--name prometheus  \
--hostname prom \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml  \
-v /opt/prometheus/server/rules.yml:/etc/prometheus/rules.yml \
prom/prometheus

# 其它参数(非必选)
--config.file=/etc/prometheus/prometheus.yml \
--web.enable-lifecycle

#=====================================================#
# docker部署
docker run -d \
--name=prometheus \
-p 9090:9090 \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml

#=====================================================#
# docker部署(保存监控数据)
docker run -d \
--name=prometheus \
-p 9090:9090 \
-u $(id -u):$(id -g) \
-v /opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/data:/prometheus \
prom/prometheus --config.file=/etc/prometheus/prometheus.yml

启动时加上--web.enable-lifecycle启用远程热加载配置文件
调用指令是curl -X POST http://localhost:9090/-/reload 

访问http://{宿主机ip}:9090,看到如下界面

访问 Prometheus UI http://{宿主机ip}:9090 ,查看 targets ,可以看到 job 处于 UP 状态,说明配置成功了。

访问http://10.211.55.25:9090/metrics

我们配置了9090端口,默认prometheus会抓取自己的/metrics接口
在Graph选项已经可以看到监控的数据


二. Grafana安装

本文使用Docker方式安装,其他方式安装请详见 Grafana安装说明 。

官方网站

2.1 新建目录

mkdir /opt/grafana-storage

# 设置权限
chmod 777 -R /opt/grafana-storage

2.2 启动grafana 

docker run -d \
  -p 3000:3000 \
  --name=grafana \
  -v /opt/grafana-storage:/var/lib/grafana \
  grafana/grafana

2.3 配置

  • 登录:访问 http://localhost:3000/login ,初始账号/密码为:admin/admin ,登录后,即可看到类似如下的界面

    Grafana-1

  • 点击Add data source ,即可看到类似如下的界面:

    Grafana-2

  • 点击Prometheus,即可看到类似如下界面:

    Grafana-3

导入prometheus的模板

打开左上角选择已经导入的模板会看到已经有各种图



我们来添加一个自己的图表



指定自己想看的指标和关键字,右上角保存

看到如下数据
访问url: 






http://192.168.91.132:3000/

Grafana UI http://172.16.2.101:3000,通过Grafana的 + 图标导入(Import) JVM (Micrometer) dashboard:

  • grafana id = 4701
  • 注意选中prometheus数据源

查看JVM (Micormeter) dashboard:

 可以看到应用的 JVM 的 堆栈、 线程、 IO 等等信息。

2.4 创建监控Dashboard

  • 点击导航栏上的 + 按钮,并点击Dashboard,将会看到类似如下的界面:Grafana-4

  • 点击 Add Query ,即可看到类似如下的界面: Grafana-5

    在白框标记的位置输入指标,指标的取值详见Spring Boot应用的 /actuator/prometheus 端点,例如jvm_memory_used_bytes 、jvm_threads_states_threadsjvm_threads_live_threads 等,Grafana会给你较好的提示,并且支持较为复杂的计算,例如聚合、求和、平均等。如果想要绘制多个线条,可点击Add Query 按钮,如上图所示,笔者为图表绘制了两条线,分别代表daemon以及peak线程。

  • 点击下图的按钮,并填入Title,即可设置图表标题。

    Grafana-6

  • 按下图步骤操作,即可为Dashboard添加新的图表。
    在这里插入图片描述

2.5 Dashboard市场

至此,已可用Grafana实现较为丰富的图表展示——可将关心的监控指标放置到Dashboard上,并且非常灵活!然而,这个配置的操作虽然不难,但还是挺费时间的……

那么是否有配置好的又强大、又通用、拿来即用的Dashboard呢?答案是肯定的!前往 Grafana Lab - Dashboards ,输入关键词即可搜索指定Dashboard。
在这里插入图片描述

如上图所示,可以找到若干款以 Prometheus 作为数据源,支持Micrometer的Dashboard!下面,来演示如何使用 JVM(Micrometer) 这个Dashboard。

其他Dashboard使用方式大同小异,建议使用前先点击了解下详情,一般Dashboard中都会有说明。

  • 点击 JVM(Micrometer) 进入Dashboard详情介绍页,如下图所示:
    在这里插入图片描述

    如图已详细描述了该Dashboard的特性、配置。其中的management.metrics.tags.application,前面已经配置过了;本例也不打算演示 Process memory 特性,所以 micrometer-jvm-extras怎么用也不打算引入了(这是该Dashboard作者为Micrometer提供的增强包,有兴趣的童鞋可自行点击过去研究)。

    细心的童鞋会发现,该页的右上角有个 4701 这是一个非常重要的数字!

  • 访问http://localhost:3000 ,按下图步骤操作:

    Grafana-10

  • 输入后即可看到类似如下的界面,选择数据源,并点击Import。

    Grafana-11

  • 此时,即可看到类似如下的界面,如图所示,我们常关心的指标该Dashboard均已支持! Grafana-12

2.6 比较好用的Dashboard

以上三款是笔者亲测较为全面、好用的Dashboard,仅供参考。

告警

Grafana支持的告警渠道非常丰富,例如邮件、钉钉、Slack、Webhook等,非常实用!比较简单,各位看官自行研究下吧。

配套代码

其中 prometheus+grafana 目录已提供Docker一键部署Prometheus + Grafana的Shell。

原文出处:http://itmuch.com/spring-boot/actuator-prometheus-grafana/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!