prometheus监控kong网关数据

1. Prometheus简介

Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。

Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,这样做的好处是任意组件只要提供HTTP接口就可以接入监控系统,不需要任何SDK或者其他的集成过程。这样做非常适合虚拟化环境比如VM或者Docker 。Prometheus应该是为数不多的适合Docker、Mesos、Kubernetes环境的监控系统之一。

输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux 系统信息 (包括磁盘、内存、CPU、网络等等),具体支持的源看:https://github.com/prometheus。

2. Prometheus服务搭建

  1. 拉取prometheus镜像
docker pull prom/prometheus
  1. 启动容器

kong网关添加了Prometheus插件后,在admin api的metrics端点可以获取到prometheus所需数据,即http://{kong_ip}:8001/metrics

准备一个配置文件,名为:prometheus.yml. 本文的样例如下:

global:
  scrape_interval:     15s  # 下抓取目标的频率, 默认60s
  evaluation_interval: 60s  # 评估规则的频率
  scrape_timeout: 10s       # 抓取数据超时时间,默认10s
 
scrape_configs:             # 数据抓取配置
  - job_name: kong          # 抓取任务的名称, 唯一
    scrape_interval: 15s    # 抓取频率, 默认使用全局配置
    scrape_timeout: 10s     # 抓取的超时, 默认使用全局配置
    metrics_path: /metrics  # 从目标抓取的url
    scheme: http            # 请求的协议, 默认http
    static_configs:
      - targets: ['10.200.170.20:8001']
        labels: 
          instance: kong
# 更多配置详见: https://prometheus.io/docs/prometheus/latest/configuration/configuration/

然后启动容器:

# 默认配置启动
docker run -p 9090:9090 prom/prometheus

# 从主机映射的配置文件启动
docker run -p 9090:9090 --name prometheus \
        -v ~/Data/conf/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
        -d prom/prometheus

# 映射配置文件和数据存储
docker run -p 9090:9090 -v /tmp/prometheus.yml:/etc/prometheus/prometheus.yml \
       -v /{PATH}/prometheus-data:/prometheus-data \
       prom/prometheus

# 或者为配置使用额外的数据
docker run -p 9090:9090 -v /prometheus-data \
       prom/prometheus --config.file=/{PATH}/prometheus.yml

Grafana安装配置

  1. 拉取docker镜像并启动容器
docker run -d --name=grafana -p 3000:3000 grafana/grafana 
  1. 访问页面
使用浏览器访问ip:port   # http://localhost:3000
系统默认用户名和密码为admin/admin,第一次登陆系统会要求修改密码,修改密码后登陆
  1. 添加数据源
    在Data Source中添加Prometheus。 URL配置为http://{IP}:9090. 注意不要写成localhost,因为grafana是通过docker容器启动的。

  2. 配置kong网关
    因为Prometheus需要用http://kong:8001/metrics 抓取数据。默认情况,kong的8001端口只对本机开放。解决方案有多种,详见:https://docs.konghq.com/hub/kong-inc/prometheus/ 的Accessing the metrics部分。这里采用最粗暴的方式,将8001端口暴露出来:

# 在kong.conf文件中添加如下配置
admin_listen = 0.0.0.0:8001, 0.0.0.0:8444 ssl

你可能感兴趣的:(prometheus,prometheus,kong,docker)