go-stash: краткое описание
go-stash — это эффективный инструмент для получения данных из Kafka, их обработки в соответствии с конфигурацией и отправки в кластер ElasticSearch.
Производительность go-stash примерно в 5 раз выше, чем у logstash, а его развёртывание простое — достаточно одного исполняемого файла.
cd stash && go build stash.go
./stash -f etc/config.yaml
docker run -d -v `pwd`/etc:/app/etc kevinwan/go-stash
Пример config.yaml:
Clusters:
- Input:
Kafka:
Name: go-stash
Log:
Mode: file
Brokers:
- "172.16.48.41:9092"
- "172.16.48.42:9092"
- "172.16.48.43:9092"
Topic: ngapplog
Group: stash
Conns: 3
Consumers: 10
Processors: 60
MinBytes: 1048576
MaxBytes: 10485760
Offset: first
Filters:
- Action: drop
Conditions:
- Key: status
Value: 503
Type: contains
- Key: type
Value: "app"
Type: match
Op: and
- Action: remove_field
Fields:
- message
- source
- beat
- fields
- input_type
- offset
- "@version"
- _score
- _type
- clientip
- http_host
- request_time
Output:
ElasticSearch:
Hosts:
- "http://172.16.188.73:9200"
- "http://172.16.188.74:9200"
- "http://172.16.188.75:9200"
Index: "go-stash-{{yyyy.MM.dd}}"
MaxChunkBytes: 5242880
GracePeriod: 10s
Compress: false
TimeZone: UTC
Conns: 3
Consumers: 10
Processors: 60
MinBytes: 1048576
MaxBytes: 10485760
Offset: first
Количество подключений к Kafka, которое зависит от количества ядер процессора и обычно не превышает количество ядер.
Количество потоков, открываемых каждым соединением. Рекомендуется не превышать общее количество разделов темы, например, если тема имеет 30 разделов, то Conns * Consumers <= 30.
Количество потоков для обработки данных, зависящее от количества ядер процессора. Можно увеличить соответствующим образом, рекомендуется настроить как Conns * Consumers * 2 или Conns * Consumers * 3, например: 60 или 90.
Диапазон размера блоков данных, получаемых из Kafka за один раз. По умолчанию составляет от 1M до 10M. При хорошей сетевой и IO-производительности можно соответствующим образом увеличить.
Можно выбрать last или false, по умолчанию используется last, что означает чтение данных с начала Kafka.
- Action: drop
Conditions:
- Key: k8s_container_name
Value: "-rpc"
Type: contains
- Key: level
Value: info
Type: match
Op: and
- Action: remove_field
Fields:
- message
- _source
- _type
- _score
- _id
- "@version"
- topic
- index
- beat
- docker_container
- offset
- prospector
- source
- stream
- Action: transfer
Field: message
Target: data
Указывает на удаление данных, удовлетворяющих этому условию, при обработке они будут удалены и не попадут в ES. Указываются ключ и значение поля, а также тип сравнения (contains или match).
Указание на удаление полей, перечисленных ниже.
Перемещение поля message в новое поле data.
Имя индекса, формат может быть indexname-{{yyyy.MM.dd}} или {{yyyy-MM-dd}}, где yyyy.MM.dd обозначает год.месяц.день.
Размер bulk-запроса при отправке данных в ES, по умолчанию равен 5M, может быть настроен в зависимости от производительности ES IO.
Время ожидания после завершения работы программы для обработки оставшихся данных и потребления, обычно составляет 10 секунд.
Сжатие данных, сжатие уменьшает объём передаваемых данных, но увеличивает нагрузку на процессор, значение может быть true или false, по умолчанию false.
Значение по умолчанию UTC, всемирное время.
- Input:
Conns: 3
Consumers: 10
Processors: 60
MinBytes: 1048576
MaxBytes: 10485760
Filters:
- Action: remove_field
Fields:
- message
- source
- beat
- fields
- input_type
- offset
- request_time
Output:
Index: "nginx_pro-{{yyyy.MM.d}}"
Compress: false
MaxChunkBytes: 5242880
TimeZone: UTC
Перед добавлением в группу оставьте звезду, это будет стимулировать автора отвечать на вопросы.
Если у вас есть какие-либо вопросы, которые не были освещены в документации, вы можете задать их в группе, и мы постараемся ответить как можно скорее.
Вы можете предложить улучшения в группе, мы рассмотрим их обоснованность и постараемся внести изменения.
При обнаружении ошибок, пожалуйста, своевременно создайте issue, и мы подтвердим и исправим их как можно быстрее.
Мой WeChat: kevwan, пожалуйста, укажите go-stash, я добавлю вас в сообщество go-stash 🤝
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )