我是Graylog的新手,我尝试在Docker容器上使用Graylog,但是其他容器的日志没有到达Graylog,Graylog web接口搜索中没有显示任何内容。
我应该如何处理到达Graylog上的容器日志?
下面,我描述一下我的尝试:
在单个主机上,只运行一个节点(本身)。
此主机的本地IP为: 10.0.0.5
在一个文件夹里,我有一些文件:
我的docker-compose.yml的内容是:
version: "3.3"
networks:
ambiente:
external: true
services:
# MONGO
mongo:
image: mongo:4.2
networks:
- ambiente
environment:
- MONGO_INITDB_ROOT_USERNAME=root
- MONGO_INITDB_ROOT_PASSWORD=drUqGGCMh
volumes:
- ./graylog.js:/docker-entrypoint-initdb.d/graylog.js:ro
# ELASTICSEARCH
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2
environment:
- "http.host=0.0.0.0"
- "discovery.type=single-node"
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
networks:
- ambiente
# GRAYLOG
graylog:
image: graylog/graylog:4.1.0
environment:
- GRAYLOG_HTTP_EXTERNAL_URI=http://10.0.0.5:9000/
# Pass is "admin"
- GRAYLOG_ROOT_PASSWORD_SHA2=8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
- GRAYLOG_ELASTICSEARCH_DISCOVERY_ENABLED=true
- GRAYLOG_MONGODB_URI=mongodb://graylog:vWGzncmBe9@mongo:27017/graylog
- GRAYLOG_MESSAGE_JOURNAL_ENABLED=false
depends_on:
- mongo
- elasticsearch
ports:
- "9000:9000"
- "12201:12201"
- "1514:1514"
networks:
- ambientegraylog.js内容是:
graylog = db.getSiblingDB('graylog');
graylog.createUser(
{
user: "graylog",
pwd: "vWGzncmBe9",
roles: [
{ role: "dbOwner", db: "graylog" }
]
}
);在主机上,我创建了包含以下内容的文件/etc/docker/daemon.json:
{
"metrics-addr" : "10.0.0.5:9323",
"experimental" : true,
"log-driver": "gelf",
"log-opts": {
"gelf-address": "udp://10.0.0.5:12201"
}
}文件创建后,我重新启动了docker服务,并检查了以下状态:
service docker restart
service docker status码头服务的状态是活跃的:
活动:活动(运行)自星期六2021-06-26 16:58:31 -03;1分2
然后我创建了一个Docker网络:
docker network create -d overlay ambiente然后我解开了堆栈:
docker stack deploy graylog -c docker-compose.yml 随着Graylog的运行,我从System/Input上的web界面创建了一个全局输入,如下所示:
bind_address: 0.0.0.0 decompress_size_limit: 8388608 number_worker_threads: 12 override_source: port: 12201 recv_buffer_size: 262144
谢谢你的帮助!
发布于 2021-06-27 18:36:45
我刚在谷歌上找到了答案。
在这里贴出这个答案是为了帮助那些和我有同样困难的人。
由于我使用了UDP协议,所以灰日志端口上的docker-compose.yml文件出现了问题:
之前(不工作),因为默认的停靠端口位于TCP协议上:
ports:
- "9000:9000"
- "12201:12201"
- "1514:1514"现在(工作),码头端口在TCP和UDP协议上:
ports:
- "9000:9000"
- "12201:12201"
- "12201:12201/udp"
- "1514:1514"
- "1514:1514/udp"从任何容器进行的测试:
echo -n '{ "version": "1.1", "host": "example.org", "short_message": "A short message again", "level": 5, "_some_info": "foo" }' | nc -w1 -u 10.0.0.5 12201消息出现在Graylog web接口上:
2021-06-27 18:27:48.185 +00:00 example.org一条短信!
https://serverfault.com/questions/1067943
复制相似问题