API 后端
Træfik 可以通过 RESTful api 进行配置. 想要开启它:
[web]
address = ":8080"
# SSL 证书与密钥文件配置
#
# 可选
#
# CertFile = "traefik.crt"
# KeyFile = "traefik.key"
#
# 将REST API设置为只读模式
#
# 可选
# ReadOnly = false
#
# 开启更多详细统计信息
# [web.statistics]
# RecentErrors = 10
#
# 为Traefik启用向Prometheus提供内部维度
# [web.metrics.prometheus]
# Buckets=[0.1,0.3,1.2,5]
#
# 在WebUI中启用基础认证(basic auth)
# 使用2组用户名/密码: test:test 与 test2:test2
# 密码可以以MD5、SHA1或BCrypt方式加密:你可以使用htpasswd来生成这些用户名密码。
# [web.auth.basic]
# users = ["test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/", "test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0"]
# 为WebUI开启摘要认证(digest auth)
# 使用2组用户名/域/密码: test:traefik:test 与 test2:traefik:test2
# 你可以使用htdigest来生成这些用户名/域/密码
# [web.auth.digest]
# users = ["test:traefik:a2688e031edb4be6a3797f3882655c05 ", "test2:traefik:518845800f9e2bfb1f1f740ec24f074e"]
/
: 为Træfik提供一个简单的HTML前端页面/ping
:GET
为Træfik提供一个简单的查看进程活跃度的查询端口。
$ curl -sv "http://localhost:8080/ping"
* Trying ::1...
* Connected to localhost (::1) port 8080 (#0)
> GET /ping HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Date: Thu, 25 Aug 2016 01:35:36 GMT
< Content-Length: 2
< Content-Type: text/plain; charset=utf-8
<
* Connection #0 to host localhost left intact
OK
/health
:GET
json metrics
$ curl -s "http://localhost:8080/health" | jq .
{
// Træfɪk 进程ID(PID)
"pid": 2458,
// Træfɪk 服务器运行时间(格式化的时间)
"uptime": "39m6.885931127s",
// Træfɪk 服务器运行时间(以秒为单位)
"uptime_sec": 2346.885931127,
// 当前服务器日期
"time": "2015-10-07 18:32:24.362238909 +0200 CEST",
// 当前服务器时间(以秒为单位)
"unixtime": 1444235544,
// HTTP请求返回状态码实时统计
"status_code_count": {
"502": 1
},
// HTTP请求返回状态码实时统计(自Træfɪk启动以来)
"total_status_code_count": {
"200": 7,
"404": 21,
"502": 13
},
// 统计HTTP请求
"count": 1,
// 统计HTTP请求总数
"total_count": 41,
// 统计所有响应时间之和(格式化的时间)
"total_response_time": "35.456865605s",
// 统计所有响应时间之和(以秒为单位)
"total_response_time_sec": 35.456865605,
// 平均响应时间(格式化的时间)
"average_response_time": "864.8016ms",
// 平均响应时间(以秒为单位)
"average_response_time_sec": 0.8648016000000001,
// 请求统计 [需要设置 --web.statistics ]
// 近10个响应状态码为 4xx 与 5xx 的请求
"recent_errors": [
{
// 状态码
"status_code": 500,
// 状态码秒数
"status": "Internal Server Error",
// HTTP请求方法
"method": "GET",
// 请求域名
"host": "localhost",
// 请求路径
"path": "/path",
// RFC 3339 格式化的 日期/时间
"time": "2016-10-21T16:59:15.418495872-07:00"
}
]
}
/api
:GET
所有提供者的配置文件
$ curl -s "http://localhost:8080/api" | jq .
{
"file": {
"frontends": {
"frontend2": {
"routes": {
"test_2": {
"rule": "Path:/test"
}
},
"backend": "backend1"
},
"frontend1": {
"routes": {
"test_1": {
"rule": "Host:test.localhost"
}
},
"backend": "backend2"
}
},
"backends": {
"backend2": {
"loadBalancer": {
"method": "drr"
},
"servers": {
"server2": {
"weight": 2,
"URL": "http://172.17.0.5:80"
},
"server1": {
"weight": 1,
"url": "http://172.17.0.4:80"
}
}
},
"backend1": {
"loadBalancer": {
"method": "wrr"
},
"circuitBreaker": {
"expression": "NetworkErrorRatio() > 0.5"
},
"servers": {
"server2": {
"weight": 1,
"url": "http://172.17.0.3:80"
},
"server1": {
"weight": 10,
"url": "http://172.17.0.2:80"
}
}
}
}
}
}
/api/providers
:GET
提供者/api/providers/{provider}
:GET
orPUT
提供者/api/providers/{provider}/backends
:GET
后端列表/api/providers/{provider}/backends/{backend}
:GET
一个后端/api/providers/{provider}/backends/{backend}/servers
:GET
后端的服务器列表/api/providers/{provider}/backends/{backend}/servers/{server}
:GET
后端的一个服务器/api/providers/{provider}/frontends
:GET
前端列表/api/providers/{provider}/frontends/{frontend}
:GET
一个前端/api/providers/{provider}/frontends/{frontend}/routes
:GET
前端的路由列表/api/providers/{provider}/frontends/{frontend}/routes/{route}
:GET
前端的一个路由/metrics
: 你可以为Traefik开启向其他不同的监控系统输出的内部维度(当前只支持Prometheus)。
$ traefik --web.metrics.prometheus --web.metrics.prometheus.buckets="0.1,0.3,1.2,5"