我是新来的码头工人,我需要一些帮助。我正试图在码头安装滴答号。Influxdb、Kapacitor和Chronograf将安装在dockers中,但telegraf将安装在每台必要的机器上。我的主机中的端口8086正在使用,所以我将使用8087作为进水数据库。用-p 8087:8086配置进水数据库dokcer是否可行?如果是,我应该在conf文件中配置哪个端口?Docker撰写文件将是:
version: '3'
networks:
TICK_network:
services:
influxdb:
image: influxdb
container_name: influxdb
networks:
TICK_network:
ports:
- "8087:8086"
- "8083:8083"
expose:
- "8087"
- "8083"
hostname: influxdb
volumes:
- /var/lib/influxdb:/var/lib/influxdb
- /etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf:ro
restart: unless-stopped
kapacitor:
image: kapacitor
container_name: kapacitor
networks:
TICK_network:
links:
- influxdb
ports:
- "9092:9092"
expose:
- "9092"
hostname: kapacitor
volumes:
- /var/lib/kapacitor:/var/lib/kapacitor
- /etc/kapacitor/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro
restart: unless-stopped
chronograf:
image: chronograf
container_name: chronograf
networks:
TICK_network:
links:
- influxdb
- kapacitor
ports:
- "8888:8888"
expose:
- "8888"
hostname: chronograf
volumes:
- /var/lib/chronograf:/var/lib/chronograf
restart: unless-stoppedinfluxdb.conf被编辑为指向端口8087。
[http]
enabled = true
bind-address = ":8087"
auth-enabled = trueKapacitor.conf和telegraf.conf也指向端口8087。但我收到以下错误:
Telegraf日志:
W! [outputs.influxdb] when writing to [http://localhost:8087]: database "telegraf" creation failed: Post http://localhost:8087/query: EOF
E! [outputs.influxdb] when writing to [http://localhost:8087]: Post http://localhost:8087/write?db=tick: EOF
E! [agent] Error writing to outputs.influxdb: could not write any addresskapacitor日志:
vl=error msg="encountered error" service=run err="open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed"
run: open server: open service *influxdb.Service: failed to link subscription on startup: authorization failed发布于 2019-12-17 09:48:59
如果您想从Docker网络之外访问这些服务,例如从主机访问localhost:8087,那么您所做的是正确的。
但是,在您的情况下,这是不正确的。当您使用docker-compose时,所有服务都位于同一个网络中,因此,您需要攻击流入在 Docker网络(右侧端口)中侦听的端口,即8086。
但是,即使你这样做了,它仍然是行不通的。为什么?因为您正在尝试从Telegraf容器访问localhost。您需要将对流入的访问配置为influxdb:8086,而不是localhost:8087。influxdb这里是容器的名称,例如,如果您将它命名为ailb90,那么它将是ailb90:8086
发布于 2019-12-17 10:05:06
谢谢你的回答。但是telegraf没有安装在容器中。这就是为什么我使用urls = ["http://localhost:8087"]访问数据库的原因。
另一方面,kapacitor安装在码头容器中。使用字符串urls=["https://influxdb:8087"]来生成进水数据库的conexion。如果我在端口8086中显示了一个连接错误(我认为这是因为influxdb.conf指向端口8087):
lvl=error msg="failed to connect to InfluxDB, retrying..." service=influxdb cluster=default err="Get http://influxdb:8086/ping: dial tcp 172.0.0.2:8086: connect: connection refused"https://stackoverflow.com/questions/59370643
复制相似问题