2017-02-20 54 views
0

我需要一点帮助才能找到为什么我的docker-compose.yml不起作用。这个故事是我有一个docker-compose.yml谁工作(谁创建Grafana,Prometheus,nodeexporter,cAdvisor和alertManager),然后我想做一个没有Grafana的,所以我只是删除文件的所有Grafana的东西,但它doesn没有工作。我的docker-compose.yml文件有什么问题?

谁的作品之一:

version: '2' 

networks: 
    monitor-net: 
    driver: bridge 

volumes: 
    prometheus_data: {} 
    grafana_data: {} 

services: 

    prometheus: 
    image: prom/prometheus 
    container_name: prometheus 
    volumes: 
     - ./prometheus/:/etc/prometheus/ 
     - prometheus_data:/prometheus 
    command: 
     - '-config.file=/etc/prometheus/prometheus.yml' 
     - '-storage.local.path=/prometheus' 
     - '-alertmanager.url=http://alertmanager:9093' 
     - '-storage.local.memory-chunks=100000' 
    restart: unless-stopped 
    expose: 
     - 9090 
    ports: 
     - 9090:9090 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    alertmanager: 
    image: prom/alertmanager 
    container_name: alertmanager 
    volumes: 
     - ./alertmanager/:/etc/alertmanager/ 
    command: 
     - '-config.file=/etc/alertmanager/config.yml' 
     - '-storage.path=/alertmanager' 
    restart: unless-stopped 
    expose: 
     - 9093 
    ports: 
     - 9093:9093 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    nodeexporter: 
    image: prom/node-exporter 
    container_name: nodeexporter 
    restart: unless-stopped 
    expose: 
     - 9100 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    cadvisor: 
    image: google/cadvisor:v0.24.1 
    container_name: cadvisor 
    volumes: 
     - /:/rootfs:ro 
     - /var/run:/var/run:rw 
     - /sys:/sys:ro 
     - /var/lib/docker/:/var/lib/docker:ro 
    restart: unless-stopped 
    expose: 
     - 8080 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    grafana: 
    image: grafana/grafana 
    container_name: grafana 
    volumes: 
     - grafana_data:/var/lib/grafana 
    env_file: 
     - user.config 
    restart: unless-stopped 
    expose: 
     - 3000 
    ports: 
     - 3000:3000 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

谁不工作之一:

version: '2' 

networks: 
    monitor-net: 
    driver: bridge 

volumes: 
    prometheus_data: {} 

services: 

    prometheus: 
    image: prom/prometheus 
    container_name: prometheus 
    volumes: 
     - ./prometheus/:/etc/prometheus/ 
     - prometheus_data:/prometheus 
    command: 
     - '-config.file=/etc/prometheus/prometheus.yml' 
     - '-storage.local.path=/prometheus' 
     - '-alertmanager.url=http://alertmanager:9093' 
     - '-storage.local.memory-chunks=100000' 
    restart: unless-stopped 
    expose: 
     - 9090 
    ports: 
     - 9090:9090 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    alertmanager: 
    image: prom/alertmanager 
    container_name: alertmanager 
    volumes: 
     - ./alertmanager/:/etc/alertmanager/ 
    command: 
     - '-config.file=/etc/alertmanager/config.yml' 
     - '-storage.path=/alertmanager' 
    restart: unless-stopped 
    expose: 
     - 9093 
    ports: 
     - 9093:9093 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    nodeexporter: 
    image: prom/node-exporter 
    container_name: nodeexporter 
    restart: unless-stopped 
    expose: 
     - 9100 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

    cadvisor: 
    image: google/cadvisor 
    container_name: cadvisor 
    volumes: 
     - /:/rootfs:ro 
     - /var/run:/var/run:rw 
     - /sys:/sys:ro 
     - /var/lib/docker/:/var/lib/docker:ro 
    restart: unless-stopped 
    expose: 
     - 8080 
    networks: 
     - monitor-net 
    labels: 
     org.label-schema.group: "monitoring" 

随着第二个容器普罗米修斯不能运行和日志:

level=info msg="Starting prometheus (version=1.5.2, branch=master, revision=bd1182d29f462c39544f94cc822830e1c64cf55b)" source="main.go:75" 
level=info msg="Build context (go=go1.7.5, [email protected], date=20170220-07:00:00)" source="main.go:76" 
level=info msg="Loading configuration file /etc/prometheus/prometheus.yml" source="main.go:248" 
level=error msg="Error opening memory series storage: leveldb: manifest corrupted (field 'comparer'): missing [file=MANIFEST-000009]" source="main.go:182" 
+0

和“不起作用”意味着什么? – Henry

+0

@Henry这意味着与“工作”的每个容器运行的人和“不工作”的人一起容器普罗米修斯不能运行,因为清单已损坏 – Jerome

回答

0

普罗米修斯至少启动然后出错意味着您的撰写文件可能是正确的。

它似乎至少尝试加载配置文件/etc/prometheus/prometheus.yml并且不这样做。

在撰写文件中,我看到它添加了主机系统上预计存在的主机卷,位置为./prometheus/。你是否也复制这个文件夹和它的内容?如果是的话,你确认配置是否正确,并且预计在没有Grafana的情况下工作?另外,当您运行docker-compose时,当前目录的重要性很重要,它必须位于./prometheus/目录所在的位置。

+0

所以,感谢您的回答:)现在我将回答你的问题,所以是我复制文件夹和他的内容,配置文件是相同的文件夹中包含工作yml。是的,当我运行'docker-compose'时,我在yml文件的目录中。我会搜索如果我能找到你给我的建议 – Jerome

+0

你应该检查的另一件事是prometheus_data卷。我不知道docker如何构建内部名称卷,特别是如果组合项目名称被预先占用(与容器一样)。我现在用了一段时间,并且无法验证这个atm。请检查一下docker volume ls是什么给你,如果你找到prometheus_data一次或两次。如果只发现一次,这意味着两个组合文件共享相同的音量,可能会导致错误。如果您看到其中两个,请尝试删除与不工作的撰写文件相对应的文件,然后重试启动prometheus。 –

+0

我删除了音量,然后再次创建它,现在它工作!非常感谢 – Jerome