Kibana 如何使用弹性代理容器从另一个容器收集服务日志?

c3frrgcw  于 2022-12-09  发布在  Kibana
关注(0)|答案(1)|浏览(182)

我的目标容器包含我想从Elastic Fleet的NGINX集成中收集的NGINX日志。
我遵循了每一个步骤,甚至成功地将机群服务器和代理托管在两个单独的容器中,让我困惑的是,我如何配置我的代理,它在其策略上有NGINX集成设置,以从服务容器收集日志?
我遇到的大多数例子都是直接在目标容器上使用elastic-agent作为包安装程序。
我已经附上了我的docker-compose设置的三个片段,我遵循舰队,代理和应用程序容器。

车队服务器

fleet:
    image: docker.elastic.co/beats/elastic-agent:$ELASTIC_VERSION
    healthcheck:
      test: "curl -f http://127.0.0.1:8220/api/status | grep HEALTHY 2>&1 >/dev/null"
      retries: 12
      interval: 5s
    hostname: fleet
    container_name: fleet
    restart: always
    user: root
    environment:
    - FLEET_SERVER_ENABLE=1
    - "FLEET_SERVER_ELASTICSEARCH_HOST=https://elasticsearch:9200"
    - FLEET_SERVER_ELASTICSEARCH_USERNAME=elastic
    - FLEET_SERVER_ELASTICSEARCH_PASSWORD=REPLACE1
    - FLEET_SERVER_ELASTICSEARCH_CA=$CERTS_DIR/ca/ca.crt
    - FLEET_SERVER_INSECURE_HTTP=1
    - KIBANA_FLEET_SETUP=1
    - "KIBANA_FLEET_HOST=https://kibana:5601" 
    - KIBANA_FLEET_USERNAME=elastic
    - KIBANA_FLEET_PASSWORD=REPLACE1
    - KIBANA_FLEET_CA=$CERTS_DIR/ca/ca.crt
    - FLEET_ENROLL=1
    ports:
      - 8220:8220
    networks:
      - elastic
    volumes:
       - certs:$CERTS_DIR

弹性剂

agent:
    image: docker.elastic.co/beats/elastic-agent:$ELASTIC_VERSION
    container_name: agent
    hostname: agent
    restart: always
    user: root 
    healthcheck:
      test: "elastic-agent status"
      retries: 90
      interval: 1s
    environment:
      - FLEET_ENROLLMENT_TOKEN=REPLACE2
      - FLEET_ENROLL=1
      - FLEET_URL=http://fleet:8220
      - FLEET_INSECURE=1
      - ELASTICSEARCH_HOSTS='["https://elasticsearch:9200"]'
      - ELASTICSEARCH_USERNAME=elastic
      - ELASTICSEARCH_PASSWORD=REPLACE1
      - ELASTICSEARCH_CA=$CERTS_DIR/ca/ca.crt
      - "STATE_PATH=/usr/share/elastic-agent"
    networks:
      - elastic
    volumes:
       - certs:$CERTS_DIR

应用程序容器(NGINX日志)

demo-app:
    image: ubuntu:bionic
    container_name: demo-app
    build:
      context: ./docker/
      dockerfile: Dockerfile
    volumes:
      - ./app:/var/www/html/app
      - ./docker/nginx.conf:/etc/nginx/nginx.conf
    ports:
      - target: 90
        published: 9090
        protocol: tcp
        mode: host
    networks:
      - elastic

ELK堆栈目前运行在版本7.17.0上。如果有人能提供任何关于下一步需要做什么的信息,这将是非常有帮助的,谢谢!

ioekq8ef

ioekq8ef1#

你可以通过卷挂载来共享nginx日志文件。2挂载一个目录到nginx日志目录,然后挂载到你弹性代理容器中的一个目录。3然后你可以从那里获取弹性代理容器中的nginx日志。
可能存在目录读写权限问题,请随时询问下面问题。
有点像:
nginx编写器:

demo-app:
     ...
     volumes:
       - ./app:/var/www/html/app
       - ./docker/nginx.conf:/etc/nginx/nginx.conf
+      - /home/user/nginx-log:/var/log/nginx/access.log
     ...

弹性剂组成:

services:
   agent:
     ...
     volumes:
        - certs:$CERTS_DIR
+       - /home/user/nginx-log:/usr/share/elastic-agent/nginx-log

相关问题