• 3 Posts
  • 13 Comments
Joined 2 months ago
cake
Cake day: December 28th, 2025

help-circle
  • I love grafana, but it’s a resource hog, and my machine isn’t powerful. Prometheus/node_exporter however is as lightweight as it can get.

    So I made a little Python script that fetches the data from Prometheus and uses mathplotlib to generate a graph.

    The dashboard calls that python script for every configured graph and embeds the image so it looks nice.

    You can find the script in one of my other repos (Prometheus-renderer probably), but there are dozen similar ones: search github for Prometheus renderer and you’ll see

    If there are other things unclear, please don’t hesitate to ask





  • Couldn’t stop worrying about this, so I added:

    • --no-tooltips param: Don’t include check output for hover tooltips
    • --no-timestamp param: Omit the “Generated at” timestamp to hide system clock and monitoring cadence.

    If you’re using these, I feel much better about making the html publicly accessible, but when you set up a config please remember that links-tags can expose your internal topology and the tile/slot name might do the same! Don’t go naming your tiles something like “Database Primary”, “Payment Service Worker”, or “Internal Auth API”!

    (unless you wanna place a honeypot)



  • Loved that idea so much that I went and implemented it:

    • The checks now have an automatic type inferrence and shorthand
    • introduced default rules that are used when nothing’s configured
    • realized that yaml-anchors always worked thanks to the lib I’m using.

    So now with this preamble:

    # Defaults are used when nothing is defined at the slot level. They can be overridden by defining rules directly on a slot.  
    defaults:  
      rules:  
        - match:  
            code: 0  
          status: { id: ok, label: "✅" }  
        - match: {}  
          status: { id: error, label: "❌" }  
    
    # YAML anchors: reusable fragments ilias doesn't interpret directly... 
    # it's all just yaml  
    _anchors:  
      pct_rules: &pct_rules           # works for disk, memory, CPU …  
        - match:  
            output: "^[0-6]\\d%$|^[0-9]%$"  
          status: { id: ok, label: "✅ <70%" }  
        - match:  
            output: "^[7-8]\\d%$"  
          status: { id: warn, label: "⚠️ 70–89%" }  
        - match: {}  
          status: { id: critical, label: "🔴 ≥90%" }  
    

    I can now have a tile like this:

          - name: Memory  
            slots: # combine anchors and default rules as well as check shorthands  
              - name: usage  
                check: "free | awk '/^Mem:/ {printf \"%.0f%\", $3/$2 * 100}'"  
                rules: *pct_rules  
              - name: available  
                check: "free -h | awk '/^Mem:/ {print $7 \" free\"}'"  
                # uses default rules  
              - name: total  
                check: "free -h | awk '/^Mem:/ {print $2 \" total\"}'"  
                # uses default rules  
    

    And the best? It’s fully backwards compatible ❤️

    Thanks again for the suggestion!




  • Awesome, thanks for the consideration!

    Please don’t immediately start public facing however - I literally just bashed the thing together in an afternoon, so who knows what kind of exploitable information leaks it might bring!

    I’m personally using it from within a tailnet, so not public facing.


    Edit:
    I have since added:

    • --no-tooltips param: Don’t include check output for hover tooltips
    • --no-timestamp param: Omit the “Generated at” timestamp to hide system clock and monitoring cadence.

    If you’re using these, I feel much better about making the html publicly accessible, but when you set up a config please remember that link-tags can expose your internal topology and the tile/slot name might do the same! Don’t go naming your tiles something like “Database Primary”, “Payment Service Worker”, or “Internal Auth API”!







  • halfdane@piefed.socialtoOpen Source@lemmy.mlDigital Independence Day
    link
    fedilink
    English
    arrow-up
    7
    ·
    edit-2
    2 months ago

    Hier mein Versuch einer Übersetzung:

    Make the switch to the good side every first Sunday!

    Our digital lives are controlled by a few over-wealthy individuals. Through their corporate monopolies, people like Elon Musk, Jeff Bezos, and Mark Zuckerberg dictate worldwide how we access information online, how we discuss issues, communicate, or act. No individual or corporation should wield such unchecked influence, because under those conditions we can no longer live in freedom.

    #DIDit