引言
在服务器监控领域, 我们以前使用过
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
,打开登录画面:
进入画面:http://localhost:3000 完成管理员设置.
初始用户名密码为 admin/admin
,第一次登录后, 会提示修改密码.
0x02 Prometheus 安装
Prometheus是用Go语言开发,从官网 下载打包文件后,
解压后就可以直接使用了. (这个使用体验真心要夸一下 ^ ^
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 &
服务启动成功后, 就可以通过
9090
端口进行访问了:配置篇
0x03 打开kong的metrics支持
我们上面了解到, 要想让prometheus 来收集数据, 那么就要从这个服务上从/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
这里有一个问题, 这个
/metrics
是面向所有客户端都开发访问的.所以, 通过下面这行命令, 为上面的配置, 添加一条IP白名单:
curl -XPOST http://localhost:8001/services/prometheusEndpoint/plugins -d name=ip-restriction -d config.whitelist=192.168.0.0/16
OK, 准备工作已经完成
开始我的表演!
0x04 为kong添加 prometheus插件
这个过程相信小伙伴们已经非常熟悉了, 我们添加一个全局插件 prometheus,
表示这个插件会监控所有的请求.
完美, 经过这一步史诗级的配置, 我们的/metrics
已经具备了不可估量的能力.
不信, 你再去刷新一下 cc/metrics
:
哇!!!, 好像真的多了好多数据呀, 好厉害的样子 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
服务.
为了验证prometheus
拿到了数据, 我们需要在网页上, 输入kong
关键字,应该看到如图的一些信息:
很好, 我们已经完成一大半工作了.
接下来, 是时候在Grafana上Show一波操作了~~~
0x06 配置Grafana
grafana里的配置, 分两部分:
- datasource: 负责采集数据
- dashboard: 负责UI展示
- datasource配置
如下图所示: 我们增加一个数据源, 选择类型为prometheus
:
配置数据源时, 选择本机的 9090 HTTP服务即可
测试保存.
- dashboard配置
通过import的方式添加一个dashboard
在ID处输入7424
下一页: 选择数据源
保存后, 会立即切换到dashboard页:
哇, 好酷,好酷!!!
居然不需要啥配置, 就能有这么帅气的界面了!!!
够我吹到新年了 _
等等, 好像哪里不对
上面的7424
什么鬼?
这当然是模版的id啦,
这个帅气的dashboard模版 还是kong官方出品的.
详情请点这里
0x07 后记
这一篇信息量稍微有点大, 不过出来的效果还是非常感人的.
非常推荐小伙伴们试一波, 因为服务端能拿出来show的东西真没多少 :-)
遗留问题:
- prometheus 生成的 data 如何控制文件体积