Ilya
Ilya
Ilya
почему он так странно выдает результат?
Roman
Что значит странно? Он требует обновить результат
Ilya
Ilya
Ilya
видимо я что-то не так делаю:)
Roman
Может дело в формате даты?
Попробуйте даты так в запросе писать
ISODate("2020-07-02T13:12:56.709+0000")
Андрей
Товарищи, есть у кого-то наработанные бест практики или ссылки на таковые по мульти дц деплою реплик? Географически удаленные дц.
Roman
Roman
не робит шо делать?
Roman
Nick
читайте ошибку - неправильный размер сообщения, ищите где вы чтото большое пытаетесь прочитать/загрузить
Roman
Roman
это все что я сделал
Roman
запуск через node js express
Roman
там все как в доке 1 к1
Nick
запрос к базе делаете?
Nick
или только этот код?
Roman
только этот
Roman
если делать запрос, то все виснет немертво
Daniil
это все что я сделал
Ну видимо не все, потому что в этом куске кода нет никакого использования монги
Daniil
А судя по стектрейсу где то все же оно имеется
Roman
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. Кто может подсказать как организовать подгрузку новых непрочитанных сообщений по аналогии с телеграмм , спасибо
Araik
Гена
Всем привет
Хочу настроить мониторинг долгих запросов, но никак не могу придумать как это реализовать.
По сути получается надо чтоб в каждой бд экземпляра пробегал запрос который будет показывать время ответа запроса или просто запросы дольше n-секунд
Гена
db.currentOp() показывает запросы по всем бд ?
Гена
а как вытащить из этого запроса только время ответа и имя БД?
Гена
и исключить запросы в 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
kk
Уровень n где-то в настройках задаётся
Гена
Гена
чтоб построить график в заббиксе
kk
Гена
kk
ну, если у вас есть экспортер логов типа прометеуса, то в принципе и вытягивать ничего бы не пришлось) там единственный момент что монга не в json пишет логи, пришлось бы попарсить немного/дописать экспортер
kk
с заббиксом к сож не работал
Гена
у нас нет прометеуса. Это если только парсить лог в баше
Гена
но это костыль) неужели в монге нет запроса который бы вытягивал клиентские запросы дольше некоторого кол-ва сек?)
Гена
ну вот копаю))
Гена
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);
}
)
yopp
Гена
а что такое 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 ...