2017-05-16 19 views
1

나는 다음과 같은 고정 표시기-작성 파일이 있습니다도커 컨테이너 통신

version: '2' 
services: 
# Define a Telegraf service 
telegraf: 
    build: Services/Telegraf 
    image: jit-systems/telegraf 
environment: 
    HOST_PROC: /rootfs/proc 
    HOST_SYS: /rootfs/sys 
    HOST_ETC: /rootfs/etc 
volumes: 
    #- ./etc/telegraf.conf:/etc/telegraf/telegraf.conf:ro 
    - /var/run/docker.sock:/var/run/docker.sock:ro 
    - /sys:/rootfs/sys:ro 
    - /proc:/rootfs/proc:ro 
    - /etc:/rootfs/etc:ro 
    - /var/log/telegraf:/var/log/telegraf 
links: 
    - influxdb 
logging: 
    driver: json-file 
    options: 
    max-size: "100m" 
    max-file: "3" 
networks: 
    - influx 
    - default 
depends_on: 
    - influxdb 
restart: always 
# Define an InfluxDB service 
influxdb: 
    image: influxdb:1.2.0 
    volumes: 
     #- ./data/influxdb:/var/lib/influxdb 
     - influxdb:/var/lib/influxdb 
networks: 
    - influx 
    - default 
#this port should not be exposed 
ports: 
    - "8086:8086" 
logging: 
    driver: json-file 
    options: 
    max-size: "100m" 
    max-file: "3" 
restart: always 
# Define a Kapacitor service 
kapacitor: 
    image: kapacitor:1.2.0 
    environment: 
     KAPACITOR_HOSTNAME: kapacitor 
     KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:8086 
    volumes: 
     - influxdb:/home/docker_containers/kapacitor/volume 
     - influxdb:/var/lib/kapacitor 
     - /var/log/kapacitor:/var/log/kapacitor 
    links: 
     - influxdb 
    logging: 
     driver: json-file 
     options: 
     max-size: "100m" 
     max-file: "3" 
    networks: 
     - influx 
     - default 
    depends_on: 
    - influxdb 
restart: always 

grafana: 
    image: grafana/grafana 
    ports: 
     - 3000:3000 
    volumes: 
     - grafana:/var/lib/grafana 
    env_file: 
     - config.monitoring 
    links: 
     - influxdb 
    logging: 
     driver: json-file 
     options: 
     max-size: "100m" 
     max-file: "3" 
    restart: always 

volumes: 
    influxdb: 

    portainer: 

    grafana: 

networks: 
    influx: 

모든 컨테이너가 successfuly 구축됩니다. Telegraf가 Influx에 데이터를 삽입하고 있습니다. 오류가 발생하지 않습니다. 이는 포트 8086이 노출 된 경우에만 발생합니다. 포트 8086을 닫으면 아무런 데이터도 삽입되지 않지만 데이터베이스는 Grafana 데이터 소스 패널에서 볼 수 있습니다. 연결을 저장하면 연결에 성공했다는 메시지가 표시됩니다. 포트 8086을 공개하지 않고 Influxdb 컨테이너에서 데이터를 가져 오는 방법이 있습니까?

답변

1

나는이 고정 표시기-작성 버전 2에서 사용할 수 있는지 모르겠지만 : 당신은 대중에게 포트를 게시하지 않고 서로의 포트에 도달하기 위해 네트워크 내의 모든 컨테이너를 사용하려면 네트워크를 사용할 수

.

하나의 서비스는 서비스 이름과 포트를 통해 다른 서비스에 액세스합니다. 예 :

version: "3.1" 

## To ensure optimal performance and data persistence elk stack will only run on a node with a label added in the following way: docker node update --label-add app_role=elasticsearch nodeID 

networks: 
    logging: 

volumes: 
    logging_data: 

services: 

    elasticsearch: 
    image: docker.elastic.co/elasticsearch/elasticsearch:5.3.1 
    logging: 
     driver: "json-file" 
    networks: 
     - logging 
    volumes: 
     - logging_data:/usr/share/elasticsearch/data 
    environment: 
     xpack.security.enabled: "false" 
    deploy: 
     placement: 
     constraints: [node.labels.app_role == elasticsearch] 

    logstash: 
    image: docker.elastic.co/logstash/logstash:5.3.1 
    logging: 
     driver: "json-file" 
    networks: 
     - logging 
    ports: 
     - "127.0.0.1:12201:12201/udp" 
    entrypoint: logstash -e 'input { gelf { } } 
         output { stdout{ } elasticsearch { hosts => ["http://elasticsearch:9200"] } }' 
# Add to date{} add_field => { "ElkDebug" => "timestamp matched and was overwritten"} when in doubt about time filter 

logstash 출력에는 신축 검색 주소가 사용됩니다.