我正在尝试使用graylog的mongo profiler插件使用docker来运行所有内容。但我无法将任何分析日志记录到graylog中。
当我从graylog UI启动mongo输入时,它最终会超时并出现错误:
在等待与WritableServerSelector匹配的服务器时,在30000 ms后超时。簇状态的客户端视图是{式=未知,服务器= [{地址=本地主机:37017,类型=未知,状态= CONNECTING,异常= {com.mongodb.MongoSocketOpenException:异常开口插座},由{java.net。 ConnectException:Connection refused}}]。
这是我的设置基于graylog dockerhub installation和mongo profiler plugin guide以及修改位:
(1)我使用docker-compose文件调出graylog,mongo和elastic:
version: '2'
services:
some-mongo:
image: "mongo:3"
some-elasticsearch:
image: "elasticsearch:2"
command: "elasticsearch -Des.cluster.name='graylog'"
graylog:
image: graylog2/server:2.2.1-1
environment:
GRAYLOG_PASSWORD_SECRET: somepasswordpepper
GRAYLOG_ROOT_PASSWORD_SHA2: 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
GRAYLOG_WEB_ENDPOINT_URI: http://127.0.0.1:9000/api
links:
- some-mongo:mongo
- some-elasticsearch:elasticsearch
ports:
- "9000:9000"
- "514:514/udp"
- "12202:12202"
- "37017:37017"
到目前为止,这已经很好了,我已经能够发送syslog udp消息和gelf http消息。
(2)我创建了一个单独的mongo docker容器,其中映射了端口,因为我担心如果我使用27017,那个graylog可能会在其自己的内部mongodb容器中查找:
docker run -d -p 37017:27017 mongo:2.4
我启动一个mongo会话并启用“graylog”数据库的分析:
$ mongo --port 37017
> use graylog
> db.setProfilingLevel(2)
{ "was" : 0, "slowms" : 100, "ok" : 1 }
> db.foo.insert({_id:1})
// Check that profiling data is being written to system.profile:
> db.system.profile.find().limit(1).sort( { ts : -1 } ).pretty()
{
"op" : "query",
"ns" : "graylog.foo",
"query" : {
},
"ntoreturn" : 0,
"ntoskip" : 0,
....
"allUsers" : [ ],
"user" : ""
}
所以看起来mongod实例正在运行并且分析正在运行。
(3)我将插件jar和docker cp
下载到graylog docker容器内的插件目录中。类似的东西:
docker cp graylog-plugin-mongodb-profiler-2.0.1.jar e89a2decda37:/usr/share/graylog/plugin
然后重启graylog。
我可以看到文件在那里:
$ docker exec -it e89a2decda37 /bin/sh
# ls /usr/share/graylog/plugin
graylog-plugin-anonymous-usage-statistics-2.2.1.jar graylog-plugin-map-widget-2.2.1.jar
graylog-plugin-beats-2.2.1.jar graylog-plugin-mongodb-profiler-2.0.1.jar
graylog-plugin-collector-2.2.1.jar graylog-plugin-pipeline-processor-2.2.1.jar
graylog-plugin-enterprise-integration-2.2.1.jar
因此该部分似乎工作正常,我可以在graylog UI的输入类型列表中看到一个条目“Mongo profiler input”。
(4)我创建了一个“Mongo profiler input”输入:
(5)点击“保存”后,输入尝试启动,最终失败,如上所述。重新启动graylog或尝试重新启动输入会导致相同的故障。
我已尝试使用不同版本的mongo的步骤(2),以防有一些驱动程序不兼容但它们都失败并出现相同的错误。我试过码头图像:
提前致谢!