首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用弹性代理容器从另一个容器收集服务日志?

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

Stack Overflow用户
提问于 2022-02-20 13:05:06
回答 1查看 2.4K关注 0票数 1

我的目标容器包含NGINX日志,我想从弹性舰队的NGINX集成中收集这些日志。

我遵循了每一步,甚至成功地将舰队服务器和代理托管在两个单独的容器中,让我感到困惑的是,我如何配置我的代理(它的策略上有NGINX集成设置),以便从服务容器中收集日志?

我经常遇到一些例子,将弹性代理作为包安装程序直接安装在目标容器上。

我已经附上了我的对接-撰写设置的三个片段,我遵循舰队,代理和应用程序容器。

船队服务器

代码语言:javascript
复制
  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

弹性剂

代码语言:javascript
复制
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日志)

代码语言:javascript
复制
  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上。如果有人能提供任何关于下一步需要做什么的信息,这将是非常有帮助的,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2022-05-20 14:33:02

您可以通过卷挂载共享nginx日志文件。将目录挂载到nginx日志目录,并将其挂载到弹性代理容器中的目录中。然后你就可以从那里用弹性剂容器来收获nginx原木了。

可能存在目录读写权限问题,请随意询问下面。

有点像:

nginx组成:

代码语言:javascript
复制
   demo-app:
     ...
     volumes:
       - ./app:/var/www/html/app
       - ./docker/nginx.conf:/etc/nginx/nginx.conf
+      - /home/user/nginx-log:/var/log/nginx/access.log
     ...

弹性剂组成:

代码语言:javascript
复制
 services:
   agent:
     ...
     volumes:
        - certs:$CERTS_DIR
+       - /home/user/nginx-log:/usr/share/elastic-agent/nginx-log
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71194690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档