Мне трудно понять некоторые термины, используемые при обсуждении SNMP, и в частности, кто отвечает за MIB — агент или станция управления.
Давайте рассмотрим простой сценарий:
- Я отслеживаю свою машину Linux по известному OID (например, загрузку ЦП)
- Когда я отправляю SNMP-запрос на OID загрузки ЦП, кто обрабатывает запрос — агент или станция управления?
- Если все, что делается, это считывание данных из MIB, какова здесь роль агента?
- У агента есть API синхронизации для get, но если я перехожу напрямую к хранилищу, зачем мне этот get.
Может ли кто-нибудь помочь мне понять этот простой пример CPU OID, что там происходит?
решение1
На самом деле все очень просто.
Агент SNMP работает на машине, которой вы хотите управлять, и может считывать (и, возможно, устанавливать) данные с машины произвольным образом (считывать запись /proc
, взаимодействовать с процессом через IPC, считывать из файла или любым другим методом, который кто-то может придумать). Затем он представляет эти данные в соответствии с одним или несколькими файлами определений, MIB, в хорошо структурированном виде.
Затем станция управления (или SNMP-клиент) может взаимодействовать с агентом для считывания (или установки) данных с агента в соответствии с этой MIB.
Кроме того, некоторые агенты (которые обычно действуют только по запросу станции управления) могут быть настроены на отправку сообщений на станцию управления при выполнении некоторого условия, чтобы информировать ее об этом. Это называется SNMP-ловушкой.
Для примера с ЦП:
- Агент запущен на машине и может считывать системные данные.
- Станция управления является агентом опроса OID загрузки ЦП.
- Агент ищет, как получить данные для этого OID, считывает точку данных (загрузку ЦП) и отправляет ее обратно на станцию управления.