Prometheus+grafana性能监控平台


文章目录

  • Prometheus+grafana性能监控平台
  • 1. 监控系统组成
  • Grafana
  • Prometheus
  • 数据源
  • 工作原理
  • 2 .安装 Prometheus
  • 3 . Grafana 部署
  • 4.监控Linux服务器性能指标


1. 监控系统组成

Grafana

是一个监控仪表系统,由Grafana Labs公司开源的的一个系统监测 (System Monitoring) 工具。帮助用户简化监控的复杂度,用户只需要提供需要监控的数据,它就可以生成各种可视化仪表。同时它还支持报警功能,可以在系统出现问题时通知用户。并且Grafana不仅仅只支持Prometheus作为查询的数据库,它还支持如下:

Prometheus
Graphite
OpenTSDB
InfluxDB
MySQL/PostgreSQL
Microsoft SQL Serve
等等

Prometheus

Prometheus是一个时间序列数据库。但是,它不仅仅是一个时间序列数据库。它涵盖了可以绑定的整个生态系统工具集及其功能。Prometheus主要用于对基础设施的监控,包括服务器(CPU、MEM等)、数据库(MYSQL、PostgreSQL等)、Web服务等,几乎所有东西都可以通过Prometheus进行监控。而它的数据,则是通过配置,建立与数据源的联系来获取的。

虽然Grafana可以从多种数据(如Prometheus、MySQL/PostgreSQL、OpenTSDB)等等中获取数据,不过Prometheus天生就是为了监控而生,所以我们用的最多的还是Prometheus。这也是我们的标配哦~

数据源

在Prometheus的架构设计中,Prometheus并不直接服务监控特定的目标,就比如我们监控linux系统,Prometheus不会自己亲自去监控linux的各项指标。其主要任务负责数据的收集,存储并且对外提供数据查询支持。

因此为了能够监控到某些东西,如主机的CPU使用率,我们需要使用到Exporter。Exporter是一个相对开放的概念,不是专门指某一个程序。它可以是一个独立运行的程序,独立于监控目标以外(如Node Exporter程序,独立于操作系统,却能获取到系统各类指标)。也可以是直接内置在监控目标中的代码(如在项目代码层面接入普罗米修斯API,实现指标上报)。总结下来就是,只要能够向Prometheus提供标准格式的监控样本数据,那就是一个Exporter。

而Prometheus周期性的从Exporter暴露的HTTP服务地址(通常是/metrics)拉取监控样本数据。

对于大家常见的监控主机运行的指标如CPU, 内存,磁盘等信息,我们可以为linux系统下载Node Exporter程序,该程序会监控linux各项指标,并通过:http://:9100/metrics来展示各项指标。而其给我们返回的内容如下图所示:

grafana kibana数据 grafana支持的数据库_数据库

工作原理

现在我们有了以下3个部分:

Exporter 监控工具,获取数据
Prometheus 普罗米修斯时序数据库,用来存储和查询你的监控数据
Grafana 仪表盘

grafana kibana数据 grafana支持的数据库_数据_02

2 .安装 Prometheus

我们借助docker来安装,新建目录docker-monitor,在里面创建文件docker-compose.yml,内容如下:

version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: 'prometheus'
    volumes:
    - ./prometheus/:/etc/prometheus/    #映射prometheus的配置文件
    - /etc/localtime:/etc/localtime:ro  #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
    ports:
    - '9090:9090'

监控web应用性能指标

在docker-monitor目录下新增prometheus目录,在里面创建prometheus配置文件prometheus.yml,内容如下:

global:  #全局配置
  scrape_interval:   15s  #全局定时任务抓取性能数据间隔

scrape_configs:  #抓取性能数据任务配置
- job_name: 'prometheus'  #抓取prometheus自身性能指标数据任务
  scrape_interval: 5s
  static_configs:
  - targets: ['localhost:9090']

在docker-monitor目录下执行如下命令启动prometheus

docker-compose up -d

docker compose安装

docker compose安装步骤

sudo curl -L
"https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname
-s)-$(uname -m)" -o /usr/local/bin/docker-compose

sudo chmod +x /usr/local/bin/docker-compose

docker-compose --version

在浏览器访问prometheus:http://192.168.182.100:9090,如下图所示:

grafana kibana数据 grafana支持的数据库_数据_03

点击Status下拉,选中Targets,界面如下:

grafana kibana数据 grafana支持的数据库_database_04

以上是prometheus自带的指标查询界面,但是太简陋,一般我们都是使用grafana图形展示工具配合prometheus一起使用

3 . Grafana 部署

(1)先用docker来安装下grafana,在上面的docker-compose.yml文件里加入grafana的安装配置,如下所示:

version: "3"
services:
  prometheus:
    image: prom/prometheus:v2.4.3
    container_name: 'prometheus'
    volumes:
    - ./prometheus/:/etc/prometheus/    #映射prometheus的配置文件
    - /etc/localtime:/etc/localtime:ro  #同步容器与宿主机的时间,这个非常重要,如果时间不一致,会导致prometheus抓不到数据
    ports:
    - '9090:9090'

  grafana:  
    image: grafana/grafana:7.4.3
    container_name: 'grafana'
    ports:  
    - '3000:3000'
    volumes: 
    - ./grafana/config/grafana.ini:/etc/grafana/grafana.ini  #grafana报警邮件配置
    - ./grafana/provisioning/:/etc/grafana/provisioning/  #配置grafana的prometheus数据源
    - /etc/localtime:/etc/localtime:ro
    env_file:
    - ./grafana/config.monitoring  #grafana登录配置
    depends_on:
    - prometheus  #grafana需要在prometheus之后启动

(2)在docker-monitor目录下新增grafana目录,在里面创建文件config.monitoring,内容如下:

GF_SECURITY_ADMIN_PASSWORD=admin  #grafana管理界面的登录用户密码,用户名是admin
GF_USERS_ALLOW_SIGN_UP=false  #grafana管理界面是否允许注册,默认不允许

(3)在grafana目录下创建目录provisioning,在里面创建datasources目录,在datasources目录里新建文件datasource.yml,内容如下:

# config file version
apiVersion: 1

deleteDatasources:  #如果之前存在name为Prometheus,orgId为1的数据源先删除
- name: Prometheus
  orgId: 1

datasources:  #配置Prometheus的数据源
- name: Prometheus
  type: prometheus
  access: proxy
  orgId: 1
  url: http://prometheus:9090  #在相同的docker compose下,可以直接用prometheus服务名直接访问
  basicAuth: false
  isDefault: true
  version: 1
  editable: true

(4)在grafana目录下创建目录config,在里面创建文件grafana.ini,内容如下:

#################################### SMTP / Emailing ##########################
# 配置邮件服务器
[smtp]
enabled = true
# 发件服务器
host = smtp.qq.com:465
# smtp账号
user = 896096254@qq.com
# smtp 授权码,参考网易邮箱获取授权码
password = patuodowqfzlbfch
# 发信邮箱
from_address = 896096254@qq.com
# 发信人
from_name = zirui

(5)用docker
compose启动grafana,访问grafana页面http://192.168.182.100:3000,用户名为admin,密码为admin,如下:

grafana kibana数据 grafana支持的数据库_database_05

登录进去首页如下:

grafana kibana数据 grafana支持的数据库_database_06

4.监控Linux服务器性能指标

(1)下载linux监控的exporter镜像

docker pull prom/node-exporter

(2)启动监控的数据库连接,容器创建的时候需要指定

docker run -d -p 9100:9100 prom/node-exporter

(3)在prometheus.yml文件末尾追加如下配置:

- job_name: 'linux'
  scrape_interval: 10s
  static_configs:
    - targets: ['192.168.182.100:9100']
      labels:
        instance: linux-1

4、重新启动Prometheus镜像,查看Prometheus是否启动完成,访问:http://服务器ip:9090

docker-compose up --force-recreate -d

5、在Grafana中导入Prometheus模板

grafana kibana数据 grafana支持的数据库_数据_07

这里给了大家两个dashboard模板ID
11074是英文的,8919是中文的,这都是官方的id

grafana kibana数据 grafana支持的数据库_数据库_08

grafana kibana数据 grafana支持的数据库_数据库_09

导入成功页面:

grafana kibana数据 grafana支持的数据库_grafana kibana数据_10