• Prometheus+grafana 安装指南


    Prometheus+grafana性能监控平台

    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来展示各项指标。而其给我们返回的内容如下图所示:

    工作原理

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

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

    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,如下图所示:

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

    以上是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,如下:

    登录进去首页如下:

    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模板

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

    导入成功页面:

  • 相关阅读:
    tcp传送报文
    整理下本周工作中遇到的疑问;uid/euid/suid;docker镜像管理
    网络隔离
    ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力 )
    ubuntu 只有客人会话登录(第一次深刻感受文件权限的威力)
    使用gdb查看栈帧的情况,有ebp
    使用gdb查看栈帧的情况, 没有ebp
    再看perf是如何通过dwarf处理栈帧的
    dwarf是如何处理栈帧的?
    数据库设计的误区—>CHAR与VARCHAR
  • 原文地址:https://www.cnblogs.com/crstyl/p/15919829.html
Copyright © 2020-2023  润新知