热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

搭建Grafana+Prometheus监控平台

1.获取基本性能数据1.1部署InfluxDB-官网-http:github.cominfluxdatainfluxdb-InfluxDB是一个Go语言开发的开源分布式时序

1. 获取基本性能数据


1.1 部署InfluxDB

- 官网
- http://github.com/influxdata/influxdb
- InfluxDB是一个Go语言开发的开源分布式时序数据库
- 新建容器网络
- docker network create grafana
- 查看容器网络
- docker network ls
- 运行容器:
- docker run -d --name=influxdb --network grafana -p 8086:8086 influxdb:1.7.10
- 创建数据库
- docker exec -it influxdb influx
- 创建表 jmeter
- create database jmeter;
- 查看创建的表
- show database;
- 其他
- 查看influxdb的ip地址
- docker exec -it influxdb sh
- cat /etc/hosts
- 配置完成后,如下图




1.2 部署Grafana

- Github地址
- http://github.com/grafana/grafana
- Dockerhub地址
- http://hub.docker.com/r/grafana/grafana
- 运行容器
- docker run -d --name grafana --network grafana -p 3000:3000 grafana/grafana:6.6.2
- 访问:http:ip:3000
- 默认登录账号和密码:admin/admin
- 部署完成后,如下图




1.3 Grafana配置数据源

- 配置信息
- URL: http://influxdb:8086 #influxdb的访问地址
- Database:jmeter #创建的表
- Min time interval:5 #提取时间,刷新时间;因为jmeter默认写到influxdb的时间是5s,为了同步,所以grafana读取influxdb需要设置是5s
- 配置
- 访问Grafana,点击Configuration,点击Data Sources,点击InfluxDB,详细配置附图,配置完成,点击save & Test


1.4 Grafana导入Dashboards

- Grafana网站中寻找面板
- http://grafana.com/grafana/dashboards/5496
- 配置
- Dashboards - manage - import - input框中搜索上面的面板地址 - 点击load
- 其他
- Measurement name 代表的就是表名,需要与jmeter配置中后端监听器的Measurement同名


1.5 配置Jmeter

# 前言
# influxdb 和 grafana是可以放在服务器里面的,有公网ip,如果没有公网ip就放在一个局域网下面,并且jmeter需要可以访问influxdb,如果是公网,jmeter可以访问jnfluxdb的公网ip,可以写入数据才可以
- 配置附图,以上配置完成




2. 获取服务器性能指标


2.1 配置Prometheus

- 关于Prometheus
- Prometheus是一款开源系统监控和警报工具,使用Go语言开发,有各种exporter用来收集服务器性能数据;
- 配置文件
- https://github.com/prometheus/prometheus/blob/main/documentation/examples/prometheus.yml
- 其他
- 运行容器前,需要将prometheus.yml文件文放到运行目录下
- 运行容器
- docker run -d --name prometheus --network grafana -p 9090:9090 -v $PWD/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus:v2.16.0 --config.file=/etc/prometheus/prometheus.yml
- 结果如下图
- 访问:prometheus
- http://localhost:9090/graph
- 点击Status - Targets

2.1.1 prometheus.yml

# 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=` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]




2.2 主机监控配置(node_exporter)

- 需要在被监控的服务器上下载node_exporter
- 运行容器
- 方式1
- docker run -d --name node-exporter -p 40009:9100 prom/node-exporter
- 其他
- node-exporter的默认端口是9100,目前是将9100进行了映射,映射为40009端口上;也就是本机开放对外的端口要写前面,后面是容器里面的端口。
- 方式2
- 访问:http://github.com/prometheus/node_exporter/releases
- 查找合适版本:如果是mac,下载node_exporter-1.3.1.darwin-amd64.tar.gz 包;如果是linux_64位,下载node_exporter-1.3.1.linux-amd64.tar.gz 包
- 在目录下解压后,进入存在node_exporter的二进制文件的目录下
- 运行
- nohub ./node_exporter &
- nohub ./node_exporter --web.listen-address=":9100" &
- 被测服务访问node_exporter
- http://ip:9100
- 可见服务参加;如下图1
- 其他
- 如果9100端口被占用,可以进行更改
- ./node_exporter --web.listen-address=":9100"
- 查看帮助文档
- ./node_exporter --help


2.3 修改prometheus.yml配置

# 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=` to any timeseries scraped from this config.
- job_name: "prometheus"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9090"]
- job_name: "Linux ip" # 名字可自定义
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["被测服务器ip:40009"] #40009为被测服务映射出来的端口

2.4 在Grafana中配置prometheus,收集服务器的数据

- 重启prometheus
- docker restart prometheus
- 访问prometheus,可见下图1
- 访问Grafana:http:ip:3000
- 配置
- 下图2




2.5 在Grafana中配置dashboards

- Grafana网站中寻找面板
- http://grafana.com/grafana/dashboards/8919
- 配置
- Dashboards - manage - import - input框中搜索上面的面板地址 - 点击load
- 如下图





推荐阅读
  • Prometheus 2.5 + Grafana 5.3 使用官方模板监控
    系统环境:Centos7.2+ Prometheus2.5+Grafana5.3 Grafana安装参考:Grafana安装Prometheus+Grafana 安装参考:Grap ... [详细]
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 理解浏览器历史记录(2)hashchange、pushState
    阅读目录1.hashchange2.pushState本文也是一篇基础文章。继上文之后,本打算去研究pushState,偶然在一些信息中发现了锚点变 ... [详细]
  • 精选10款Python框架助力并行与分布式机器学习
    随着神经网络模型的不断深化和复杂化,训练这些模型变得愈发具有挑战性,不仅需要处理大量的权重,还必须克服内存限制等问题。本文将介绍10款优秀的Python框架,帮助开发者高效地实现分布式和并行化的深度学习模型训练。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 深入解析WebP图片格式及其应用
    随着互联网技术的发展,无论是PC端还是移动端,图片数据流量占据了很大比重。尤其在高分辨率屏幕普及的背景下,如何在保证图片质量的同时减少文件大小,成为了亟待解决的问题。本文将详细介绍Google推出的WebP图片格式,探讨其在实际项目中的应用及优化策略。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • k8s(十一)helm安装premetheus
    1prometheus基础知识1.1prometheus简介Prometheus是一套开源的系统监控报警框架。和Kubernetes类似,它也发源于Google的Borg体系,其原 ... [详细]
  • 一、Advice执行顺序二、Advice在同一个Aspect中三、Advice在不同的Aspect中一、Advice执行顺序如果多个Advice和同一个JointPoint连接& ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 华为与红帽联手,加速开源电信软件革新
    华为与红帽携手合作,旨在加速开源电信软件的发展,以满足大型电信运营商对灵活网络解决方案的需求。 ... [详细]
  • 本文深入探讨了Go语言中的接口型函数,通过实例分析其灵活性和强大功能,帮助开发者更好地理解和运用这一特性。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 本文介绍了一个使用Slideview组件实现循环轮播效果的例子,并将其作为ListView顶部的一项。此ListView包含了两种不同的模板设计,一种以Slideview为核心,另一种则是标准的单元格模板,包含按钮和标签。 ... [详细]
author-avatar
水源水足
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有