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


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


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,905评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,140评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,791评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,483评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,476评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,516评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,905评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,560评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,778评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,557评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,635评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,338评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,925评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,898评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,142评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,818评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,347评论 2 342