Infrastructure Integration

Configuration

  1. Configure the agent by editing /etc/netsil-dd-agent/conf.d/wmi_check.yamlin the collectors. Example:

    init_config:
    
    instances:
      # Each WMI query has 2 required options, `class` and `metrics` and six
      # optional options, `host`, `namespace`, `filters`, `tag_by`, `constant_tags` and `tag_queries`.
      #
      # `host` is the optional target of the WMI query, `localhost` is assumed by default
      # if you set this option, make sure that Remote Management is enabled on the target host
      # see https://technet.microsoft.com/en-us/library/Hh921475.aspx for more information
      #
      # `class` is the name of the WMI class, for example Win32_OperatingSystem
      # or Win32_PerfFormattedData_PerfProc_Process. You can find many of the
      # standard class names on the MSDN docs at
      # http://msdn.microsoft.com/en-us/library/windows/desktop/aa394084.aspx.
      # The Win32_FormattedData_* classes provide many useful performance counters
      # by default.
      #
      # `namespace` is the optionnal WMI namespace to connect to (default to `cimv2`).
      # `provider` is the optional WMI provider (default to `32` on dd-agent Agent 32-bit or `64`).
      # It is used to request WMI data from the non-default provider. Available options are: `32` or `64`.
      # For more information: https://msdn.microsoft.com/en-us/library/aa393067(v=vs.85).aspx
      #
      # `metrics` is a list of metrics you want to capture, with each item in the
      # list being a set of [WMI property name, metric name, metric type].
      #
      # - The property name is something like `NumberOfUsers` or `ThreadCount`.
      #   The standard properties are also available on the MSDN docs for each
      #   class.
      #
      # - The metric name is the name you want to show.
      #
      # - The metric type is from the standard choices for all agent checks, such
      #   as gauge, rate, histogram or counter.
      #
      # `filters` is a list of filters on the WMI query you may want. For example,
      # for a process-based WMI class you may want metrics for only certain
      # processes running on your machine, so you could add a filter for each
      # process name. You can also use the '%' character as a wildcard.
      # See below for examples.
      #
      # `tag_by` optionally lets you tag each metric with a property from the
      # WMI class you're using. This is only useful when you will have multiple
      # values for your WMI query. The examples below show how you can tag your
      # process metrics with the process name (giving a tag of "name:app_name").
      #
      # `constant_tags` optionally lets you tag each metric with a set of fixed values.
      #
      # `tag_queries` optionally lets you specify a list of queries, to tag metrics
      # with a target class property. Each item in the list is a set of
      # [link source property, target class, link target class property, target property]
      # where:
      #
      # - 'link source property' contains the link value
      #
      # - 'target class' is the class to link to
      #
      # - 'link target class property' is the target class property to link to
      #
      # - 'target property' contains the value to tag with
      #
      # It translates to a WMI query:
      # SELECT 'target property' FROM 'target class'
      #                 WHERE 'link target class property' = 'link source property'
      #
      # Note: setting this will cause any instance number to be removed from tag_by values
      # i.e. name:process#1 => name:process
      #
      # This feature is available starting with version 5.3 of the agent
    
      # Fetch the number of processes and users.
      - class: Win32_OperatingSystem
        metrics:
          - [NumberOfProcesses, system.proc.count, gauge]
          - [NumberOfUsers, system.users.count, gauge]
    
      # Fetch metrics for a single running application, called myapp, tagging with 'role:test'.
      - class: Win32_PerfFormattedData_PerfProc_Process
        metrics:
          - [ThreadCount, my_app.threads.count, gauge]
          - [VirtualBytes, my_app.mem.virtual, gauge]
        filters:
          - Name: myapp
        constant_tags:
          - 'role:test'
    
      # Fetch process metrics for a set of processes, tagging by app name.
      - class: Win32_PerfFormattedData_PerfProc_Process
        metrics:
          - [ThreadCount, proc.threads.count, gauge]
          - [VirtualBytes, proc.mem.virtual, gauge]
          - [PercentProcessorTime, proc.cpu_pct, gauge]
        filters:
          - Name: app1
          - Name: app2
          - Name: app3
        tag_by: Name
    
      # Fetch process metrics for a set of processes, tagging by app name, and command line params.
      - class: Win32_PerfFormattedData_PerfProc_Process
        metrics:
          - [IOReadBytesPerSec, proc.io.bytes_read, gauge]
        filters:
          - Name: 'app%'
        tag_by: Name
        tag_queries:
          - [IDProcess, Win32_Process, Handle, CommandLine]
    
  2. Check and make sure that all yaml files are valid with following command:

    /etc/init.d/netsil-collectors configcheck
    
  3. Restart the Agent using the following command:

    /etc/init.d/netsil-collectors restart
    
  4. Execute the info command to verify that the integration check has passed:

    /etc/init.d/netsil-collectors info
    

The output of the command should contain a section similar to the following:

    Checks
    ======

      [...]

      wmi
      ---
          - instance #0 [OK]
          - Collected 8 metrics & 0 events