Я хочу создать сценарий мониторинга, который отправляет мне оповещения о медленных запросах.
Поэтому я хочу получить данные профиля программно. Я думаю, я мог бы сделать это с PHP, подключившись к MongoDB (хотя не уверен).
Но было бы лучше, если бы я мог получить доступ к профилировщику непосредственно из сценария bash. Это возможно?
Помимо запуска js файлов напрямую или подключения к драйверу, вы также можете напрямую запрашивать mongodb из bash с curl/wget. Все, что вам нужно, это запустить ваш сервер с помощью --rest
mongod --rest
Если ваш сервер прослушивает 27017, добавьте 1000, чтобы получить порт http (в данном случае 28017). Страница, которую вы получаете, - это страница администратора. Здесь вы можете делать базовые запросы:
$ curl -i http://localhost:28017/<dbName>/<collectionName>/
т.е.
$ curl http://localhost:28001/test/foo/?filter_str=Hello
{
"offset" : 0,
"rows": [
{ "_id" : { "$oid" : "50ab8a10df015a6dd00a44a7" }, "str" : "Hello" } ,
{ "_id" : { "$oid" : "50ab8a14df015a6dd00a44a8" }, "str" : "Hello", "x" : 1 }
],
"total_rows" : 2 ,
"query" : { "str" : "Hello" } ,
"millis" : 0
}
Консоль Mongo предоставляет сценарийный режим, который можно встроить в сценарий bash. Более подробную информацию и использование см. на следующей странице: Сценарии оболочки MongoDB
Если вы хотите использовать PHP и напрямую подключаться, PHP находится в списке поддерживаемых MongoDB драйверов и предоставит вам лучший интерфейс, а затем скрипт mongo. Для получения дополнительной информации см. Следующие сведения: Драйверы MongoDB
db.system.profile
и обработать его, но на самом деле; это легче в чем-то вроде PHP и, вероятно, намного лучше с точки зрения использования и интерфейса. Однако большинство используют питона или что-то еще.