Alguém conseguiu com sucesso monitorar um cluster do MongoDB 3 (ou banco de dados autônomo) com o StackDriver no GCE?
Eu configurei um cluster do MongoDB 3.0.6 no GCE (conjunto de réplicas com 2 réplicas e 1 árbitro)
Estou tentando monitorá-lo por meio do StackDriver fornecido pelo Google.
Eu segui todas as instruções para instalar o agente de monitoramento e o plug-in mongodb encontrados aqui:
link
Quando eu inicio o agente na réplica onde ele está configurado:
sudo /etc/init.d/stackdriver-agent restart
Eu recebo os seguintes erros em / var / log / syslog:
collectd[6013]: tcpconns plugin: Reading from netlink succeeded. Will use the netlink method from now on.
collectd[6013]: mongo plugin: Authenticating to localhost:27017 failed:
collectd[6013]: mongo plugin: Connecting to localhost:27017 failed:
collectd[6013]: read-function of plugin 'mongodb' failed. Will suspend it for 120.000 seconds.
Eu suspeito que o agente StackDriver não seja compatível com o MongoDB 3, porque:
-
No passado, usei o recurso Clique para implantar do GCE para criar um cluster e consegui monitorá-lo com o StackDriver. Naquela época, estava com o MongoDB 2.6.x.
-
Eu rapidamente instalei novamente uma instalação autônoma do MongoDB 2.6.x, configurei o agente StackDriver da mesma maneira e ... ele funciona: - (
Qualquer ajuda será muito apreciada.
Detalhes da configuração:
Mongodb:
Stackdriver Mongodb plugin:
- este usuário e senha usados em /opt/stackdriver/collectd/etc/collectd.d/mongodb.conf
Informações adicionais:
Sem autenticação : o plug-in inicializa com êxito
/etc/mongod.conf:
# Turn on/off security. Off is currently the default
#noauth = true
#auth = true
/opt/stackdriver/collectd/etc/collectd.d/mongodb.conf:
LoadPlugin mongodb
<Plugin "mongodb">
Host "localhost"
Port "27017"
# If you restricted access to the database, you can
# set the username and password here
# User "user_name"
# Password "user_password"
# For performance/eventually consistent trade-offs you may add this line
# PreferSecondaryQuery true
</Plugin>
Modo de autenticação: erros de autenticação ao reiniciar o agente
/etc/mongod.conf:
# Turn on/off security. Off is currently the default
#noauth = true
auth = true
3 usuários configurados
use admin
db.createUser(
{
user: "siteUserAdmin",
pwd: "xxx",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
db.auth("siteUserAdmin", "xxx");
db.createUser( {
user: "siteRootAdmin",
pwd: "xxx",
roles: [ { role: "root", db: "admin" } ]
});
db.createUser(
{
user: "monitoring",
pwd: "xxx",
roles: [
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" } ]
}
)
/opt/stackdriver/collectd/etc/collectd.d/mongodb.conf:
LoadPlugin mongodb
<Plugin "mongodb">
Host "localhost"
Port "27017"
# If you restricted access to the database, you can
# set the username and password here
User "monitoring"
Password "xxx"
# For performance/eventually consistent trade-offs you may add this line
# PreferSecondaryQuery true
</Plugin>
Mesmos erros quando uso o siteRootAdmin na configuração do plugin.
Explicação e solução
O culpado foi, na verdade, o esquema de autenticação usado pelo agente StackDriver
Eu adaptei a solução sugerida por Adam C , porque eu já tenho usuários criados com o esquema SCRAM-SHA-1 .
Na verdade, eu só preciso que o usuário para o monitoramento use o MONGODB-CR.
Para fazer isso:
Reinicie o MongoDB 3.0 com a autenticação desativada
Conecte-se à instância
Altere temporariamente o esquema de autenticação para MONGODB-CR
use admin
var schema = db.system.version.findOne({"_id" : "authSchema"});
schema.currentVersion = 3;
db.system.version.save(schema);
Crie o usuário para o plug-in do StackDriver
db.createUser(
{
user: "monitoring",
pwd: "xxx",
roles: [
{ role: "dbAdminAnyDatabase", db: "admin" },
{ role: "clusterAdmin", db: "admin" },
{ role: "readAnyDatabase", db: "admin" } ]
}
)
Verifique se tem o esquema de autenticação correto: MONGODB-CR
> db.system.users.find({"user":"monitoring"})
{ "_id" : "admin.monitoring", "user" : "monitoring", "db" : "admin", "credentials" : { "MONGODB-CR" ...
Defina o esquema de autenticação para SCRAM-SHA-1
var schema = db.system.version.findOne({"_id" : "authSchema"});
schema.currentVersion = 5;
db.system.version.save(schema);
Reinicie o MongoDB 3.0 com a autenticação ativada
Reinicie o agente StackDriver
Quando o StackDriver for compatível com SCRAM-SHA-1, será útil atualizar o esquema de autenticação deste usuário
db.adminCommand({authSchemaUpgrade: 1});