Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

  1. Home
  2. Support (Russian)
  3. Мониторинг срока действия сертификатов в Windows

Мониторинг срока действия сертификатов в Windows

Scheduled Pinned Locked Moved Support (Russian)
19 Posts 5 Posters 40.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • RetifR
    RetifR
    Retif
    wrote on last edited by
    #7

    @zev said in Мониторинг срока действия сертификатов в Windows:

    Сделать threshold (меньше 30-и дней в секндах или наоборот в скрипте трансформации переводить в дни) в DCI (HTTPS.CertificateExpireDate(netxms.org)) со своим кастомным Event и в EPP просисать что на этот Event нужно генерить Alarm с правильным сообщением.

    Вот это как раз мне понятно.

    Я наверно не совсем корректно написал, попробую еще раз.

    1. Про external parameter. Если я правильно понял, в конфиге агента c:\NetXMS\etc\nxagentd.conf я должен прописать строчку с
      ExternalParameter = "что-то"
      Вот синтаксис этого "что-то" я не могу понять. Я честно прочитал в мануале раздел 6.9 несколько раз, но что-то никак не могу уразуметь это, в голове каша какая-то.

    Вот openssl у меня на винде нет, ставить его везде как-то не очень правильно, зато есть повершелл. Я могу запустить скрипт на повершелле, прочитать сертификаты, найти истекший и вернуть что-то. Цифру или строку или еще что-нибудь. Вопрос, как это передать в NetXMS.
    Что-то типа того должно быть?

    ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\Scripts\test.ps1"
    

    Но что-то оттуда передать, из скрипта этого, в NetXMS? Не могу понять.

    1. Допустим, с пунктом 1 я справился, вопрос, как добавить счетчик? Нужно создавать новый параметр?
      Вот при создании нового параметра, в поле "Origin" что я должен выбрать? NetXMS Agent? Или что-то другое?
      Или просто в Parameter прописать имя своего созданного External Parameter? HTTPS.CertificateExpireDate(*) - вот это имя внешнего параметра? Так и писать с этой звездочкой?

    Capture.PNG

    1 Reply Last reply
    0
    • Z
      Z
      Tatjana Dubrovica
      wrote on last edited by
      #8

      Читать нужно тут: https://www.netxms.org/documentation/adminguide/agent-management.html#agent-external-metrics
      Про раздел 6.9 неочень поняла где это.

      В вашем случает вы пишите в основной части агентского конфига:
      ExternalParameter = HTTPS.CertificateExpireDate: powershell.exe -file "\\Scripts\test.ps1"

      Без звёздочки так как параметры вы не подаёте. Перезапускаете агент, делаете Configuration poll и дальше метрикак "HTTPS.CertificateExpireDate"  доблжна быть доступна на этой ноде просто среди других метрик под "Select..."

      "Origin" -> "NetXMS Agent"

      1 Reply Last reply
      0
      • RetifR
        RetifR
        Retif
        wrote on last edited by
        #9

        @zev said in Мониторинг срока действия сертификатов в Windows:

        Читать нужно тут: https://www.netxms.org/documentation/adminguide/agent-management.html#agent-external-metrics
        Про раздел 6.9 неочень поняла где это.

        Это он и есть, просто в pdf-ном варианте.

        @zev said in Мониторинг срока действия сертификатов в Windows:

        В вашем случает вы пишите в основной части агентского конфига:
        ExternalParameter = HTTPS.CertificateExpireDate: powershell.exe -file "\\Scripts\test.ps1"

        А своим скриптом test.ps1 я просто возвращаю одну цифру? А если сертификатов несколько?

        1 Reply Last reply
        0
        • V
          V
          Victor Kirhenshtein
          wrote on last edited by
          #10

          Можно сертификат передавать как параметр:

          ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\Scripts\test.ps1" -cert "$1"
          

          и в скрипте имя сертификата получать из переменной.

          На стороне сервера будет что-то вроде

          HTTPS.CertificateExpireDate(cert1)

          1 Reply Last reply
          0
          • F
            F
            filimonic
            wrote on last edited by
            #11

            Спасибо.
            Получилось сделать вот такой мониторинг: Выбрать все сертификаты в хранилище ОС (LocalMachine\My), выбрать среди них тот, которых протухает ближе всего, выдать мониторингу цифру "дней до истечения сертификата".
            Недостатком является то, что я не вижу, какой именно сертификат протухает.

            Что бы хотелось:
            Хотелось бы получить информацию по каждому сертификату отдельно,при этом NetXMS не должен ничего заранее знать о конкретных сертификатах, он должен получить наименования сертификатов при опросе агента.

            Я предположил что это можно сделать с помощью ExternalTable. Верно ли?
            Вывод скрипта, судя по инструкции, должен быть таким:

            CertificateName|CertificateTTLDays
            *.site111.com|200
            *.site222.com|120
            _ALL_CERTS_|120
            

            И ожидаю что в NetXMS будут видны все сертификаты для конкретного сервера.

            К сожалению из документации строка ExternalTable совершенно мне не понятна

            ExternalTable=dciName:instanceColumns=columnName;description=description;separator=|:command
            

            А "живых" примеров использования у меня найти не получилось.
            Что в этой строке есть что - вообще не понятно. Прошу как-то помочь.

            Спасибо за вашу работу.

            1 Reply Last reply
            0
            • V
              V
              Victor Kirhenshtein
              wrote on last edited by
              #12

              В ExternalTable идет три поля, разделенных : - имя таблицы, параметры, и команда. Параметры разделяются ; и могут быть такими:

              separator= символ - разделитель, по умолчанию запятая.
              instanceColumns= колонка/колонки в которых содержится уникальный идентификатор для строки.
              description= описание таблицы.

              Второй вариант - это использовать instance discovery. Тогда остается параметр для получения срока действия сертификата, и делается ExternalList который выдает список всех сертификатов в системе, и используется для instance discovery. Тогда для каждого сертификата будет создан отдельный DCI, на котором уже могут быть трешолды как обычно.

              1 Reply Last reply
              0
              • RetifR
                RetifR
                Retif
                wrote on last edited by
                #13

                @victor said in Мониторинг срока действия сертификатов в Windows:

                Второй вариант - это использовать instance discovery. Тогда остается параметр для получения срока действия сертификата, и делается ExternalList который выдает список всех сертификатов в системе, и используется для instance discovery. Тогда для каждого сертификата будет создан отдельный DCI, на котором уже могут быть трешолды как обычно.

                Вот этот вариант мне нравится. Только полностью разобраться не могу что-то все равно.

                Что я хочу. Чтобы эти отдельные DCI создались с именем (Description?), в котором будет присутствовать имя сертификата (например friendly name). Ну а значением будет количество дней, то же самое, что сейчас скриптом отдается. И дальше уже всё как с ExternalParameter.

                Реализация не очень понятна.

                1. Я создаю параметр CertificateExpireDate, в нем указываю в качестве параметра HTTPS.CertificateExpireDate(*) со звездочкой в скобках - это значит с инстансами?

                2. На вкладке Instance Discovery я выбираю в качестве метода Agent List? А в List Name что писать, HTTPS.CertificateExpireDate?

                3. В конфиге агента, я вместо

                ExternalParameter = HTTPS.CertificateExpireDate: powershell.exe -file "\\server\Scripts\test.ps1"
                

                пишу

                ExternalList = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\server\Scripts\test.ps1"
                
                1. А в скрипте... тут не очень понятно. Я получаю все имена сертификатов и для каждого количество дней. А как возвращать это для NetXMS, чтобы оно преобразовалось в  имена и значения этих DCI?

                З.Ы.  И можно какой-нибудь живой пример не для сертификатов, а для чего угодно с этими инстансами и ExternalList?

                1 Reply Last reply
                0
                • V
                  V
                  Victor Kirhenshtein
                  wrote on last edited by
                  #14

                  Здесь понадобится два скрипта. Делается примерно так:

                  1. Делаем список HTTPS.Certificates
                  ExternalList = HTTPS.Certificates:script1.cmd
                  

                  Скрипт должен выдавать список сертификатов, каждый в своей строчке.

                  1. Изменяем параметр HTTPS.CertificateExpireDate чтобы он принимал имя сертификата:
                  ExternalParameter = HTTPS.CertificateExpireDate(*): powershell.exe -file "\\server\Scripts\test.ps1" -certname $1
                  

                  Насколько я знаю power shell можно будет в скрипте получить имя сертификата в переменной certname. Дальше в скрипте все как сейчас.

                  1. Делаем DCI на сервере:
                    Параметр
                  HTTPS.CertificateExpireDate({instance})
                  

                  Instance discovery method: agent list
                  Имя списка: HTTPS.Certificates

                  1 Reply Last reply
                  0
                  • RetifR
                    RetifR
                    Retif
                    wrote on last edited by
                    #15

                    Супер, всё получилось! Спасибо! Я почему-то думал, что ExternalList, он вместо ExternalParameter, а они вместе, оказывается.

                    Как-то так вышло:

                    Пара вопросов возникла еще:

                    1. Сейчас ExternalList отвечает в формате "(Название) - (Идентификатор)", соответственно, в ExternalParameter этот текст передается в таком же виде и в интерфейсе отображается в таком же виде.
                      Это неудобно визуально, потому что идентификатор (THUMBPRINT) большой и бесполезный для отображения.
                      Можно ли как-то через ExternalList получить отдельно две части - название и идентификатор, в ExternalParameter передавать только идентификатор, а отображать только название?

                    2. Нужно изменить конфиг агента на группе серверов. Не для всех, а только для каких-то, например для находящихся в контейнере. Для этого нужно использовать Agent configuration policy? Прочитал документацию про это, но что-то не понял, можно ли сделать на группу серверов. Или правильней для всех серверов одинаковый мастер-конфиг с netxms подтягивать, просто не использовать потом, что не нужно?

                    3. В макросах для Event Processing не смог получить количество дней, которое выдается в Value DCI-инстанса. %<currentValue> и %<dciValue> что-то пустоту выдают.


                    Capture.PNG

                    1 Reply Last reply
                    0
                    • RetifR
                      RetifR
                      Retif
                      wrote on last edited by
                      #16

                      Ап...

                      1 Reply Last reply
                      0
                      • V
                        V
                        Victor Kirhenshtein
                        wrote on last edited by
                        #17

                        @retif said in Мониторинг срока действия сертификатов в Windows:

                        1. Сейчас ExternalList отвечает в формате "(Название) - (Идентификатор)", соответственно, в ExternalParameter этот текст передается в таком же виде и в интерфейсе отображается в таком же виде.
                          Это неудобно визуально, потому что идентификатор (THUMBPRINT) большой и бесполезный для отображения.
                          Можно ли как-то через ExternalList получить отдельно две части - название и идентификатор, в ExternalParameter передавать только идентификатор, а отображать только название?

                        Можно использовать instance discovery filter - там можно вернуть отдельно значение instance и отдельно instance name, например так:

                        instance = $1;
                        if (instance ~= "(.*) - (.*)")
                        {
                           return %(true, instance, $1);
                        }
                        return true;
                        

                        и в поле description для DCI использовать {instance-name} вместо {instance}.

                        @retif said in Мониторинг срока действия сертификатов в Windows:

                        1. Нужно изменить конфиг агента на группе серверов. Не для всех, а только для каких-то, например для находящихся в контейнере. Для этого нужно использовать Agent configuration policy? Прочитал документацию про это, но что-то не понял, можно ли сделать на группу серверов. Или правильней для всех серверов одинаковый мастер-конфиг с netxms подтягивать, просто не использовать потом, что не нужно?

                        Да, можно использовать политику и наложить на несколько серверов. Как вариант - использовать функцию автоматического наложения, по аналогии с шаблонами.

                        @retif said in Мониторинг срока действия сертификатов в Windows:

                        1. В макросах для Event Processing не смог получить количество дней, которое выдается в Value DCI-инстанса. %<currentValue> и %<dciValue> что-то пустоту выдают.

                        Это при обработке события по срабатыванию threshold?

                        1 Reply Last reply
                        0
                        • RetifR
                          RetifR
                          Retif
                          wrote on last edited by
                          #18

                          @victor said in Мониторинг срока действия сертификатов в Windows:

                          Это при обработке события по срабатыванию threshold?

                          Да, именно.

                          @victor said in Мониторинг срока действия сертификатов в Windows:

                          Можно использовать instance discovery filter - там можно вернуть отдельно значение instance и отдельно instance name, например так:

                          instance = $1;
                          if (instance ~= "(.*) - (.*)")
                          {
                             return %(true, instance, $1);
                          }
                          return true;
                          

                          и в поле description для DCI использовать {instance-name} вместо {instance}.

                          Да, так всё получилось, спасибо 🙂

                          1 Reply Last reply
                          0
                          • RetifR
                            RetifR
                            Retif
                            wrote on last edited by
                            #19

                            По результатам темы написал статью на хабр: https://habr.com/ru/post/460193/

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            Powered by NodeBB Contributors
                            • First post
                              Last post
                            0
                            • Categories
                            • Recent
                            • Tags
                            • Popular
                            • Users
                            • Groups