№ 11882 В разделе
Sysadmin
от March 7th, 2023,
В подшивках: ELK
Opensearch это форк Elasticsearch, они как бы одно и тоже, но формально не совместимы поэтому напрямую из Filebeat и других подобных переслать данные не получится. Чтобы оно заработало нужна специальная версия Logstash, которая имеет плагин для работы с opensearch.
Ну все как обычно, поднимается где-нибудь рядом с сервисом, который необходимо отслеживать. Если у вас 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.
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"
Создаем нужные настройки для индексов в кибане и читаем логи.
Готово. Можно идти пить чай.
№ 10908 В разделе
Sysadmin
от January 17th, 2020,
В подшивках: Docker, ELK
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?