apisix/doc/zh-cn/plugins/kafka-logger.md
2020-06-19 12:03:55 +08:00

128 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
-->
# 目录
- [**简介**](#简介)
- [**属性**](#属性)
- [**工作原理**](#工作原理)
- [**如何启用**](#如何启用)
- [**测试插件**](#测试插件)
- [**禁用插件**](#禁用插件)
## 简介
`kafka-logger` 是一个插件可用作ngx_lua nginx 模块的 Kafka 客户端驱动程序。
它可以将接口请求日志以 JSON 的形式推送给外部 Kafka 集群。如果在短时间内没有收到日志数据,请放心,它会在我们的批处理处理器中的计时器功能到期后自动发送日志。
有关 Apache APISIX 中 Batch-Processor 的更多信息,请参考。
[Batch-Processor](../batch-processor.md)
## 属性
|属性名称 |必选项 |描述|
|--------- |--------|-----------|
| broker_list |必须| 要推送的 kafka 的 broker 列表。|
| kafka_topic |必须| 要推送的 topic。|
| timeout |可选| 发送数据的超时时间。|
| key |必须| 用于加密消息的密钥。|
| name |必须| batch processor 的唯一标识。|
| batch_max_size |可选| 批量发送的消息最大数量,当到达该阀值后会立即发送消息|
| inactive_timeout |可选| 不活跃时间,如果在该时间范围内都没有消息写入缓冲区,那么会立即发送到 kafka。默认值 5(s)|
| buffer_duration |可选| 缓冲周期,消息停留在缓冲区的最大时间,当超过该时间时会立即发送到 kafka。默认值 60(s)|
| max_retry_count |可选| 最大重试次数。默认值: 0|
| retry_delay |可选| 重试间隔。默认值: 1(s)|
## 工作原理
消息将首先写入缓冲区。
当缓冲区超过`batch_max_size`时它将发送到kafka服务器
或每个`buffer_duration`刷新缓冲区。
如果成功,则返回“ true”。
如果出现错误,则返回“ nil”并带有描述错误的字符串`buffer overflow`)。
##### Broker 列表
插件支持一次推送到多个 Broker如下配置
```json
{
"127.0.0.1":9092,
"127.0.0.1":9093
}
```
## 如何启用
1. 为特定路由启用 kafka-logger 插件。
```shell
curl http://127.0.0.1:9080/apisix/admin/routes/5 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"plugins": {
"kafka-logger": {
"broker_list" :
{
"127.0.0.1":9092
},
"kafka_topic" : "test2",
"key" : "key1"
}
},
"upstream": {
"nodes": {
"127.0.0.1:1980": 1
},
"type": "roundrobin"
},
"uri": "/hello"
}'
```
## 测试插件
* 成功:
```shell
$ curl -i http://127.0.0.1:9080/hello
HTTP/1.1 200 OK
...
hello, world
```
## 禁用插件
当您要禁用`kafka-logger`插件时这很简单您可以在插件配置中删除相应的json配置无需重新启动服务它将立即生效
```shell
$ curl http://127.0.0.1:2379/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d value='
{
"methods": ["GET"],
"uri": "/hello",
"plugins": {},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980": 1
}
}
}'
```