INT 21h

Hi, I am Vladimir Smagin, SysAdmin and Kaptain. Telegram Email / GIT / RSS / GPG

Filebeat to Opensearch

№ 11882 В разделе Sysadmin от March 7th, 2023,
В подшивках:

Opensearch это форк Elasticsearch, они как бы одно и тоже, но формально не совместимы поэтому напрямую из Filebeat и других подобных переслать данные не получится. Чтобы оно заработало нужна специальная версия Logstash, которая имеет плагин для работы с opensearch.

Настройки Filebeat

Ну все как обычно, поднимается где-нибудь рядом с сервисом, который необходимо отслеживать. Если у вас kubernetes я уверен на 100% вы справитесь с деплоем туда самостоятельно.

version: '3.3'
services:
  filebeat:
    image: elastic/filebeat:7.16.2
    command: ["-e", "--strict.perms=false"]
    environment:
      LOGSTASH_HOST: 10.2.113.39
      LOGSTASH_PORT: "5044"
    user: root
    restart: always
    volumes:
      - /srv/db/mysql-logs:/var/log/mysql:ro
      - /srv/db/filebeat.yml:/usr/share/filebeat/filebeat.yml
      - /srv/db/filebeat-modules.d:/usr/share/filebeat/modules.d

Внутри конфига filebeat.yml указываем output.logstash

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml

output.logstash:
  hosts: ['${LOGSTASH_HOST}:${LOGSTASH_PORT}']
  index: "service-db-test-%{+yyyy.MM.dd}"
setup:
  template:
    name: "service-db-test"
    pattern: "service-db-test"

Настройки Logstash

Вот тут уже начинается магия. Мы видим, что это вообще не самый простой logstash.

version: "3"
services:
  logstash:
    image: opensearchproject/logstash-oss-with-opensearch-output-plugin:7.16.2
    volumes:
      - "./config:/usr/share/logstash/config:ro"
    ports:
      - "5044:5044/tcp"
      - "5044:5044/udp"
    restart: always

Конфиг пайплайна как раз и является ключевым во всей цепочке сбора логов. Обращаем внимание на то, что в output уже opensearch, а не эластик.

input {
  beats {
    host => "0.0.0.0"
    port => "5044"
  }
}

output {
  if [service][type] == "mysql" {
    opensearch
    {
	hosts => ["https://10.3.27.105:9200"]
	index => "service-db-test-filebeat-%{+yyyy.MM.dd}"
	user => "mylogin"
	password => "mypassword"
	ssl => "true"
	ssl_certificate_verification => "false"
    }
    #stdout {}
  } else {
    opensearch
    {
	hosts => ["https://10.3.27.105:9200"]
	index => "stand-test-filebeat-%{+yyyy.MM.dd}"
	user => "mylogin"
	password => "mypassword"
	ssl => "true"
	ssl_certificate_verification => "false"
    }
    #stdout{}
  }
}

Подключаем этот пайплайн в logstash.yml: path.config: "./config/pipeline.conf"

Kibana

Создаем нужные настройки для индексов в кибане и читаем логи.

Готово. Можно идти пить чай.

Нет комментариев »

docker-compose for Elasticsearch, Kibana and oauth2 protection

№ 10908 В разделе Sysadmin от January 17th, 2020,
В подшивках: ,

version: '3.7'
services:
  kibana:
    image: kibana:7.3.0
    depends_on:
      - elasticsearch
    networks:
      - elk

  elasticsearch:
    image: elasticsearch:7.3.0
    volumes:
      - esdata:/usr/share/elasticsearch/data
    networks:
      - elk
    ports:
      - 39200:9200
    environment:
      - "discovery.type=single-node"
      - "cluster.name=docker-cluster"
      - "bootstrap.memory_lock=true"
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1

  oauth:
    # cloned git repo with enabled bitbucket support
    build: ./oauth2_proxy
    image: oauth2proxy
    entrypoint:
      - oauth2_proxy
      - --upstream=http://kibana:5601
      - --email-domain=*
      - --http-address=0.0.0.0:4180
      - --bitbucket-team=my_organization
      - --client-id=zZYjbsBVMBDyaXvk5v
      - --client-secret=wxz3uFvKVBXR2EaQPJAcQyPY44XbyNKT
      - --provider=bitbucket
      - --cookie-secret=cy-BbEK5MgHg5NcQe8FcdQ==
      - --cookie-secure=true
    depends_on:
      - elasticsearch
      - kibana
    ports:
      - 127.0.0.1:4180:4180
    networks:
      - elk

networks:
  elk:

volumes:
  esdata:
    driver: local

Нет комментариев »

Облачная платформа
Яндекс.Метрика

Fortune cookie: Q: How can you tell when your girlfriend has had an orgasm? A: Who cares?