前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云+社区年度征文】GPE监控介绍与使用

【云+社区年度征文】GPE监控介绍与使用

原创
作者头像
似水的流年
修改2020-12-17 10:36:54
1.3K0
修改2020-12-17 10:36:54
举报
文章被收录于专栏:电光石火

一、介绍

ELK主要收集分析预警的是我们平台系统中各个服务的业务日志,一般通过日志组件(log4j 、log4j2 、logback)来收集并写入文本。但是对于系统本身以及一些应用软件的监控预警,这套方案显然是不合适的,这里推荐一下GPE三剑客;基本上主流的中间件和应用都能监控,并且大多数都是代码无入侵的。 Grafana、Prometheus、Exporter(一系列插件)为了使得整合监控程序更加流畅完整,我们加入了注册中心做服务发现,实现动态添加服务,使用邮件、钉钉以及webhook实现异常告警。

  • Prometheus:是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上。
  • Grafana:是一个开箱即用的可视化工具,具有功能齐全的度量仪表盘和图形编辑器,有灵活丰富的图形化选项,可以混合多种风格,支持多个数据源特点。
  • Exporter:是一系列的插件和外部进程,支持黑盒获取metrics(代码无入侵)

工作流程: Exporter组件获取服务器或者系统软件的metrics

Prometheus拉取Exporter的metrics到本地存储

Grafana配置Prometheus数据源获取其采集数据结合自定义面板实现监控大屏

Grafana通过设置Alerting实现监控预警

  • Prometheus(普罗米修斯)是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。 Prometheus目前在开源社区相当活跃。 Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。
  • 与其他监控系统相比,Prometheus的主要特点是:
    • 多维度数据模型。
    • 灵活的查询语言。
    • 不依赖分布式存储,单个服务器节点是自主的。
    • 通过基于HTTP的pull方式采集时序数据。
    • 可以通过中间网关进行时序列数据推送。
    • 通过服务发现或者静态配置来发现目标服务对象。
    • 支持多种多样的图表和界面展示,比如Grafana等。

二、Prometheus架构

  • 它的服务过程是这样的Prometheus daemon负责定时去目标上抓取metrics(指标) 数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。
  • Prometheus:支持通过配置文件、文本文件、zookeeper、Consul、DNS SRV lookup等方式指定抓取目标。支持很多方式的图表可视化,例如十分精美的Grafana,自带的Promdash,以及自身提供的模版引擎等等,还提供HTTP API的查询方式,自定义所需要的输出。
  • Alertmanager:是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。
  • PushGateway:这个组件是支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
  • 大多数Prometheus组件都是用Go编写的,它们可以轻松地构建和部署为静态二进制文件。访问prometheus.io以获取完整的文档,示例和指南。

三、基本原理

Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

四、服务过程

  • Prometheus Daemon负责定时去目标上抓取metrics(指标)数据,每个抓取目标需要暴露一个http服务的接口给它定时抓取。Prometheus支持通过配置文件、文本文件、Zookeeper、Consul、DNS SRV Lookup等方式指定抓取目标。Prometheus采用PULL的方式进行监控,即服务器可以直接通过目标PULL数据或者间接地通过中间网关来Push数据。
  • Prometheus在本地存储抓取的所有数据,并通过一定规则进行清理和整理数据,并把得到的结果存储到新的时间序列中。
  • Prometheus通过PromQL和其他API可视化地展示收集的数据。Prometheus支持很多方式的图表可视化,例如Grafana、自带的Promdash以及自身提供的模版引擎等等。Prometheus还提供HTTP API的查询方式,自定义所需要的输出。
  • PushGateway支持Client主动推送metrics到PushGateway,而Prometheus只是定时去Gateway上抓取数据。
  • Alertmanager是独立于Prometheus的一个组件,可以支持Prometheus的查询语句,提供十分灵活的报警方式。

五、服务安装

5.1 安装prometheus

5.1.1 下载及上传prometheus安装包 下载当前最新prometheus的2.23.0版本,地址:https://prometheus.io/download/ 解压

代码语言:javascript
复制
tar -zxvf prometheus-2.23.0.linux-amd64.tar.gz

5.1.2 修改配置文件

代码语言:javascript
复制
vi /gpe/prometheus-2.23.0.linux-amd64/prometheus.yml
代码语言:javascript
复制
scrape_configs:
  - job_name: 'prometheus'
    static_configs:
    - targets: ['localhost:9090']
      labels:
        instance: prometheus

5.1.3 启动

代码语言:javascript
复制
cd prometheus-2.23.0.linux-amd64
nohup ./prometheus --config.file=prometheus.yml >/dev/null &

5.1.4 验证 可以通过http://ip:9090访问浏览器,或者http://ip:9090/metrics看是否能提供关于自身的各项指标

5.2 安装grafana

5.2.1 下载及上传grafana安装包 下载当前最新grafana的7.3.4版本,地址:https://grafana.com/grafana/download 解压

代码语言:javascript
复制
tar -zxvf grafana-7.3.4.linux-amd64.tar.gz

5.2.2 启动

代码语言:javascript
复制
cd grafana-7.3.4
nohup ./bin/grafana-server web >/dev/null &

5.2.3 验证 访问浏览器http://ip:3000, 默认的账号密码为: admin / admin,登录后会要求修改密码

5.3 进入系统

第一次登录系统会要求输入新的密码,之后添加数据源Prometheus

六、Spring Cloud微服务监控

6.1. 引入jar包

代码语言:javascript
复制
compile group: 'io.micrometer', name: 'micrometer-registry-prometheus'  
compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'

6.2. 修改yml配置文件

代码语言:javascript
复制
# spring-boot-actuator配置
management:
  server:
    # 区分开来actuator端口安全
    port: 12345
    servlet:
      #请求前缀
      context-path: /
  endpoints:
    web:
      exposure:
        include: '*'
    health:
      #关闭过滤敏感信息
      sensitive: false
  endpoint:
    shutdown:
      #是否启用 shutdown 端点
      enabled: true
    health:
      #何时显示完整的健康详情
      show-details: ALWAYS
    logfile:
      #是否启用 logfile 端点
      enabled: true
    metrics:
      #是否启用metrics端点
      enabled: true
    prometheus:
      #是否启用 prometheus 端点
      enabled: true
  metrics:
    export:
      prometheus:
        # 是否启用向prometheus导出
        enabled: true
    distribution:
      percentiles-histogram:
        http:
          server:
            # 开启Micormeter
            requests: true
      sla:
        http:
          server:
            # Micormeter bucket指标配置,千分尺分段记录
            requests: 100ms,200ms,400ms
      percentiles:
        http:
          server:
            # Micormeter quantile指标配置
            requests: 0.5,0.9,0.95,0.99,0.999
    tags:
      application: ${spring.application.name}

通过file_sd_configs进行服务发现的配置,每次json文件的内容发生变更,Prometheus会自动刷新target列表 保存到/docker/prometheus/conf/file_sd_configs目录下

注意路径,如果没有在prometheus中发现http://172.16.90.33:9090/targets有对应的job_name,可以查看log日志查询是否是找不到路径

6.3. 配置服务的json文件

代码语言:javascript
复制
[
  {
    "targets": [
      "192.168.20.89:9000"
    ],
    "labels": {
      "job":"spring-cloud-service",
      "env":"test",
      "application":"spring-cloud-service-test",
      "instance":"192.168.20.89:9000"
    }
  },
  {
    "targets": [
      "192.168.20.89:9001"
    ],
    "labels": {
      "job":"spring-cloud-service",
      "env":"test",
      "application":"spring-cloud-service-test1",
      "instance":"192.168.20.89:9001"
    }
  }
]

6.4. 修改prometheus的配置

代码语言:javascript
复制
- job_name: spring-cloud-service
    metrics_path: "/actuator/prometheus"
    file_sd_configs:
      - files:
        - file_sd_configs/springcloud/*.json
        refresh_interval: 10s

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、介绍
  • 二、Prometheus架构
  • 三、基本原理
  • 四、服务过程
  • 五、服务安装
    • 5.1 安装prometheus
      • 5.2 安装grafana
        • 5.3 进入系统
        • 六、Spring Cloud微服务监控
          • 6.1. 引入jar包
            • 6.2. 修改yml配置文件
              • 6.3. 配置服务的json文件
                • 6.4. 修改prometheus的配置
                相关产品与服务
                Prometheus 监控服务
                Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档