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
在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
成功后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配置
在安装好后 在1337端口登录后台添加链接
ipconfig 看看自己的ip 配置上去就好了
配置service
我这里准备是在后端开一个swoole的htpp服务 配置的9501
这个地方看你的服务了 你可以用go 起一个简单的http服务测试
配置router
这个地方就是一个虚拟ip路由了
http://deliver.service.com 我配置的这个域名
然后在本地的host 配置好这个域名 我的就在本地 就是127.0.0.1 了
生产环境就是直接域名映射到kong的机器了 服务的区分 可以这个用域名区分 也可以用path 我们这里配置的path用的/ 根 所以 准备是用域名区分后端的微服务 生产环境看自己需要了
我们组以前生产环境是用path 区分服务 api.service.com/a /b /c abc 路由到不同的后端服务 这样的一个好处就是新增服务不需要 在配置新的域名映射
看看效果
我们通过http://deliver.service.com 路由到我们真正的后端服务了
为啥要加8000 端口? 8000 是kong 对外暴露的端口
生产环境你也可以换成80 这样就可以不用加端口了
现在服务已经有了 我们再来看看监控部分
我是根据这个博客安装的
飞机票
主要有几个地方没有说清楚
1
这个target数据数据源配置是错的
9090 是prometheus的数据端口 监控prpometheus自身数据的
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是有这个数据的 但是为了安全才?️转到这个接口的
其实这里的数据是一样的
**
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里面的展示了
效果图