Ilya
Ilya
почему он так странно выдает результат?
Roman
Что значит странно? Он требует обновить результат
Ilya
Ilya
Ilya
видимо я что-то не так делаю:)
Roman
Может дело в формате даты? Попробуйте даты так в запросе писать ISODate("2020-07-02T13:12:56.709+0000")
Андрей
Товарищи, есть у кого-то наработанные бест практики или ссылки на таковые по мульти дц деплою реплик? Географически удаленные дц.
Roman
Roman
не робит шо делать?
Roman
Nick
читайте ошибку - неправильный размер сообщения, ищите где вы чтото большое пытаетесь прочитать/загрузить
Roman
это все что я сделал
Roman
запуск через node js express
Roman
там все как в доке 1 к1
Nick
запрос к базе делаете?
Nick
или только этот код?
Roman
только этот
Roman
если делать запрос, то все виснет немертво
Daniil
это все что я сделал
Ну видимо не все, потому что в этом куске кода нет никакого использования монги
Daniil
А судя по стектрейсу где то все же оно имеется
Roman
/* MONGODB */ const mongodbLoader = async () => { const mongoINI = { noDelay: true, useNewUrlParser: true, useFindAndModify: false, useCreateIndex: true, useUnifiedTopology: true, }; try { await mongoose.connect(mongoURL, mongoINI); console.log(_CONSOLE.mongodb('\n⚡ [MONGODB]'), ':: Connected!'); console.log('::', _MONGODB.connect); } catch (err) { console.error(`⚡ [MONGODB]: ${err}`); } }; const app = express(); app.use(express.json()); app.use(express.urlencoded({ extended: true }));
Roman
app.use(cors()); app.use(routes); (async () => { try { await mongodbLoader(); if (!process.env.NODE_WATCH) webpackStarted(); app.listen(_PORT, _HOST, () => { console.log('timestamp', new Date()); console.log(_CONSOLE.nodejs('\n⚡ [NODE]'), 'EXPRESS SERVER IS READY!'); console.log(`:: URL ${_HOST}:${_PORT} - ENV ${_ENV} - AXIOS ${_API}`); }); } catch (err) { console.error(`⚡ [NODE]: ${err}`); } })();
Roman
это все что есть
Nick
проверьте что порт монги именно 4000 как указан у вас
Roman
хорошо спасибо
Denis 災 nobody
есть порядок типовой раскатки кластера? Столкнулся с тем, что нет понимания, выкатывать ноды и когда они готовы и в днс, собирать? Выкатывать мастер и делать rs.initiate, добавлять себя и потом с самих нод рисовать rs.add?
Denis 災 nobody
это сильно меняет логику деплоя cfn
inqfen
Выкатывай все и собирай rs
inqfen
иначе он сругается, что другие участники rs недоступны, а если добавлять по одному - зачем одно логическое действие делать кучкой операций?
𝐃𝐢𝐦𝐚
Привет , извините за offtop. Кто может подсказать как организовать подгрузку новых непрочитанных сообщений по аналогии с телеграмм , спасибо
Гена
Всем привет Хочу настроить мониторинг долгих запросов, но никак не могу придумать как это реализовать. По сути получается надо чтоб в каждой бд экземпляра пробегал запрос который будет показывать время ответа запроса или просто запросы дольше n-секунд
Гена
db.currentOp() показывает запросы по всем бд ?
yopp
db.currentOp() показывает запросы по всем бд ?
Returns a document that contains information on in-progress operations for the mongod instance.
Гена
а как вытащить из этого запроса только время ответа и имя БД?
Гена
и исключить запросы в local
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/currentOp/#pipe._S_currentOp
yopp
$match в помощь :)
yopp
где-то был уже готовый скрипт, который умел поллить currentOp и делать «профайл» запросов
yopp
https://github.com/idealo/mongodb-slow-operations-profiler
kk
Уровень n где-то в настройках задаётся
Гена
Монга пишет запросы дольше n в собственные логи, может вам это поможет
мне нужны клиентские запросы ловить которые долго бегут
Гена
чтоб построить график в заббиксе
Гена
Так там есть запрос в логе
из лога их вытягивать?)
kk
ну, если у вас есть экспортер логов типа прометеуса, то в принципе и вытягивать ничего бы не пришлось) там единственный момент что монга не в json пишет логи, пришлось бы попарсить немного/дописать экспортер
kk
с заббиксом к сож не работал
Гена
у нас нет прометеуса. Это если только парсить лог в баше
Гена
но это костыль) неужели в монге нет запроса который бы вытягивал клиентские запросы дольше некоторого кол-ва сек?)
kk
но это костыль) неужели в монге нет запроса который бы вытягивал клиентские запросы дольше некоторого кол-ва сек?)
знаю только про db.currentOp({secs_running: ...}) + скрипт который постоянно будет поллить, но это выглядит как больший костыль по сравнению с парсингом логов )
Гена
ну вот копаю))
Гена
db.adminCommand({ "currentOp": true, "microsecs_running" : {"$gte" : 300000} }) есть такое
Гена
ну или действительно парсить лог
Гена
чтоб он показывал например бд, команду типа update и время ответа
Гена
ну получается надо как-то заббиксу так сказать, чтоб он парсил лог и вытягивал только значения с временем ответа
Андрей
В конфиге можно настроить трешолд в мсек, выше которого все запросы можно доставать из лога. Но нужно вычитать и парсить лог
Гена
ну да
Гена
другого я способа не вижу
Denis 災 nobody
иначе он сругается, что другие участники rs недоступны, а если добавлять по одному - зачем одно логическое действие делать кучкой операций?
затем, что cfn не умеет так... или нужно разделять стадии "деплой" и "сборка базы". А главное, что нам нужны для сборки нормальные имена, то есть мы должны использовать mongo1, mongo2... а в ASG нет понятия "переменные для нужной ноды", есть только на всю ASG. И как она узнает что она 1 а не 4 например? Бонусом это может быть первый запуск, когда все имена свободны. С именами решили через создание 3 ASG на 1 машину каждый, тогда оно умеет само передеплоиться и включиться в кластер, но если мы обновляем весь стэк - обновлять ноды нужно поштучно и дождавшись полного синка, то есть нужна цепочка DependsOn. И получаем невозможность простого деплоя, нужно смотреть статус кластера и если его нет то вешать триггер "отдать сборку без кластера", а сборку тогда запускать не на 1 машине а на 4. Кстати, вариант, только что придумал...
Гена
Подскажите пожалуйста, как в этом запросе добавить фильтр ns" : не равно "local.oplog.rs"?
Гена
db.currentOp().inprog.forEach( function(op) { if(op.secs_running > 1) printjson(op); } )
Гена
а что такое AF?
yopp
после него вы можете использовать любые стейджи, $match, $group
yopp
aggregation framework
Гена
а понял
Гена
спасибо
yopp
use admin; db.aggregate([{ $currentOp: { … } }])
yopp
https://docs.mongodb.com/manual/reference/operator/aggregation/currentOp/#examples
Гена
чет ничерта не получается... db.getSiblingDB("admin").aggregate([{ $currentOp : { allUsers: true}}, "ns":{$ne : "admin.$cmd.aggregate"}}])
Гена
а можно несколько условий $ne наверсить на "ns"?
yopp
вам нужно использовать $match вторым стейджем
yopp
по примеру: db.getSiblingDB("admin").aggregate( [ { $currentOp : { allUsers: true, idleSessions: true } }, { $match : { type: "idleSession" } } ] ) только вместо type: … вам нужен ns ...