1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kevwan-go-stash

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
readme-cn.md 7.4 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 21:08 94902b6

go-stash: краткое описание

go-stash — это эффективный инструмент для получения данных из Kafka, их обработки в соответствии с конфигурацией и отправки в кластер ElasticSearch.

Производительность go-stash примерно в 5 раз выше, чем у logstash, а его развёртывание простое — достаточно одного исполняемого файла.

Установка

cd stash && go build stash.go

Быстрый старт

  • Исполняемый файл:
./stash -f etc/config.yaml
  • Docker: убедитесь, что путь к файлу конфигурации указан правильно.
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

Conns

Количество подключений к Kafka, которое зависит от количества ядер процессора и обычно не превышает количество ядер.

Consumers

Количество потоков, открываемых каждым соединением. Рекомендуется не превышать общее количество разделов темы, например, если тема имеет 30 разделов, то Conns * Consumers <= 30.

Processors

Количество потоков для обработки данных, зависящее от количества ядер процессора. Можно увеличить соответствующим образом, рекомендуется настроить как Conns * Consumers * 2 или Conns * Consumers * 3, например: 60 или 90.

MinBytes MaxBytes

Диапазон размера блоков данных, получаемых из Kafka за один раз. По умолчанию составляет от 1M до 10M. При хорошей сетевой и IO-производительности можно соответствующим образом увеличить.

Offset

Можно выбрать 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

- Action: drop

Указывает на удаление данных, удовлетворяющих этому условию, при обработке они будут удалены и не попадут в ES. Указываются ключ и значение поля, а также тип сравнения (contains или match).

- Action: remove_field

Указание на удаление полей, перечисленных ниже.

- Action: transfer

Перемещение поля message в новое поле data.

Вывод

Index

Имя индекса, формат может быть indexname-{{yyyy.MM.dd}} или {{yyyy-MM-dd}}, где yyyy.MM.dd обозначает год.месяц.день.

MaxChunkBytes

Размер bulk-запроса при отправке данных в ES, по умолчанию равен 5M, может быть настроен в зависимости от производительности ES IO.

GracePeriod

Время ожидания после завершения работы программы для обработки оставшихся данных и потребления, обычно составляет 10 секунд.

Compress

Сжатие данных, сжатие уменьшает объём передаваемых данных, но увеличивает нагрузку на процессор, значение может быть true или false, по умолчанию false.

TimeZone

Значение по умолчанию UTC, всемирное время.

Тестирование производительности записи в ES

Тестовая среда

  • Сервер Stash: 3 машины с 4 ядрами и 8G памяти.
  • Серверы ES: 15 машин с 16 ядрами и 64G памяти.

Ключевые настройки

- 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

Скорость записи в среднем более 15W/S

go-stash

Группа обмена в WeChat

Перед добавлением в группу оставьте звезду, это будет стимулировать автора отвечать на вопросы.

Если у вас есть какие-либо вопросы, которые не были освещены в документации, вы можете задать их в группе, и мы постараемся ответить как можно скорее.

Вы можете предложить улучшения в группе, мы рассмотрим их обоснованность и постараемся внести изменения.

При обнаружении ошибок, пожалуйста, своевременно создайте issue, и мы подтвердим и исправим их как можно быстрее.

Мой WeChat: kevwan, пожалуйста, укажите go-stash, я добавлю вас в сообщество go-stash 🤝

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/kevwan-go-stash.git
git@api.gitlife.ru:oschina-mirror/kevwan-go-stash.git
oschina-mirror
kevwan-go-stash
kevwan-go-stash
master