Add plugin development framework (#4324)
This commit is contained in:
parent
2ee374cf50
commit
9fe90d71f4
|
@ -100,6 +100,13 @@ func init() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Input Plugin Development
|
||||||
|
|
||||||
|
* Run `make static` followed by `make plugin-[pluginName]` to spin up a docker dev environment
|
||||||
|
using docker-compose.
|
||||||
|
* ***[Optional]*** When developing a plugin, add a `dev` directory with a `docker-compose.yml` and `telegraf.conf`
|
||||||
|
as well as any other supporting files, where sensible.
|
||||||
|
|
||||||
## Adding Typed Metrics
|
## Adding Typed Metrics
|
||||||
|
|
||||||
In addition the the `AddFields` function, the accumulator also supports an
|
In addition the the `AddFields` function, the accumulator also supports an
|
||||||
|
|
13
Makefile
13
Makefile
|
@ -92,4 +92,15 @@ docker-image:
|
||||||
plugins/parsers/influx/machine.go: plugins/parsers/influx/machine.go.rl
|
plugins/parsers/influx/machine.go: plugins/parsers/influx/machine.go.rl
|
||||||
ragel -Z -G2 $^ -o $@
|
ragel -Z -G2 $^ -o $@
|
||||||
|
|
||||||
.PHONY: deps telegraf install test test-windows lint vet test-all package clean docker-image fmtcheck uint64
|
static:
|
||||||
|
@echo "Building static linux binary..."
|
||||||
|
@CGO_ENABLED=0 \
|
||||||
|
GOOS=linux \
|
||||||
|
GOARCH=amd64 \
|
||||||
|
go build -ldflags "$(LDFLAGS)" ./cmd/telegraf
|
||||||
|
|
||||||
|
plugin-%:
|
||||||
|
@echo "Starting dev environment for $${$(@)} input plugin..."
|
||||||
|
@docker-compose -f plugins/inputs/$${$(@)}/dev/docker-compose.yml up
|
||||||
|
|
||||||
|
.PHONY: deps telegraf install test test-windows lint vet test-all package clean docker-image fmtcheck uint64 static
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
telegraf:
|
||||||
|
image: glinton/scratch
|
||||||
|
volumes:
|
||||||
|
- ./telegraf.conf:/telegraf.conf
|
||||||
|
- ../../../../telegraf:/telegraf
|
||||||
|
- ./test.log:/var/log/test.log
|
||||||
|
entrypoint:
|
||||||
|
- /telegraf
|
||||||
|
- --config
|
||||||
|
- /telegraf.conf
|
|
@ -0,0 +1,12 @@
|
||||||
|
[agent]
|
||||||
|
interval="1s"
|
||||||
|
flush_interval="1s"
|
||||||
|
|
||||||
|
[[inputs.logparser]]
|
||||||
|
files = ["/var/log/test.log"]
|
||||||
|
from_beginning = true
|
||||||
|
[inputs.logparser.grok]
|
||||||
|
patterns = [ "%{COMBINED_LOG_FORMAT}", "%{CLIENT:client_ip} %{NOTSPACE:ident} %{NOTSPACE:auth} \\[%{TIMESTAMP_ISO8601:timestamp}\\] \"(?:%{WORD:verb:tag} %{NOTSPACE:request}(?: HTTP/%{NUMBER:http_version:float})?|%{DATA})\" %{NUMBER:resp_code:tag} (?:%{NUMBER:resp_bytes:int}|-) %{QS:referrer} %{QS:agent}"]
|
||||||
|
|
||||||
|
[[outputs.file]]
|
||||||
|
files = ["stdout"]
|
|
@ -0,0 +1,2 @@
|
||||||
|
127.0.0.1 ident auth [10/Oct/2000:13:55:36 -0700] "GET /anything HTTP/1.0" 200 2326 "http://localhost:8083/" "Chrome/51.0.2704.84"
|
||||||
|
127.0.0.1 ident auth [2018-02-21 13:10:34,555] "GET /peter HTTP/1.0" 200 2326 "http://localhost:8083/" "Chrome/51.0.2704.84"
|
|
@ -0,0 +1,16 @@
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
mongodb:
|
||||||
|
image: mongo
|
||||||
|
|
||||||
|
telegraf:
|
||||||
|
image: glinton/scratch
|
||||||
|
volumes:
|
||||||
|
- ./telegraf.conf:/telegraf.conf
|
||||||
|
- ../../../../telegraf:/telegraf
|
||||||
|
depends_on:
|
||||||
|
- mongodb
|
||||||
|
entrypoint:
|
||||||
|
- /telegraf
|
||||||
|
- --config
|
||||||
|
- /telegraf.conf
|
|
@ -0,0 +1,9 @@
|
||||||
|
[agent]
|
||||||
|
interval="1s"
|
||||||
|
flush_interval="3s"
|
||||||
|
|
||||||
|
[[inputs.mongodb]]
|
||||||
|
servers = ["mongodb://mongodb:27017"]
|
||||||
|
|
||||||
|
[[outputs.file]]
|
||||||
|
files = ["stdout"]
|
|
@ -0,0 +1,42 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: mysql:5.7
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: telegraf
|
||||||
|
MYSQL_DATABASE: telegraf
|
||||||
|
MYSQL_USER: telegraf
|
||||||
|
MYSQL_PASSWORD: telegraf
|
||||||
|
maria:
|
||||||
|
image: mariadb
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: telegraf
|
||||||
|
MYSQL_DATABASE: telegraf
|
||||||
|
MYSQL_USER: telegraf
|
||||||
|
MYSQL_PASSWORD: telegraf
|
||||||
|
command: mysqld --userstat=1
|
||||||
|
percona:
|
||||||
|
image: percona
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: telegraf
|
||||||
|
MYSQL_DATABASE: telegraf
|
||||||
|
MYSQL_USER: telegraf
|
||||||
|
MYSQL_PASSWORD: telegraf
|
||||||
|
|
||||||
|
telegraf:
|
||||||
|
image: glinton/scratch
|
||||||
|
depends_on:
|
||||||
|
- mysql
|
||||||
|
- maria
|
||||||
|
- percona
|
||||||
|
volumes:
|
||||||
|
- ./telegraf.conf:/telegraf.conf
|
||||||
|
- ../../../../telegraf:/telegraf
|
||||||
|
entrypoint:
|
||||||
|
- /telegraf
|
||||||
|
- --config
|
||||||
|
- /telegraf.conf
|
|
@ -0,0 +1,61 @@
|
||||||
|
# Uncomment each input as needed to test plugin
|
||||||
|
|
||||||
|
## mysql
|
||||||
|
#[[inputs.mysql]]
|
||||||
|
# servers = ["root:telegraf@tcp(mysql:3306)/"]
|
||||||
|
# gather_table_schema = true
|
||||||
|
# gather_process_list = true
|
||||||
|
# gather_user_statistics = true
|
||||||
|
# gather_info_schema_auto_inc = true
|
||||||
|
# gather_innodb_metrics = true
|
||||||
|
# gather_slave_status = true
|
||||||
|
# gather_binary_logs = false
|
||||||
|
# gather_table_io_waits = true
|
||||||
|
# gather_table_lock_waits = true
|
||||||
|
# gather_index_io_waits = true
|
||||||
|
# gather_event_waits = true
|
||||||
|
# gather_file_events_stats = true
|
||||||
|
# gather_perf_events_statements = true
|
||||||
|
# interval_slow = "30m"
|
||||||
|
# table_schema_databases = []
|
||||||
|
#
|
||||||
|
## mariadb
|
||||||
|
#[[inputs.mysql]]
|
||||||
|
# servers = ["root:telegraf@tcp(maria:3306)/"]
|
||||||
|
# gather_table_schema = true
|
||||||
|
# gather_process_list = true
|
||||||
|
# gather_user_statistics = true
|
||||||
|
# gather_info_schema_auto_inc = true
|
||||||
|
# gather_innodb_metrics = true
|
||||||
|
# gather_slave_status = true
|
||||||
|
# gather_binary_logs = false
|
||||||
|
# gather_table_io_waits = true
|
||||||
|
# gather_table_lock_waits = true
|
||||||
|
# gather_index_io_waits = true
|
||||||
|
# gather_event_waits = true
|
||||||
|
# gather_file_events_stats = true
|
||||||
|
# gather_perf_events_statements = true
|
||||||
|
# interval_slow = "30m"
|
||||||
|
# table_schema_databases = []
|
||||||
|
|
||||||
|
# percona
|
||||||
|
[[inputs.mysql]]
|
||||||
|
servers = ["root:telegraf@tcp(percona:3306)/"]
|
||||||
|
gather_table_schema = true
|
||||||
|
gather_process_list = true
|
||||||
|
gather_user_statistics = true
|
||||||
|
gather_info_schema_auto_inc = true
|
||||||
|
gather_innodb_metrics = true
|
||||||
|
gather_slave_status = true
|
||||||
|
gather_binary_logs = false
|
||||||
|
gather_table_io_waits = true
|
||||||
|
gather_table_lock_waits = true
|
||||||
|
gather_index_io_waits = true
|
||||||
|
gather_event_waits = true
|
||||||
|
gather_file_events_stats = true
|
||||||
|
gather_perf_events_statements = true
|
||||||
|
interval_slow = "30m"
|
||||||
|
table_schema_databases = []
|
||||||
|
|
||||||
|
[[outputs.file]]
|
||||||
|
files = ["stdout"]
|
Loading…
Reference in New Issue