Kong[nginx]-13 使用prometheus,grafana进行监控

2字数 1036阅读 226

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专题目录