Node.js е популярна платформа за изпълнение за създаване на програми, които работят върху нея.
Позволява ни да стартираме JavaScript извън браузъра.
В тази статия ще разгледаме как да започнете да използвате Node.js за създаване на програми.
Мониторинг с MongoDB
Можем да наблюдаваме дейностите на MongoDB, като слушаме събитията, които излъчва.
Например, можем да напишем:
const { MongoClient } = require('mongodb'); const connection = "mongodb://localhost:27017"; const client = new MongoClient(connection); const eventName = "serverDescriptionChanged"; client.on(eventName, event => { console.log(`received ${eventName}: ${JSON.stringify(event, null, 2)}`); }); async function run() { try { await client.connect(); const db = client.db("test"); db.dropCollection('test'); const testCollection = await db.collection('test'); const result = await testCollection.insertMany([ { "_id": 1, "name": "apples", "qty": 5, "rating": 3 }, { "_id": 2, "name": "apples", "qty": 7, "rating": 1 }, { "_id": 3, "name": "oranges", "qty": 6, "rating": 2 }, { "_id": 4, "name": "avocados", "qty": 3, "rating": 5 }, ]); console.log(result) const cursor = await testCollection.find(); cursor.forEach(console.dir); } finally { await client.close(); } } run().catch(console.dir);
за да следите за serverDescriptionChanged
събития и да регистрирате данните за събитието.
Тогава получаваме нещо като:
received serverDescriptionChanged: { "address": "localhost:27017", "previousDescription": { "address": "localhost:27017", "arbiters": [], "hosts": [], "passives": [], "type": "Unknown" }, "newDescription": { "address": "localhost:27017", "arbiters": [], "hosts": [], "passives": [], "type": "Standalone" } }
влезли в конзолата.
Други събития включват:
serverOpening
— Излъчва се, когато се отвори връзка с екземпляр.serverClosed
— Излъчва се при затваряне на връзка с екземпляр.serverDescriptionChanged
— Излъчва се при промяна на състоянието на екземплярtopologyOpening
— Излъчва се преди опит за свързване към екземпляр.topologyClosed
— Излъчва се след затваряне на всички връзки на екземпляр в топологията.topologyDescriptionChanged
— Излъчва се при промяна на топологията, като избор на нов основен или прекъсване на връзката с mongos прокси.serverHeartbeatStarted
— Излъчено преди подаване на командаisMaster
към екземпляр на MongoDB.serverHeartbeatSucceeded
— Излъчва се, когато командатаisMaster
се върне успешно от екземпляр на MongoDB.serverHeartbeatFailed
— Създава се, когато командаisMaster
, издадена на конкретен екземпляр на MongoDB, не успее да върне успешен отговор
Полето type
на обекта ServerDescription
е събитието, което има една от следните стойности:
Unknown
— Неизвестен случайStandalone
— Самостоятелен екземплярMongos
Mongos прокси екземплярPossiblePrimary
— Поне един сървър разпознава това като основен, но все още не е проверен от всички инстанции.RSPrimary
— Първичен екземплярRSSecondary
— Вторичен екземплярRSArbiter
— Екземпляр на арбитърRSOther
RSGhost
Събитието topologyDescriptionChanged
има поле type
в обекта TopologyDescription
, което може да бъде една от следните стойности:
Single
— Самостоятелен екземплярReplicaSetWithPrimary
— Комплект реплики с основенReplicaSetNoPrimary
— Комплект реплики без основенSharded
— Разделен клъстерUnknown
— Неизвестна топология
Заключение
Можем да наблюдаваме събития с клиента MongoDB Node.js, за да извършваме мониторинг.