go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控
0、转载
go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控
0.1源码地址
https://github.com/liuyuede123/go-zero-courseware
1、什么是prometheus
Prometheus是一个开源的系统监控和警报工具包。自2012年启动以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus于2016年加入云原生计算基金会,成为继Kubernetes之后的第二个托管项目。
特性:
- 一个多维数据模型,包含由指标名称和键/值对(Tag)标识的时间序列数据
- PromQL是一种灵活的查询语音,用于查询并利用这些维度数据
- 不依赖分布式存储,单个服务器节点是自治的
- 时间序列收集是通过HTTP上的pull模型进行的(支持Pull)
- 推送时间序列是通过一个中间网关来支持的(也支持Push)
- 目标是通过服务发现或静态配置发现的
- 多种模式的图形和仪表盘支持
2、什么是grafana
grafana是用于可视化大型测量数据的开源程序,他提供了强大和优雅的方式去创建、共享、浏览数据。dashboard中显示了你不同metric数据源中的数据。
Grafana是一个开源的,拥有丰富dashboard和图表编辑的指标分析平台,和Kibana不同的是Grafana专注于时序类图表分析,而且支持多种数据源,如Prometheus、Graphite、InfluxDB、Elasticsearch、Mysql、K8s、Zabbix等。
3、prometheus部署
根目录下增加prometheus的Dockerfile
FROM bitnami/prometheus:latest
LABEL maintainer="liuyuede123 <liufutianoppo@163.com>"
增加prometheus配置
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
- job_name: 'file_ds'
file_sd_configs:
- files:
- targets.json
[
{
"targets": ["user-api:9081"],
"labels": {
"job": "user-api",
"app": "user-api",
"env": "test",
"instance": "user-api:8300"
}
},
{
"targets": ["user-rpc:9091"],
"labels": {
"job": "user-rpc",
"app": "user-rpc",
"env": "test",
"instance": "user-api:9300"
}
},
{
"targets": ["courseware-api:9082"],
"labels": {
"job": "courseware-api",
"app": "courseware-api",
"env": "test",
"instance": "courseware-api:8400"
}
},
{
"targets": ["courseware-rpc:9092"],
"labels": {
"job": "courseware-rpc",
"app": "courseware-rpc",
"env": "test",
"instance": "courseware-rpc:9400"
}
}
]
文件结构如下
prometheus
├── Dockerfile
├── prometheus.yml
└── target.json
docker-compose中增加prometheus配置,默认9090端口
...
prometheus:
build:
context: ./prometheus
environment:
- TZ=Asia/Shanghai
privileged: true
volumes:
- ./prometheus/prometheus.yml:/opt/bitnami/prometheus/conf/prometheus.yml # 将 prometheus 配置文件挂载到容器里
- ./prometheus/target.json:/opt/bitnami/prometheus/conf/targets.json # 将 prometheus 配置文件挂载到容器里
ports:
- "9090:9090" # 设置容器9090端口映射指定宿主机端口,用于宿主机访问可视化web
networks:
- backend
restart: always
user-api配置中增加
...
Prometheus:
Host: 0.0.0.0
Port: 9081
Path: /metrics
user-rpc配置中增加
...
Prometheus:
Host: 0.0.0.0
Port: 9091
Path: /metrics
courseware-api配置中增加
...
Prometheus:
Host: 0.0.0.0
Port: 9082
Path: /metrics
courseware-rpc配置中增加
Prometheus:
Host: 0.0.0.0
Port: 9092
Path: /metrics
删除容器和镜像重新生成构建容器docker-compose up -d --build
浏览器中访问http://localhost:9090/到prometheus后台查看是否生效
访问http://localhost:9090/targets?search=可以看到,4个服务的metrics都进来了

请求用户详情接口,然后访问下http://localhost:9090/graph,搜索栏中输入{app="user-api"},会看到

4、部署grafana
新建grafana文件夹,并创建Dockerfile
FROM grafana/grafana:latest
LABEL maintainer="liuyuede123 <liufutianoppo@163.com>"
docker-compose中新增grafana服务
...
grafana:
build:
context: ./grafana
environment:
- TZ=Asia/Shanghai
privileged: true
ports:
- "3000:3000"
networks:
- backend
restart: always
删除容器和镜像重新生成构建容器docker-compose up -d --build
访问http://localhost:3000/,默认账号admin,密码admin
点击设置新增数据源


新增看板


数据源选择prometheus统计user-api qps然后点击保存


go-zero docker-compose 搭建课件服务(七):prometheus+grafana服务监控的更多相关文章
- Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh
本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...
- 利用 Docker Compose 搭建 SpringBoot 运行环境(超详细步骤和分析)
0.前言 相信点进来看这篇文章的同学们已经对 Docker Dompose 有一定的了解了,下面,我们拿最简单的例子来介绍如何使用 Docker Compose 来管理项目. 本文例子: 一个应用服务 ...
- 使用Docker Compose搭建Service Mesh
使用Docker Compose搭建Service Mesh 本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于 ...
- Docker Compose 搭建 Redis Cluster 集群环境
在前文<Docker 搭建 Redis Cluster 集群环境>中我已经教过大家如何搭建了,本文使用 Docker Compose 再带大家搭建一遍,其目的主要是为了让大家感受 Dock ...
- Spring Boot 微服务应用集成Prometheus + Grafana 实现监控告警
Spring Boot 微服务应用集成Prometheus + Grafana 实现监控告警 一.添加依赖 1.1 Actuator 的 /prometheus端点 二.Prometheus 配置 部 ...
- Docker Compose搭建Redis一主二从三哨兵高可用集群
一.Docker Compose介绍 https://docs.docker.com/compose/ Docker官方的网站是这样介绍Docker Compose的: Compose是用于定义和运行 ...
- docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...
- docker快速搭建几个常用的第三方服务
本次和大家分享的内容是使用docker快速搭建工作中常用的第三方的服务,对于有一些互联网背景的公司来说,以下几个服务都是很需要的:redis,rabbit,elasticsearch: 本篇涉及内容深 ...
- 基于Centos7.4搭建prometheus+grafana+altertManger监控Spring Boot微服务(docker版)
目的:给我们项目的微服务应用都加上监控告警.在这之前你需要将 Spring Boot Actuator引入 本章主要介绍 如何集成监控告警系统Prometheus 和图形化界面Grafana 如何自定 ...
随机推荐
- JavaWeb过滤器Filter(附tomcat部分源码分析)
过滤器Filter 过滤器通常对一些web资源进行拦截,做完一些处理器再交给下一个过滤器处理,直到所有的过滤器处理器,再调用servlet实例的service方法进行处理.过滤器可以对request进 ...
- Jenkins使用pipeline部署服务到远程服务器
写这篇文章是对之前搭建Jenkins做的修改和完善,让jenkins更好的为我们服务 Docker搭建Jenkins服务 使用过程中遇到的问题: 为方便部署,打算将jenkins用到的jdk11.ma ...
- Servlet特性研究之异步模式
Servlet只有同步模型是怎样的? 异步处理是Servlet3.0版本的重要功能之一,分析异步处理模型之前,先看看同步处理的过程是怎样的: 客户端发起HTTP请求一个动态Servlet API,请求 ...
- 老梗新玩「GitHub 热点速览 v.22.34」
作者:HelloGitHub-小鱼干 不知道你是否和我有一样的烦恼,最近的流行梗当自己要用拿来造词时,就陷入了不知道咋"换壳"的尴尬地步.sao-gen-gen 大大减少了你老梗新 ...
- [CF1498D] Bananas in a Microwave (DP)
题面&翻译 题解 虽然 m m m 很大,但是 n n n 很小,因此题目允许我们在 O ( n m ) O(nm) O(nm) 以内解决这道题. 定义一个 dp[i][j]=0/1 ? 如果 ...
- 第三十三篇:关于ES6,JSON和Webpack
好家伙 1.什么是ES6? ECMAScript是javascript标准 ES6就是ECMAScript的第6个版本 (大概是一个语法标准规范) 2.什么是JSON? JSON 是什么,在数据交换中 ...
- 使用django_registration框架实现用户的注册与激活
1.前言 本节内容是在以下环境中实现的. python version: 3.7 Django version: 3.1.1 Django-registration version: 3.1.1 如版 ...
- 通过 Docker 部署 Mysql 8.0 主从模式
文章转载自:http://www.mydlq.club/article/106/ 系统环境: Mysql 版本:8.0.23 Docker 版本:19.03.13 一.为什么需要 Mysql 主从复制 ...
- ingress-nginx自带认证功能【nginx自带】
问题:通过nginx可以给某些web网站设置登录使用的用户名和密码,现在网站部署到k8s中,通过配置nginx-ingress->service->pod来访问的,怎么给这个网站再配置上访 ...
- jenkins邮箱配置