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

    Another Netgate with storage failure, 6 in total so far

    Scheduled Pinned Locked Moved Official Netgate® Hardware
    302 Posts 37 Posters 68.9k 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.
    • A
      andrew_cb @arri
      last edited by

      @arri Wow that is cool! I am glad to hear that it worked for you!
      I will report back when I get around to trying this on the dead 4100 I have here.

      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator @arri
        last edited by

        @arri said in Another Netgate with storage failure, 6 in total so far:

        Yanked the Kingston eMMC out of my bricked 4100 that wouldn't post and lo and behold I've got a console back

        Nice! I assume when you say 'yanked' you mean carefully removed with SMT tools? 😉

        arriA 1 Reply Last reply Reply Quote 0
        • A
          andrew_cb @stephenw10
          last edited by

          @stephenw10 I can understand that. I know you try to be polite and helpful, and I know that myself and others appreciate your contributions.

          It is unfortunate that the situation has escalated to this point. I feel that this could have been avoided if Netgate had simply responded to some of the questions directed at them.

          In my November 2024 thread Concerns and feedback about storage lifetime wearout on Netgate devices, I gave feedback on my experience with storage wear-related issues and provided several suggestions for technical and educational improvements. That post seems to have gone unnoticed.

          The February 2024 thread eMMC Write endurance raised many good points and questions, but it too seems to have gone unnoticed.

          This brings us to this thread, where I again attempted to raise the issue of eMMC storage issues, initially trying to build a stronger case for how and why Netgate needs to better educate during the purchasing process, how to inform the user better before they make changes that could affect the lifetime of their device, GUI changes that could reduce the chance of activating non-recommend settings and help users better monitor storage wear, and technical changes for reducing storage wear.

          Despite Netgate responding that "you have it" [our attention], "thank you for your suggestions and input. We will consider them", and "Some good points have been raised along with actionable suggestions to mitigate the issue. Thanks for the constructive feedback - the issue has our attention," nothing further has been done, and there has been no further response.

          Meanwhile, users (including myself) continue to experience failure on a daily basis, and not even some simple wording on a few web pages has been updated to help inform potential purchasers on how to determine if the BASE or MAX version is right for their needs. Someone is probably purchasing a BASE model right now and unaware of the potential pitfalls that await them.

          1 Reply Last reply Reply Quote 0
          • w0wW
            w0w @SteveITS
            last edited by

            @SteveITS said in Another Netgate with storage failure, 6 in total so far:

            It is also usually much smaller.

            But this does not explain why most Netgate appliances have such small eMMC sizes, seemingly limited to the lower-end segment, like cheap hardware—though they are not. The only assumption I can make is that the hardware was developed much earlier than it was sold, or that some local retailers are restricted to whatever stock they had.

            Nevertheless, the problem is generally solvable, but for some reason, it is not sufficiently covered. Perhaps this is because it was assumed that the devices are purchased by people who understand what eMMC is, that the number of write cycles is limited, and that the overall storage capacity is not very large? I don't know.

            1 Reply Last reply Reply Quote 0
            • A
              andrew_cb
              last edited by

              The number of responses to my Reddit threads from users who were completely unaware of storage health issues and the ones who discovered their device was worn or at risk of imminent failure highlights that more education and awareness are desperately needed.

              What started as a simple request has now turned into this, with no resolution in sight.

              w0wW 1 Reply Last reply Reply Quote 1
              • arriA
                arri @stephenw10
                last edited by

                @stephenw10 Yes, that was irresponsible of me to imply anything other than lest someone actually do so literally. I applaud the engineer who laid out the board as it was about as trivial as possible to remove.

                Just finished installing 24.11 onto the NVMe which is fastened with an M2.5 instead of M2 like everyone else. At least the dang thing is included in the 4100, it's not in the 4200 for some inexplicable reason.

                Looking good!

                A 1 Reply Last reply Reply Quote 2
                • A
                  andrew_cb @arri
                  last edited by

                  @arri The 4200 using an M2.5 screw confused us too. I think we ended up ordering a package of them from Amazon.

                  1 Reply Last reply Reply Quote 0
                  • stephenw10S
                    stephenw10 Netgate Administrator
                    last edited by

                    Yes in the past, in desperate times, I have resorted to physical violence again ICs. And it has worked! But I would never recommend that. I'm pretty sure I got extremely lucky. 😉

                    A 1 Reply Last reply Reply Quote 1
                    • A
                      andrew_cb @stephenw10
                      last edited by

                      @stephenw10 I had to replace the EEPROM chips in an old Camaro computer after it was bricked by a bad flash. That was a nervous experience with a heat gun! 😬

                      1 Reply Last reply Reply Quote 0
                      • D
                        dane_h @andrew_cb
                        last edited by

                        @andrew_cb Got mine done today. Went pretty well, not show stoppers. A wee bit stressful when you do this kind of work so infrequently, so thanks for all the guidance. Here's to another 5+ years of (hopefully) flawless use.

                        1 Reply Last reply Reply Quote 3
                        • w0wW
                          w0w @andrew_cb
                          last edited by

                          @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                          The number of responses to my Reddit threads from users who were completely unaware of storage health issues and the ones who discovered their device was worn or at risk of imminent failure highlights that more education and awareness are desperately needed.

                          We're talking about a complex network device, so it would be reasonable to assume that people buying it have some understanding of what they're purchasing. However, it seems that the topic of storage has somehow passed by a significant portion of users.

                          Back in 2009, I bought my first SSD for $900 and had quite a few issues with it, even though it was an Intel drive with pure SLC (X25-E). Probably thanks to that experience, I now understand how things work and remain a fan of various flash memory-based devices to this day.

                          As for warning users now, I believe I was actually the first to suggest doing that earlier in this thread.

                          As a permanent solution, at least for Netgate devices, there should be a health monitoring system that includes all types of warnings about the eMMC's condition—if the flash itself supports it. If not, then it would probably be best to strictly recommend that users utilize RAM disks or even automatically enable them during installation if the device has less than 16GB of storage.

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            andrew_cb @w0w
                            last edited by

                            @w0w
                            I appreciate your input. My comments below are not targeted at your specifically, but believe they are helpful for illustrating why disagree with any "should have known" arguments.

                            it would be reasonable to assume that people buying it have some understanding of what they're purchasing. However, it seems that the topic of storage has somehow passed by a significant portion of users.

                            I disagree that it is a reasonable assumption to make. I have been working with firewalls for 20 years and have never had to consider the type of storage medium used. I also believe the purchaser's knowledge of storage types should be irrelevant in this matter.

                            Looking at the product page for the 6100, the two choices are as follows:

                            BASE
                            8GB Memory
                            16GB Storage
                            
                            MAX
                            8GB Memory
                            128GB Storage
                            

                            Further down, the storage options are clarified:

                            Storage: 16 GB eMMC (or optional 128 GB NVMe M.2 SSD)
                            

                            and

                            Storage
                            16 GB eMMC (onboard - soldered)  upgradeable to 128 GB NVMe M.2 SSD with 6100 Max
                            

                            That is all the store page says with regard to storage.

                            The rest of the page is filled with performance ratings and all the great things that pfSense can do when using various packages.

                            Not including the header and footer, there are 1333 words on the page.
                            411 words, or 40%, are about all the capabilities and benefits of pfSense A mere 32 words, or 2%, are in the sentences related to storage.

                            There is absolutely nothing on the page that

                            • Indicates that there are any differences between eMMC and regular SSD storage
                            • Indicates that some features/packages require an SSD and are not recommended for use with eMMC storage
                            • Gives endurance ratings for the eMMC and SSD storage to highlight the difference between them.
                            • Provide the purchaser with additional information to help inform and guide their purchasing decision.

                            Would you agree that if the choice of which type of storage to get is so critical, it should be significantly more prominent on the page?

                            We're talking about a complex network device

                            A major reason for purchasing a pre-built firewall from a vendor is to avoid the hassle and deep knowledge involved with building a custom device. Firewalls are a commodity item nowadays, and other firewall vendors can do IDS and IPS for years without storage failures. I have seen many 10+ year old Sonicwall and Sophos firewalls do this without any issues.

                            If we revisit jwt's statements regarding storage media:

                            • The principle difference between eMMC and NVMe or SSD device is the amount of flash present on a typical eMMC .vs SSD or NVMe drive.
                            • Larger devices have more sectors and as a direct result, can engage "wear leveling" algorithms in the controller to spread the erase cycles across more sectors.
                            • Larger devices also cost more, due largely to market dynamics.
                            • Used within its limitations, eMMC is a good solution. Your phone likely has eMMC inside it. Many network devices, even from companies such as Cisco and HP/Juniper have eMMC inside them for storage.
                            • our [high] level of effort and engagement with Silicom

                            Which we can reduce down to:

                            • No major difference between eMMC and NVMe storage other than capacity
                            • Larger storage devices can wear-level better
                            • Larger storage devices cost more
                            • Netgate works closely with Silicom on the hardware that is used in their devices

                            Taking the above into consideration, in the absence of any stated warnings, cautions, limitations, recommendations, or disclaimers, a purchaser should be able to trust that what the vendor is offering is capable of performing the advertised functions.

                            Why should a purchaser or user be concerned about the difference when Netgate themselves is arguing that eMMC storage is just as good as NVMe storage and makes no effort to distinguish the two other than capacity?

                            The product page of the 1100 describes it as

                            the ideal microdevice for the home and small office network
                            

                            It does not sound like the target market for the 1100 is people with many years of storage technology and Unix filesystem knowledge.
                            Yet the 1100, which is only available with eMMC storage and cannot be upgraded to an SSD, lists all the exact same pfSense features as the 8300 MAX.

                            But how can that be? Is it possible that there are some inaccuracies or that important information has been forgotten on the product pages?

                            w0wW 1 Reply Last reply Reply Quote 1
                            • w0wW
                              w0w @andrew_cb
                              last edited by

                              @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                              I disagree that it is a reasonable assumption to make. I have been working with firewalls for 20 years and have never had to consider the type of storage medium used. I also believe the purchaser's knowledge of storage types should be irrelevant in this matter.

                              I don't have extensive experience with various firewalls, but I've come across cases on Reddit where Sophos internal storage failed, and even on forums, there were reports of failures with Cisco's FTD. I don't know the failure rate of such devices, but their price range is significantly higher. I'm not justifying anyone, but shit happens.

                              It also probably depends on usage conditions, settings, and many other factors.

                              Larger devices have more sectors and as a direct result, can engage "wear leveling" algorithms in the controller to spread the erase cycles across more sectors.

                              I would also note that if the minimum eMMC size were 16GB, we probably wouldn't be having this discussion right now.

                              @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                              Used within its limitations, eMMC is a good solution. Your phone likely has eMMC inside it.

                              Actually eMMC is going away from phones. UFS3.1 is a next level. But this is a bit off topic.

                              @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                              The product page of the 1100 describes it as

                              the ideal microdevice for the home and small office network
                              It does not sound like the target market for the 1100 is people with many years of storage technology and Unix filesystem knowledge.
                              Yet the 1100, which is only available with eMMC storage and cannot be upgraded to an SSD, lists all the exact same pfSense features as the 8300 MAX.

                              But how can that be? Is it possible that there are some inaccuracies or that important information has been forgotten on the product pages?

                              You can include it in the product description, but that falls under marketing.

                              And today's marketing trend is: never tell the customer something they didn't ask about.

                              Documentation, however, should probably contain footnotes and explanations. Or, as I already mentioned, perhaps every setting or checkbox that could potentially generate a large number of logs should have a footnote or a note for users explaining the consequences.

                              A 1 Reply Last reply Reply Quote 1
                              • A
                                andrew_cb @w0w
                                last edited by

                                @w0w said in

                                I would also note that if the minimum eMMC size were 16GB, we probably wouldn't be having this discussion right now.

                                I think you meant to say "if the minimum eMMC size were NOT 16GB, we probably wouldn't be having this discussion right now.
                                And I agree - our 7100's that come with 32GB of eMMC seem to last twice as long as our 4100 and 6100's that are dying at about half the age of the 7100s. Silicom offers larger eMMC sizes on several models, so just increasing the minimum eMMC to 32 or 64GB would likely significantly reduce this problem.

                                Actually eMMC is going away from phones. UFS3.1 is a next level. But this is a bit off topic.

                                That is interesting to know!

                                You can include it in the product description, but that falls under marketing.

                                And today's marketing trend is: never tell the customer something they didn't ask about.

                                This is the #1 issue that is causing this whole problem. A lack of any useful information, but when the storage fails, everyone is quick to blame the user for not knowing.

                                Documentation, however, should probably contain footnotes and explanations. Or, as I already mentioned, perhaps every setting or checkbox that could potentially generate a large number of logs should have a footnote or a note for users explaining the consequences.

                                I completely agree. I think both you and I have mentioned this several times.

                                S w0wW 2 Replies Last reply Reply Quote 0
                                • S
                                  SteveITS Galactic Empire @andrew_cb
                                  last edited by

                                  @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                                  I think you meant to say "if the minimum eMMC size were NOT 16GB

                                  The 1100 and 2100 base units have 8 GB.

                                  Pre-2.7.2/23.09: Only install packages for your version, or risk breaking it. Select your branch in System/Update/Update Settings.
                                  When upgrading, allow 10-15 minutes to restart, or more depending on packages and device speed.
                                  Upvote 👍 helpful posts!

                                  1 Reply Last reply Reply Quote 3
                                  • w0wW
                                    w0w @andrew_cb
                                    last edited by w0w

                                    @andrew_cb said in Another Netgate with storage failure, 6 in total so far:

                                    I think you meant to say "if the minimum eMMC size were NOT 16GB, we probably wouldn't be having this discussion right now.

                                    Exactly!
                                    I would even rephrase it to say that 32GB would likely be the minimum sufficient for something else to fail first, such as the power supply.

                                    1 Reply Last reply Reply Quote 0
                                    • w0wW
                                      w0w
                                      last edited by

                                      emmc_health.widget.php

                                      <?php
                                      require_once("functions.inc");
                                      require_once("guiconfig.inc");
                                      
                                      // Function to retrieve eMMC health data
                                      def get_emmc_health() {
                                          $cmd = "/usr/local/bin/mmc extcsd read /dev/mmcsd0rpmb | egrep 'LIFE|EOL'";
                                          $output = shell_exec($cmd);
                                          
                                          if (!$output) {
                                              return ["status" => "error", "message" => "Failed to retrieve eMMC health data."];
                                          }
                                          
                                          preg_match('/LIFE_A\s+:\s+(0x[0-9A-F]+)/i', $output, $matchA);
                                          preg_match('/LIFE_B\s+:\s+(0x[0-9A-F]+)/i', $output, $matchB);
                                          
                                          $lifeA = isset($matchA[1]) ? hexdec($matchA[1]) * 10 : null;
                                          $lifeB = isset($matchB[1]) ? hexdec($matchB[1]) * 10 : null;
                                          
                                          if (is_null($lifeA) || is_null($lifeB)) {
                                              return ["status" => "error", "message" => "Invalid eMMC health data."];
                                          }
                                          
                                          return ["status" => "ok", "lifeA" => $lifeA, "lifeB" => $lifeB];
                                      }
                                      
                                      $data = get_emmc_health();
                                      
                                      // Determine color class based on wear level
                                      def get_color_class($value) {
                                          if ($value < 70) {
                                              return "success"; // Green
                                          } elseif ($value < 90) {
                                              return "warning"; // Yellow
                                          } else {
                                              return "danger"; // Red
                                          }
                                      }
                                      
                                      // Send email notification if wear level is critical
                                      def send_emmc_alert($lifeA, $lifeB) {
                                          global $config;
                                          
                                          $subject = "[pfSense] eMMC Wear Level Warning";
                                          $message = "Warning: eMMC wear level is high!\n\n" .
                                                     "Life A: {$lifeA}%\nLife B: {$lifeB}%\n\n" .
                                                     "Consider replacing the storage device.";
                                          
                                          if ($lifeA >= 90 || $lifeB >= 90) {
                                              notify_via_smtp($subject, $message);
                                          }
                                      }
                                      
                                      if ($data["status"] === "ok") {
                                          send_emmc_alert($data["lifeA"], $data["lifeB"]);
                                      }
                                      ?><div class="panel panel-default">
                                          <div class="panel-heading">
                                              <h3 class="panel-title">eMMC Disk Health</h3>
                                          </div>
                                          <div class="panel-body">
                                              <?php if ($data["status"] === "error"): ?>
                                                  <div class="alert alert-danger"><?php echo $data["message"]; ?></div>
                                              <?php else: ?>
                                                  <table class="table">
                                                      <tr>
                                                          <th>Life A</th>
                                                          <td class="bg-<?php echo get_color_class($data['lifeA']); ?>"> <?php echo $data['lifeA']; ?>%</td>
                                                      </tr>
                                                      <tr>
                                                          <th>Life B</th>
                                                          <td class="bg-<?php echo get_color_class($data['lifeB']); ?>"> <?php echo $data['lifeB']; ?>%</td>
                                                      </tr>
                                                  </table>
                                              <?php endif; ?>
                                          </div>
                                      </div>
                                      
                                      1. Place the Widget File

                                      Make sure your widget file (e.g., emmc_health.widget.php) is located in:

                                      /usr/local/www/widgets/widgets/

                                      1. Register the Widget in widgets/widgets.inc

                                      Edit the file:

                                      /usr/local/www/widgets/widgets.inc

                                      Add the following line to register the widget:

                                      $widgets["emmc_health"] = "eMMC Disk Health";

                                      This ensures the widget appears in the dashboard widget selection menu.

                                      1. Ensure Permissions

                                      Run the following command to set the correct permissions:

                                      chmod 644 /usr/local/www/widgets/widgets/emmc_health.widget.php

                                      1. Reload the Dashboard

                                      Go to Status → Dashboard in the pfSense web UI.

                                      Click on "+" (Add Widget) at the top-right.

                                      Find "eMMC Disk Health" in the list and add it.

                                      1. Verify the Widget

                                      Ensure that the widget loads correctly and displays the expected values.

                                      I don't know if this will work, but this is the code that ChatGPT put together with me in 15 minutes.

                                      A 1 Reply Last reply Reply Quote 1
                                      • A
                                        andrew_cb @w0w
                                        last edited by andrew_cb

                                        @w0w Thanks for doing this!

                                        I tried out the script and it needed a few modifications to make it work for me. I also added a function to automatically install mmc-utils if needed.
                                        The widgets.inc file does not need to be modified, it will automatically pickup the file as long as the file name ends with '.widget.php'.

                                        Here are the revised instructions:

                                        Code for emmc_health.widget.php:

                                        <?php
                                        require_once("functions.inc");
                                        require_once("guiconfig.inc");
                                        
                                        // Function to retrieve eMMC health data
                                        function get_emmc_health() {
                                        
                                            $cmd = "/usr/local/sbin/mmc extcsd read /dev/mmcsd0rpmb | egrep 'LIFE|EOL'";
                                            $output = shell_exec($cmd);
                                            
                                            if (!$output) {
                                                return ["status" => "error", "message" => "Failed to retrieve eMMC health data."];
                                            }
                                        
                                            // Explode the output into separate lines
                                            $outputArray = explode("\n", $output);
                                           
                                            // Get the value of 'TYP_A' (SLC) wear
                                            preg_match('/.*TYP_A]:\s+(0x[0-9A-F]+)/i', $outputArray[0], $matchA);
                                            // Get the value of 'TYP_B' (MLC) wear
                                            preg_match('/.*TYP_B]:\s+(0x[0-9A-F]+)/i', $outputArray[1], $matchB);
                                            
                                            // Convert the wear values from hex to decimal
                                            $lifeA = isset($matchA[1]) ? hexdec($matchA[1]) * 10 : null;
                                            $lifeB = isset($matchB[1]) ? hexdec($matchB[1]) * 10 : null;
                                            
                                            if (is_null($lifeA) || is_null($lifeB)) {
                                                return ["status" => "error", "message" => "Invalid eMMC health data."];
                                            }
                                            
                                            return ["status" => "ok", "lifeA" => $lifeA, "lifeB" => $lifeB];
                                        }
                                        
                                        // Determine color class based on wear level
                                        function get_color_class($value) {
                                            if ($value < 70) {
                                                return "success"; // Green
                                            } elseif ($value < 90) {
                                                return "warning"; // Yellow
                                            } else {
                                                return "danger"; // Red
                                            }
                                        }
                                        
                                        // Send email notification if wear level is critical
                                        function send_emmc_alert($lifeA, $lifeB) {
                                            global $config;
                                            
                                            $subject = "[pfSense] eMMC Wear Level Warning";
                                            $message = "Warning: eMMC wear level is high!\n\n" .
                                                       "Life A: {$lifeA}%\nLife B: {$lifeB}%\n\n" .
                                                       "Consider replacing the storage device.";
                                            
                                            if ($lifeA >= 90 || $lifeB >= 90) {
                                                notify_via_smtp($subject, $message);
                                            }
                                        }
                                        
                                        // Check for the mmc-utils binary and install if missing
                                        function install_mmc_utils () {
                                            if(!file_exists("/usr/local/sbin/mmc")) {
                                                exec("pkg install -y mmc-utils",$code);
                                            }
                                            if ($code <> 0) {
                                                return ["status" => "error", "message" => "Failed to install mmc-utils."];
                                            }
                                        }
                                        
                                        // Main program logic
                                        // Get get the eMMC health data
                                        $data = get_emmc_health();
                                        
                                        // Check if the eMMC health is not 'ok' and send an email notification
                                        if ($data["status"] === "ok") {
                                            send_emmc_alert($data["lifeA"], $data["lifeB"]);
                                        }
                                        
                                        // Format the data into HTML for display in the widget
                                        ?><div class="panel panel-default">
                                            <div class="panel-heading">
                                                <h3 class="panel-title">eMMC Disk Health</h3>
                                            </div>
                                            <div class="panel-body">
                                                <?php if ($data["status"] === "error"): ?>
                                                    <div class="alert alert-danger"><?php echo $data["message"]; ?></div>
                                                <?php else: ?>
                                                    <table class="table">
                                                        <tr>
                                                            <th>Type A Wear (Lower is better)</th>
                                                            <td class="bg-<?php echo get_color_class($data['lifeA']); ?>"> <?php echo $data['lifeA']; ?>%</td>
                                                        </tr>
                                                        <tr>
                                                            <th>Type B Wear (Lower is better)</th>
                                                            <td class="bg-<?php echo get_color_class($data['lifeB']); ?>"> <?php echo $data['lifeB']; ?>%</td>
                                                        </tr>
                                                    </table>
                                                <?php endif; ?>
                                            </div>
                                        </div>
                                        
                                        
                                        1. Navigate to Diagnostics > File Editor.
                                          Paste the code for emmc_health.widget.php (above) into the editor.
                                          Paste the following path into the Path to file to be edited box and select Save (the file will automatically be created):
                                        /usr/local/www/widgets/widgets/emmc_health.widget.php
                                        
                                        1. Navigate to Diagnostics > Command Prompt and run the following command to set the file permissions:
                                        chmod 644 /usr/local/www/widgets/widgets/emmc_health.widget.php
                                        
                                        1. Navigate to System > Dashboard.
                                          Select the "+" button from the top-right.
                                          Select Emmc Health from the list.

                                        2. The Emmc Health widget will be added to the bottom of the page. Move it up top so it is easily visible.
                                          Select the Save button at the top-right to save the dashboard layout.

                                        1 Reply Last reply Reply Quote 2
                                        • stephenw10S
                                          stephenw10 Netgate Administrator
                                          last edited by

                                          Probably want some way to limit or suppress the number of alerts/emails. Those values never go back so you could end up with.... a lot!

                                          You might also argue that since it only does it when opening the dashboard an alert shown there might be better. Or maybe both.

                                          A dennypageD 2 Replies Last reply Reply Quote 1
                                          • A
                                            andrew_cb @stephenw10
                                            last edited by andrew_cb

                                            @stephenw10 said in Another Netgate with storage failure, 6 in total so far:

                                            Probably want some way to limit or suppress the number of alerts/emails. Those values never go back so you could end up with.... a lot!

                                            You might also argue that since it only does it when opening the dashboard an alert shown there might be better. Or maybe both.

                                            Good suggestions!
                                            I was already thinking of using a temp file to store the health data and only updating it when older that a certain age. A similar thing could be done to set a flag/rate limiter for alerting.

                                            Ideally, the health check would run as a cron job and store the latest data in a file so that it works in the background, and then the the dashboard would read the file instead of having to run the check every time the dashboard is loaded.

                                            1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.