Extensions
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Custom extensions creator

NicoleMT
Organizer

Hello,
I would like to add new metrics to the existing Informix extension.

I noticed that Dynatrace provides an Extension Creator app, and I would like to use it for this purpose. However, I have a few questions and would appreciate your guidance:

  • Is it recommended to add the new metrics to the existing Informix extension, or is it better to create a new extension?

  • If a new extension is created, how would both extensions work together?

  • Are there any best practices or limitations I should be aware of in this scenario?

Best regards

5 REPLIES 5

AntonioSousa
DynaMight Guru
DynaMight Guru

@NicoleMT ,

If you want to clone a Dynatrace extension, you have to create a new extension. It will have a different name, but it can have the same metrics, but with different data/periods/dimensions. Beware that there are some gotchas, some of which have not been discussed publicly...

Both extensions can then work together, and I have several cases where it happens. But you should be careful to not replicate data, is it certainly is not in your interest. This is valid for all types of extensions, including the python ones.

There are some limitations, as I hinted above. One example: if you distribute a classic dashboard and aren't careful, you'll end up with two exact the same dashboards, and if you don't tweak them, you might not be able to get rid of them as you are not able to do that with Dynatrace dashboards. 

Antonio Sousa

Julius_Loman
DynaMight Legend
DynaMight Legend

Could not agree more with @AntonioSousa . I'd not recommend cloning the extension, but instread just create your own extension that will get the data you don't have and you will run both.

But I also had one case to "clone" the Postgres as it performs queries which fail on particular Postgres versions and those queries throw error messages into the Postgres log, which, unsurprisingly, the DBA does not like. I cloned the extension, fixed the errors by reorganising featureSets. However, you can't build the exact same version, so I kept the Dynatrace original version installed (unconfigured), and my version does not include any topology/dashboards/alerts/ or metadata. It just scrapes the metrics instead of the original one. So it does not collide at all.

Dynatrace Ambassador | Alanata a.s., Slovakia, Dynatrace Master Partner

Hello, thank you very much for the information. I like the idea of just using the query. Do you have an example of how you did it, please? Also, can I do this with the Custom Extension Creator?

@NicoleMT Yes, certainly you can do that using the Custom Extension Creator, although I don't use it. I prefer vscode + Dynatrace VSCode plugin for developing extensions.

You choose to build a new one, with JDBC as the source and you edit the yaml:

Julius_Loman_0-1766093666068.png

This is quite straightforward. You then need to sign it with your certificate, which also needs to be uploaded to the ActiveGates, which will run the extension, so it's trusted.

Here is the reference for SQL data source: https://docs.dynatrace.com/docs/shortlink/sql-reference

But I'll highly recommend watching this video first if you are new to extension "development" https://www.youtube.com/watch?v=t9kHPKL9yKY 

Dynatrace Ambassador | Alanata a.s., Slovakia, Dynatrace Master Partner

Hi, thank you for the information.

I followed the videos and the documentation and, based on what you shared, I tried to build the YAML configuration. This is the result I obtained. Could you please help me verify whether it is correct?

Additionally, I have the following question: is there any potential performance impact on the database when executing this query? If so, what timeout value would you recommend configuring?

I would really appreciate your help.

The query is the following:

jdbc:
  - group: Informix Fragment Usage
    featureSet: database
    timeout: "30"
    query: >      SELECT
        t.tabname as table_name,
        f.partition as fragment_name,
        p.npused as used_pages,
        TRUNC(p.npused/16775134 * 100) as used_percent
      FROM systables t
      JOIN sysfragments f ON t.tabid = f.tabid
      JOIN sysptnhdr p ON f.partn = p.partnum
      WHERE t.tabname NOT LIKE '%_old'
        AND f.partition LIKE CONCAT(var:fragment_prefix, '%')
        AND SUBSTRING(f.partition FROM 6 FOR 11) = TO_CHAR(TODAY, '%Y%m')
      ORDER BY used_percent DESC
    
    dimensions:
      - key: table
        value: col:table_name
      - key: fragment
        value: col:fragment_name
    
    metrics:
      - key: com.empresa.informix.fragment.used_pages
        value: col:used_pages
        type: gauge
        metadata:
          displayName: Used Pages
          unit: Count
      
      - key: com.empresa.informix.fragment.used_percent
        value: col:used_percent
        type: gauge
        metadata:
          displayName: Used Percent
          unit: Percent

 

Featured Posts