• Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login
Netgate Discussion Forum
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Search
  • Register
  • Login

Grafana Dashboard using Telegraf with additional plugins

Scheduled Pinned Locked Moved pfSense Packages
173 Posts 28 Posters 70.7k Views
Loading More Posts
  • 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.
  • S
    SeaMonkey @VictorRobellini
    last edited by SeaMonkey Jun 19, 2021, 6:00 PM Jun 19, 2021, 5:59 PM

    @victorrobellini The mac addresses are there, I've just censored the last three hex pairs for the sake of privacy. Same for the WAN IP. There's nothing wrong with the influx data, and as I mentioned previously, I was able to fix the problem by moving the value mappings under the Field tab to the Overrides tab in order to explicitly apply them to the Status field - which it sounds like you've implemented in the latest update.

    1 Reply Last reply Reply Quote 1
    • W
      wrightsonm @VictorRobellini
      last edited by Jul 14, 2021, 7:12 PM

      @victorrobellini I've done a bit of investigation into the Series Cardinality of the database.

      We changed the ip_block_log grok pattern to tag more fields. As a result the cardinality of the database increased significantly. The downside to this is querying the database to show the new pfBlocker detail section became very RAM intensive. I was using > 20GB RAM in influxdb to display the last 10mins on the grafana dashboard. I had an OOM Out of Memory issue that crashed my Docker VM, so at this point I dropped the entire measurement and influx memory memory usage looked much happier again.

      After 2 days of collecting new pfblocker data, I looked at the Cardinality of the database using this query (I am using Influx 2.0.4):

      import "influxdata/influxdb/v1"
      cardinalityByTag = (bucket) =>
      v1.tagKeys(bucket: bucket)
      |> map(fn: (r) => ({
      tag: r._value,
      _value: if contains(set: ["_stop","_start"], value:r._value) then
      0
      else
      (v1.tagValues(bucket: bucket, tag: r._value)
      |> count()
      |> findRecord(fn: (key) => true, idx: 0))._value
      }))
      |> group(columns:["tag"])
      |> sum()
      |> keep(columns: ["tag","_value"])
      cardinalityByTag(bucket: "pfsense")
      

      (Whilst Influx 2 does have a cardinality function, it is only currently available in the Cloud variant, not the OSS variant....
      The above function does the job though)

      Cardinality was 34540! Influx is currently using 6GB RAM at this level.
      Breaking this down it is attributed to:

      • src_port: 15780
      • dest_port:10603
      • src_ip:7980
      • other metrics (not many)

      I have now changed my telegraf config to tag less stuff. For now i've untagged src_ip, dest_ip, src_port, dest_port

      grok_patterns = ["^%{SYSLOGTIMESTAMP:timestamp:ts-syslog},%{NUMBER:rulenum},%{DATA:interface},%{WORD:friendlyname},%{WORD:action},%{NUMBER:ip_version},%{NUMBER:protocolid},%{DATA:protocol:tag},%{IPORHOST:src_ip},%{IPORHOST:dest_ip},%{WORD:src_port},%{NUMBER:dest_port},%{WORD:direction},%{WORD:geoip_code:tag},%{DATA:ip_alias_name},%{DATA:ip_evaluated},%{DATA:feed_name:tag},%{HOSTNAME:resolvedhostname},%{GREEDYDATA:clienthostname},%{GREEDYDATA:ASN},%{GREEDYDATA:duplicateeventstatus}"]
      

      The next step is to look into rewriting the dashboard to perform the required grouping and aggregation.

      I've started with this table:
      IP - Top 10 Blocked - IN (By Host/Port)

      Original query:

      SELECT TOP("blocked",10),src_ip,dest_ip, protocol FROM
      (
      SELECT count("action") as "blocked" FROM "autogen"."tail_ip_block_log" WHERE ("host" =~ /^$Host$/ AND "action" = 'block' AND "direction" = 'in' ) AND $timeFilter GROUP BY src_ip,dest_ip,protocol
      )
      

      New V2 Query using Flux:

      from(bucket: "pfsense")
        |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
        |> filter(fn: (r) => r["_measurement"] == "tail_ip_block_log")
        |> filter(fn: (r) => r["_field"] == "src_ip" or r["_field"] == "dest_ip" or r["_field"] == "dest_port" or r["_field"] == "action" or r["_field"] == "direction" or r["_field"] == "protocolid" or r["_field"] == "host")
        |> pivot(rowKey:["_time"], columnKey: ["_field"], valueColumn: "_value")
        |> filter(fn: (r) => r.host =~ /^.*$/ and r.action == "block" and r.direction == "in" and r.protocolid =~ /^(6$|17$)/)
        |> group(columns:["src_ip","dest_ip","dest_port"])
        |> rename(columns:{action: "Blocked"})
        |> count(column: "Blocked")
        
        |> group()  //use group to ungroup data and return to a single table
        |> top(n:10, columns: ["Blocked"])  
        |> sort(columns: ["Blocked"], desc: true)
        |> yield()
      

      This is as far as I have got for the time being.
      Thought I would share this before I got too far into updating the dashboard.
      I suspect I won't get a good view of performance imrpovement until I've redone all of the pfBlocker Details section.
      Also raising this now as it involves an update from Influx v1 to v2 to support the flux language.
      Once you get used to flux, it is really quite powerful.
      The old influxql language can still be used with v2, they are backwards compatible.

      You thoughts & opinions are appreciated.

      B 1 Reply Last reply Mar 25, 2022, 8:50 PM Reply Quote 0
      • B
        bigjohns97 @wrightsonm
        last edited by Mar 25, 2022, 8:50 PM

        Is anyone else noticing some broken pfblocker panels with the latest pfblocker update?

        Looks like the $timefilter seems to make the panel show no data for some reason, I tried messing with it with no success outside of removing the time filter all together which isn't really a usable solution.

        W 1 Reply Last reply Mar 26, 2022, 8:38 AM Reply Quote 0
        • W
          wrightsonm @bigjohns97
          last edited by Mar 26, 2022, 8:38 AM

          @bigjohns97 is this pfsense v2.6?
          I think some logging was broken and there is a patch that you can apply. Can't remember where I read it, it might be an issue on the GitHub issues for the grafana dashboard.

          I haven't upgraded yet and am waiting for the next official release.

          W B 2 Replies Last reply Mar 26, 2022, 9:51 AM Reply Quote 0
          • W
            wrightsonm @wrightsonm
            last edited by wrightsonm Mar 26, 2022, 9:52 AM Mar 26, 2022, 9:51 AM

            @wrightsonm
            https://github.com/VictorRobellini/pfSense-Dashboard/issues/58

            1 Reply Last reply Reply Quote 0
            • B
              bigjohns97 @wrightsonm
              last edited by Mar 26, 2022, 2:23 PM

              @wrightsonm said in Grafana Dashboard using Telegraf with additional plugins:

              @bigjohns97 is this pfsense v2.6?
              I think some logging was broken and there is a patch that you can apply. Can't remember where I read it, it might be an issue on the GitHub issues for the grafana dashboard.

              I haven't upgraded yet and am waiting for the next official release.

              I remember applying this patch when 2.6 came out so I didn't think it was the same but it turns out the newest update to pfblocker requires the same patch to be re-implemented.

              At least until 3.1.0_3 is released it seems.

              1 Reply Last reply Reply Quote 0
              • W werter referenced this topic on Apr 12, 2022, 10:53 AM
              • W werter referenced this topic on Apr 12, 2022, 10:58 AM
              • W werter referenced this topic on Apr 12, 2022, 11:20 AM
              • W werter referenced this topic on Apr 18, 2022, 9:46 AM
              • W werter referenced this topic on May 3, 2022, 7:35 AM
              • W werter referenced this topic on May 3, 2022, 7:37 AM
              • W werter referenced this topic on May 3, 2022, 7:39 AM
              • W werter referenced this topic on May 3, 2022, 7:45 AM
              • W werter referenced this topic on May 22, 2022, 1:08 PM
              • W werter referenced this topic on May 25, 2022, 1:15 PM
              • W werter referenced this topic on May 29, 2022, 7:59 AM
              • W werter referenced this topic on Jun 1, 2022, 10:17 AM
              • W werter referenced this topic on Jun 11, 2022, 4:26 PM
              • W werter referenced this topic on Jun 11, 2022, 4:29 PM
              • W werter referenced this topic on Jun 21, 2022, 8:44 AM
              • W werter referenced this topic on Jun 21, 2022, 8:45 AM
              • W werter referenced this topic on Jun 29, 2022, 10:24 AM
              • W werter referenced this topic on Jul 7, 2022, 2:24 PM
              • W werter referenced this topic on Jul 18, 2022, 1:15 PM
              • W werter referenced this topic on Jul 18, 2022, 1:24 PM
              • W werter referenced this topic on Jul 20, 2022, 10:29 AM
              • W werter referenced this topic on Jul 27, 2022, 10:12 AM
              • W werter referenced this topic on Aug 3, 2022, 11:20 AM
              • W werter referenced this topic on Aug 3, 2022, 12:35 PM
              • W werter referenced this topic on Aug 12, 2022, 1:06 PM
              • W werter referenced this topic on Aug 28, 2022, 11:23 AM
              • W werter referenced this topic on Aug 31, 2022, 11:41 AM
              • W werter referenced this topic on Sep 4, 2022, 2:54 PM
              • W werter referenced this topic on Sep 20, 2022, 3:42 PM
              • W werter referenced this topic on Sep 20, 2022, 3:57 PM
              • W werter referenced this topic on Oct 4, 2022, 9:56 AM
              • W werter referenced this topic on Oct 7, 2022, 10:05 AM
              • W werter referenced this topic on Oct 11, 2022, 2:12 PM
              • W werter referenced this topic on Oct 24, 2022, 8:20 AM
              • W werter referenced this topic on Nov 1, 2022, 1:46 PM
              • W werter referenced this topic on Nov 19, 2022, 2:08 PM
              • W werter referenced this topic on Nov 22, 2022, 10:38 AM
              • W werter referenced this topic on Dec 21, 2022, 7:09 AM
              • W werter referenced this topic on Dec 21, 2022, 7:10 AM
              • W werter referenced this topic on Dec 30, 2022, 12:02 PM
              • W werter referenced this topic on Dec 30, 2022, 12:10 PM
              • W werter referenced this topic on Jan 1, 2023, 7:01 AM
              • W werter referenced this topic on Jan 1, 2023, 8:52 AM
              • W werter referenced this topic on Jan 31, 2023, 6:45 AM
              • W werter referenced this topic on Jan 31, 2023, 6:46 AM
              • W werter referenced this topic on Feb 1, 2023, 9:02 AM
              • W werter referenced this topic on Feb 1, 2023, 9:14 AM
              • W werter referenced this topic on Feb 12, 2023, 10:50 AM
              • W werter referenced this topic on Feb 12, 2023, 11:02 AM
              • W werter referenced this topic on Feb 12, 2023, 11:48 AM
              • W werter referenced this topic on Feb 13, 2023, 7:24 AM
              • W werter referenced this topic on Feb 13, 2023, 7:25 AM
              • W werter referenced this topic on Feb 24, 2023, 9:11 AM
              • W werter referenced this topic on Feb 24, 2023, 9:24 AM
              • W werter referenced this topic on Feb 24, 2023, 9:53 AM
              • W werter referenced this topic on Feb 24, 2023, 10:21 AM
              • W werter referenced this topic on Feb 24, 2023, 10:26 AM
              • W werter referenced this topic on Feb 27, 2023, 7:17 AM
              • W werter referenced this topic on Feb 27, 2023, 7:19 AM
              • B
                bigjohns97
                last edited by Mar 3, 2023, 7:38 PM

                Anyone else have their pfblockerng panels break recently (guessing with the new version of grafana?)

                W 1 Reply Last reply Mar 4, 2023, 11:58 AM Reply Quote 0
                • W
                  wrightsonm @bigjohns97
                  last edited by Mar 4, 2023, 11:58 AM

                  @bigjohns97 working for me on grafana v9.2.1

                  B 1 Reply Last reply Mar 5, 2023, 4:34 PM Reply Quote 0
                  • B
                    bigjohns97 @wrightsonm
                    last edited by Mar 5, 2023, 4:34 PM

                    @wrightsonm Don't upgrade, this was working for me not too long ago.

                    B 1 Reply Last reply Mar 22, 2023, 1:33 PM Reply Quote 0
                    • B
                      bigjohns97 @bigjohns97
                      last edited by Mar 22, 2023, 1:33 PM

                      Noticed this was working again this morning, version is now 9.4.7, so I am guessing this was a bug.

                      1 Reply Last reply Reply Quote 0
                      • W werter referenced this topic on Mar 24, 2023, 10:34 AM
                      • W werter referenced this topic on Apr 9, 2023, 2:33 PM
                      • W werter referenced this topic on Apr 21, 2023, 9:30 AM
                      • W werter referenced this topic on Apr 23, 2023, 4:49 PM
                      • W werter referenced this topic on Apr 25, 2023, 1:06 PM
                      • W werter referenced this topic on Apr 29, 2023, 2:12 PM
                      • W werter referenced this topic on May 19, 2023, 10:01 AM
                      • T
                        thimplicity
                        last edited by Jul 17, 2023, 12:45 AM

                        I have probably missed it in the thread. Is there a way to get this up and running with InfluxDB 2.x?

                        B 1 Reply Last reply Jul 17, 2023, 12:46 PM Reply Quote 0
                        • B
                          bigjohns97 @thimplicity
                          last edited by Jul 17, 2023, 12:46 PM

                          @thimplicity You should see this being mentioned above
                          https://forum.netgate.com/post/992280

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post
                          Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.
                            This community forum collects and processes your personal information.
                            consent.not_received