1。kong 安装

[mac 官网安装的教程](https://docs.konghq.com/install/macos/?_ga=2.171414304.1436893142.1569807528-400194218.1569807528)
 https://docs.konghq.com/install/macos/?_ga=2.171414304.1436893142.1569807528-400194218.1569807528

安装过程很顺利
pg 可以自己安装 也可以用docker 安装会比较的便利 学习新东西 都是先跑起来

ps:这里我先按照 docker 版本的空安装的 但是发现后面的加Prometheus 插件需要 改配置 kong的容器没有办法进去机器里面 只好?️安装原生的

但是我还是用的 docker的pg kong的数据库名已经被占用了 新建了一个kong-mac

grafana添加图png grafana 图形插件_grafana添加图png


在kong的项目中新建一个kong.conf

kong 的配置介绍在这里 主要要制定数据库pg的配置不要使用 默认配置

pg_host = 127.0.0.1 #设置postgres数据库的连接地址
 pg_port = 5432 #设置postgres数据库的端口
 pg_user = kong #设置postgres数据库的用户
 pg_password = kong #设置postgres数据库的密码
 pg_database = kong-mac #设置postgres数据库的名称
 pg_ssl = off #设置kong和postgres的连接方式
 pg_ssl_verify = offadmin_listen=0.0.0.0:8001, 127.0.0.1:8444 ssl
nginx_http_include=/usr/local/Cellar/kong/1.3.0/prometheus-server.conf
 ~kong migrations bootstrap [-c /path/to/kong.conf] 执行这个命令会初始化table
kong migrations bootstrap [-c /path/to/kong.conf] 启动kong

grafana添加图png grafana 图形插件_nginx_02

成功后8001 数据返回如下

安装kong 管理工具 konga

项目地址

我直接采用docker安装的
实例中有很多的参数

docker run -p 1337:1337
 –network {{kong-network}} \ // optional
 -e “TOKEN_SECRET={{somerandomstring}}” 
 -e “DB_ADAPTER=the-name-of-the-adapter” \ // ‘mongo’,‘postgres’,‘sqlserver’ or ‘mysql’
 -e “DB_URI=full-connection-uri” 
 -e “NODE_ENV=production” \ // or ‘development’ | defaults to ‘development’
 –name konga 
 pantsel/konga


只需要容器名称 端口映射就好了
我们是在本机的kong 不需要network 要理解konga只是一个工具 去掉用kong的admin的api 所有这个是可以自己开发后台的 konga 在容器中 可以根据我们路由的ip访问到8001 就好了 所以这些参数可以在后面进入konga配置

grafana添加图png grafana 图形插件_grafana添加图png_03


在安装好后 在1337端口登录后台添加链接

grafana添加图png grafana 图形插件_grafana_04

ipconfig 看看自己的ip 配置上去就好了

配置service

grafana添加图png grafana 图形插件_kong_05

我这里准备是在后端开一个swoole的htpp服务 配置的9501

grafana添加图png grafana 图形插件_grafana_06

这个地方看你的服务了 你可以用go 起一个简单的http服务测试

配置router

grafana添加图png grafana 图形插件_nginx_07

这个地方就是一个虚拟ip路由了

http://deliver.service.com 我配置的这个域名

然后在本地的host 配置好这个域名 我的就在本地 就是127.0.0.1 了

生产环境就是直接域名映射到kong的机器了 服务的区分 可以这个用域名区分 也可以用path 我们这里配置的path用的/ 根 所以 准备是用域名区分后端的微服务 生产环境看自己需要了
我们组以前生产环境是用path 区分服务 api.service.com/a /b /c abc 路由到不同的后端服务 这样的一个好处就是新增服务不需要 在配置新的域名映射

看看效果

grafana添加图png grafana 图形插件_prometheus_08

我们通过http://deliver.service.com 路由到我们真正的后端服务了
为啥要加8000 端口? 8000 是kong 对外暴露的端口
生产环境你也可以换成80 这样就可以不用加端口了

现在服务已经有了 我们再来看看监控部分

我是根据这个博客安装的
飞机票

主要有几个地方没有说清楚

1

grafana添加图png grafana 图形插件_prometheus_09

这个target数据数据源配置是错的

9090 是prometheus的数据端口 监控prpometheus自身数据的

grafana添加图png grafana 图形插件_grafana添加图png_10


2加kong 的数据源

这里配置了一个9542的nginx配置

推送kong的数据到prometheus

建立prometheus-server.conf配置文件,内容如下:

server {

server_name kong_prometheus_exporter;

listen 0.0.0.0:9542;



location / {

    default_type text/plain;

    content_by_lua_block {

         local prometheus = require "kong.plugins.prometheus.exporter"

         prometheus:collect()

    }

}



location /nginx_status {

    internal;

    access_log off;

    stub_status;

}

}

后来我发现其实kong 8001 的adminapi是有这个数据的 但是为了安全才?️转到这个接口的

grafana添加图png grafana 图形插件_prometheus_11

grafana添加图png grafana 图形插件_kong_12


其实这里的数据是一样的

**
target 配置
**
 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’,‘127.0.0.1:8001’]

看到prometheus 已经有kong的数据

后面就是Grafana里面的展示了

效果图

grafana添加图png grafana 图形插件_nginx_13