美文网首页API网关Kong实践笔记
Kong[nginx]-13 使用prometheus,graf

Kong[nginx]-13 使用prometheus,graf

作者: 国服最坑开发 | 来源:发表于2019-08-14 21:49 被阅读6次

    KONG专题目录


    引言

    在服务器监控领域, 我们以前使用过 zabbix + grafana 进行配置并使用.
    主要使用场景是监控多台服务器的硬件使用情况.(磁盘,CPU,内存,带宽等)

    今天登场的组合是 kong + prometheus + grafana,
    主要用途是监控kong代理的服务接口压力信息(使用频率,接口响应延时).
    另外相比 zabbix而言, 在配置方面要省时省力很多了(官方提供了相关插件)

    简单介绍一下, 三个角色的用途:

    • kong : 看到这里的读者, 都不需要解释了.
    • prometheus: 主要通过读取 http://host/metrics接口, 来收集相关服务的性能数据
    • grafana: 用于监控数据显示的WebUI, 低调奢华有内涵

    本文编排方式 :

    • 优先介绍prometheus, grafana的安装流程.
    • 然后介绍一下整合配置流程
      • kong-prometheus 插件配置,提供源头数据
      • 配置prometheus, 从kong读取数据
      • 配置grafana
        • 添加 database (读取 prometheus)
        • 添加 dashboard模版( 用于展示 prometheus的数据)

    0x01 Grafana安装

    采用yum方式安装

    先增加yum源信息:

    touch /etc/yum.repos.d/grafana.repo
    vim /etc/yum.repos.d/grafana.repo
    # 下面是grafana.repo文件内容
    [grafana]
    name=grafana
    baseurl=https://packages.grafana.com/oss/rpm
    repo_gpgcheck=1
    enabled=1
    gpgcheck=1
    gpgkey=https://packages.grafana.com/gpg.key
    sslverify=1
    sslcacert=/etc/pki/tls/certs/ca-bundle.crt
    

    后面就是一顿日常操作:

    # 安装文字/图片显示依赖
    yum install fontconfig
    yum install freetype*
    yum install urw-fonts
    # 安装Grafana
    yum install grafana
    # 启动服务
    systemctl start grafana-server
    # 开机自动启动
    systemctl enable grafana-server.service
    

    然后通过访问端口 3000,打开登录画面:

    grafana
    进入画面:http://localhost:3000 完成管理员设置.

    初始用户名密码为 admin/admin,第一次登录后, 会提示修改密码.


    0x02 Prometheus 安装

    Prometheus是用Go语言开发,从官网 下载打包文件后,
    解压后就可以直接使用了. (这个使用体验真心要夸一下 ^ ^

    prometheus
    cd /opt/
    # 下载
    wget https://github.com/prometheus/prometheus/releases/download/v2.11.1/prometheus-2.11.1.linux-amd64.tar.gz
    # 解压
    tar -zxf prometheus-2.11.1.linux-amd64.tar.gz
    # 创建软链接
    ln -s /opt/prometheus-2.11.1.linux-amd64 /opt/prometheus
    # 目录下已经包含一个配置文件: prometheus.yml
    # 进入目录 
    cd prometheus
    # 创建工作目录 data
    mkdir -p /opt/prometheus/data
    # 启动服务: 
    # 日志保留时间默认15天  --storage.tsdb.retention.time=15d
    nohup /opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data 2>&1 &
    
    start prometheus
    服务启动成功后, 就可以通过 9090端口进行访问了:
    prometheus-ui

    配置篇

    0x03 打开kong的metrics支持

    我们上面了解到, 要想让prometheus 来收集数据, 那么就要从这个服务上从/metrics 路由上取得数据.
    然后, 默认情况下, 这个路由是没经过配置, 显示是没有结果的.

    metrics

    于是乎, 我们来打开这个任督二脉:
    这里我们通过admin API, 添加 /metrics 支持

    # 
    curl -XPOST http://localhost:8001/services -d name=prometheusEndpoint -d url=http://localhost:8001/metrics
    curl -XPOST http://localhost:8001/services/prometheusEndpoint/routes -d paths[]=/metrics
    
    open metrics
    这里有一个问题, 这个 /metrics 是面向所有客户端都开发访问的.
    所以, 通过下面这行命令, 为上面的配置, 添加一条IP白名单:
    curl -XPOST http://localhost:8001/services/prometheusEndpoint/plugins -d name=ip-restriction -d config.whitelist=192.168.0.0/16
    
    IP受限访问效果

    OK, 准备工作已经完成
    开始我的表演!

    0x04 为kong添加 prometheus插件

    这个过程相信小伙伴们已经非常熟悉了, 我们添加一个全局插件 prometheus,
    表示这个插件会监控所有的请求.

    add prometheus

    完美, 经过这一步史诗级的配置, 我们的/metrics已经具备了不可估量的能力.
    不信, 你再去刷新一下 cc/metrics:

    metrics full

    哇!!!, 好像真的多了好多数据呀, 好厉害的样子 O_O
    恩, 多请求几次接口, 这里的数据会有些变化的 : )

    那么, 接口性能数据有了, 接下来, 介绍如何把这些信息提供给 prometheus

    0x05 配置 prometheus

    打开 prometheus.yml, 找到最后一行, 添加我们的kong提供服务信息

    scrape_configs:
      # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
      - job_name: 'prometheus'
        # 仔细看下面两行注释:
        # metrics_path defaults to '/metrics'
        # scheme defaults to 'http'.  
        static_configs:
                - targets: ['localhost:9090','cc']
    
    prometheus.yml

    配置完成后, 重启prometheus服务.
    为了验证prometheus拿到了数据, 我们需要在网页上, 输入kong关键字,应该看到如图的一些信息:

    kong-data

    很好, 我们已经完成一大半工作了.
    接下来, 是时候在Grafana上Show一波操作了~~~

    0x06 配置Grafana

    grafana里的配置, 分两部分:

    • datasource: 负责采集数据
    • dashboard: 负责UI展示
    1. datasource配置

    如下图所示: 我们增加一个数据源, 选择类型为prometheus:

    增加数据源

    配置数据源时, 选择本机的 9090 HTTP服务即可


    配置数据源

    测试保存.


    Save & Test
    1. dashboard配置

    通过import的方式添加一个dashboard


    import

    在ID处输入7424

    7424

    下一页: 选择数据源


    数据源

    保存后, 会立即切换到dashboard页:


    效果
    效果2
    效果3

    哇, 好酷,好酷!!!
    居然不需要啥配置, 就能有这么帅气的界面了!!!
    够我吹到新年了 _


    等等, 好像哪里不对
    上面的7424什么鬼?

    这当然是模版的id啦,
    这个帅气的dashboard模版 还是kong官方出品的.
    详情请点这里

    7424

    0x07 后记

    这一篇信息量稍微有点大, 不过出来的效果还是非常感人的.
    非常推荐小伙伴们试一波, 因为服务端能拿出来show的东西真没多少 :-)

    遗留问题:

    • prometheus 生成的 data 如何控制文件体积

    KONG专题目录


    相关文章

      网友评论

        本文标题:Kong[nginx]-13 使用prometheus,graf

        本文链接:https://www.haomeiwen.com/subject/jwqijctx.html