Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Nextcloud Monitoring Überwachung

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Nextcloud Monitoring Überwachung

    This topic has been deleted. Only users with topic management privileges can see it.
    • Elektroniker86
      Elektroniker86 last edited by

      Hallo,
      ich habe ein Nextclouddienst laufen. Leider gibt es bei der Nextcloud kein vernünftiges Plugin um interne Informationen zu sehen. Z.B: wer wann online ist Downloads usw.

      Jetzt habe ich was entdeckt bei: Administrationseinstellungen -> System. Ganz unten auf der Seite steht "Externes Überwachungsprogramm"
      Hier kann man ein Link kopieren. Wenn ich diesen in die Adresszeile eingebe bekomme ich ziemlich viele Informationen aber leider nicht leserlich angezeigt.

      Jetzt ist die Frage an euch, ist es möglich, mir das irgendwie in eine Tabelle zu übersetzen und durch Telegramm zu verschicken wenn ich was nachsehen möchte?

      Loggen z.B. in Grafana und co möchte ich nicht. Möchte quasi nur wenn ich es brauche darauf zugreifen.

      Die Logig in Blockly mir das Schicken zu lassen bekomm ich irgendwie hin. Aber das davor übersteigt leider meine Grenzen.

      Hat einer von euch eine Idee wie ich das machen könnte?

      Ausserdem ist auch eine json ausgabe möglich, kann man anhaken (siehe Screenshot)

      Bin für jede Hilfe sehr dankbar!

      Beste Grüße

      Screenshot 2025-02-24 123646.png

      Screenshot 2025-02-24 125130.png Screenshot 2025-02-24 125051.png

      OliverIO Codierknecht 2 Replies Last reply Reply Quote 0
      • OliverIO
        OliverIO @Elektroniker86 last edited by

        @elektroniker86

        also weniger aufwand macht json. für xml benötigt man noch zusätzliche bibliotheken.

        json kann man auch mit blockly verarbeiten, werte extrahieren und in eine datenbank oder datenpunkt mit historisierung schreiben

        der screenshot ist allerdings kein json, sondern wieder xml

        Elektroniker86 1 Reply Last reply Reply Quote 0
        • Elektroniker86
          Elektroniker86 @OliverIO last edited by

          @oliverio

          Hier ist die json Version.

          Screenshot 2025-02-24 140256.png

          oder so?

          {
            "ocs": {
              "meta": {
                "status": "ok",
                "statuscode": 200,
                "message": "OK"
              },
              "data": {
                "nextcloud": {
                  "system": {
                    "version": "30.0.6.2",
                    "theme": "",
                    "enable_avatars": "yes",
                    "enable_previews": "yes",
                    "memcache.local": "\\OC\\Memcache\\APCu",
                    "memcache.distributed": "none",
                    "filelocking.enabled": "yes",
                    "memcache.locking": "\\OC\\Memcache\\Redis",
                    "debug": "no",
                    "freespace": 219993133056,
                    "cpuload": [1.99755859375, 1.8046875, 1.72509765625],
                    "cpunum": 8,
                    "mem_total": 12582912,
                    "mem_free": 10222592,
                    "swap_total": 2097152,
                    "swap_free": 2097152
                  },
                  "storage": {
                    "num_users": 8,
                    "num_files": 1323221,
                    "num_storages": 23,
                    "num_storages_local": 1,
                    "num_storages_home": 10,
                    "num_storages_other": 12
                  },
                  "shares": {
                    "num_shares": 1213,
                    "num_shares_user": 1,
                    "num_shares_groups": 0,
                    "num_shares_link": 0,
                    "num_shares_mail": 0,
                    "num_shares_room": 179,
                    "num_shares_link_no_password": 0,
                    "num_fed_shares_sent": 0,
                    "num_fed_shares_received": 0,
                    "permissions_10_19": 179,
                    "permissions_11_19": 1033,
                    "permissions_0_31": 1
                  }
                },
                "server": {
                  "webserver": "nginx/1.25.5",
                  "php": {
                    "version": "8.2.25",
                    "memory_limit": 4294967296,
                    "max_execution_time": 3600,
                    "upload_max_filesize": 128849018880,
                    "opcache_revalidate_freq": 0,
                    "opcache": {
                      "opcache_enabled": true,
                      "cache_full": false,
                      "restart_pending": false,
                      "restart_in_progress": false,
                      "memory_usage": {
                        "used_memory": 144235800,
                        "free_memory": 124199656,
                        "wasted_memory": 0,
                        "current_wasted_percentage": 0
                      },
                      "interned_strings_usage": {
                        "buffer_size": 67108864,
                        "used_memory": 23600128,
                        "free_memory": 43508736,
                        "number_of_strings": 107218
                      },
                      "opcache_statistics": {
                        "num_cached_scripts": 2810,
                        "num_cached_keys": 5415,
                        "max_cached_keys": 130987,
                        "hits": 19205148,
                        "start_time": 1740150750,
                        "last_restart_time": 0,
                        "oom_restarts": 0,
                        "hash_restarts": 0,
                        "manual_restarts": 0,
                        "misses": 2887,
                        "blacklist_misses": 0,
                        "blacklist_miss_ratio": 0,
                        "opcache_hit_rate": 99.9849698316356
                      },
                      "jit": {
                        "enabled": true,
                        "on": true,
                        "kind": 5,
                        "opt_level": 5,
                        "opt_flags": 6,
                        "buffer_size": 268435440,
                        "buffer_free": 267374688
                      }
                    },
                    "apcu": {
                      "cache": {
                        "num_slots": 4099,
                        "ttl": 0,
                        "num_hits": 1672705,
                        "num_misses": 46394,
                        "num_inserts": 53699,
                        "num_entries": 1914,
                        "expunges": 0,
                        "start_time": 1740150749,
                        "mem_size": 872584,
                        "memory_type": "mmap"
                      },
                      "sma": {
                        "num_seg": 1,
                        "seg_size": 33554312,
                        "avail_mem": 32579192
                      }
                    },
                    "extensions": [
                      "Core",
                      "date",
                      "libxml",
                      "openssl",
                      "pcre",
                      "zlib",
                      "filter",
                      "hash",
                      "json",
                      "random",
                      "Reflection",
                      "SPL",
                      "session",
                      "standard",
                      "sodium",
                      "cgi-fcgi",
                      "mysqlnd",
                      "PDO",
                      "xml",
                      "apcu",
                      "bcmath",
                      "bz2",
                      "calendar",
                      "ctype",
                      "curl",
                      "dom",
                      "mbstring",
                      "FFI",
                      "fileinfo",
                      "ftp",
                      "gd",
                      "gettext",
                      "gmp",
                      "iconv",
                      "igbinary",
                      "imagick",
                      "intl",
                      "ldap",
                      "exif",
                      "mysqli",
                      "pdo_mysql",
                      "Phar",
                      "posix",
                      "readline",
                      "redis",
                      "shmop",
                      "SimpleXML",
                      "smbclient",
                      "sockets",
                      "sysvmsg",
                      "sysvsem",
                      "sysvshm",
                      "tokenizer",
                      "xmlreader",
                      "xmlwriter",
                      "xsl",
                      "zip",
                      "libsmbclient",
                      "Zend OPcache"
                    ]
                  },
                  "database": {
                    "type": "mysql",
                    "version": "10.11.6",
                    "size": "1228603392"
                  }
                },
                "activeUsers": {
                  "last5minutes": 1,
                  "last1hour": 1,
                  "last24hours": 4,
                  "last7days": 6,
                  "last1month": 6,
                  "last3months": 6,
                  "last6months": 6,
                  "lastyear": 7
                }
              }
            }
          }
          

          Da steht noch das man ein Token erstellen muss!? Verstehe aber nicht für was genau.

          Und wie kann ich das jetzt bewerkstelligen? Vielleicht hat jemand ein Blockly Beispiel für mich?

          BananaJoe 1 Reply Last reply Reply Quote 0
          • BananaJoe
            BananaJoe Most Active @Elektroniker86 last edited by BananaJoe

            @elektroniker86 sagte in Nextcloud Monitoring Überwachung:

            Da steht noch das man ein Token erstellen muss!? Verstehe aber nicht für was genau.

            Das wäre ein Zugriffstoken, sonst könnte ja jeder ohne Anmeldung die Daten abrufen.
            Erklärung und Beispiel mit Curl findet man z.B. hier (weiter unten auch auf Deutsch):
            https://help.nextcloud.com/t/howto-use-serverinfo-with-curl/173360

            Und mit Blockly wird es nicht gehen weil - man darf mich gerne korrigieren ( @haus-automatisierung ) man im Blockly-Baustein keinen Header mit übergeben kann.
            Da müsste man sich in Blockly eine JavaScript-Funktion für erstellen denke ich.

            1 Reply Last reply Reply Quote 0
            • OliverIO
              OliverIO last edited by OliverIO

              @bananajoe

              ich denke er braucht kein token.
              er hat den ja auch beim browserabruf nicht eingegeben.

              token ist optional um ggfs den zugriff abzusichern.

              um mit blockly die werte abzurufen kannst du mal hier schauen,
              da ist es ein ähnlicher fall. mit httpget die daten abrufen und dann
              aus irgendeiner unterstruktur mittels blockly/jsonata dann drauf zugreifen und in einen datenpunkt schreiben

              https://forum.iobroker.net/topic/49666/json-in-objekt-datenpunkt-umwandeln

              im zweifel würde sich aber auch bei httpget
              ein header mitgeben lassen. aber wie gesagt, braucht er nicht
              https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httpget

              BananaJoe 1 Reply Last reply Reply Quote 1
              • BananaJoe
                BananaJoe Most Active @OliverIO last edited by

                @oliverio sagte in Nextcloud Monitoring Überwachung:

                ich denke er braucht kein token.
                er hat den ja auch beim browserabruf nicht eingegeben.

                Aber natürlich braucht es ein Token:
                1716a7be-ffe6-423d-ade8-a2b446cc109f-image.png

                Er war/ist schlicht angemeldet.

                OliverIO 1 Reply Last reply Reply Quote 1
                • OliverIO
                  OliverIO @BananaJoe last edited by

                  @bananajoe

                  ja stimmt wahrscheinlich
                  dann kann er blockly nicht nutzen, sondern muss httpget in der
                  javascriptversion nutzen

                  anhand des beispiels in der verlinkten doku müsste der befehl dann so aussehen
                  link und token muss natürlich individuell angepasst werden

                  response.data sollte dann das json enthalten

                  httpGet('https://your.nextcloud.com/ocs/v2.php/apps/serverinfo/api/v1/info', {headers: {'NC-Token': 'f65578a77feb8ba2ce584f15f50718fa2a4a94465748fb433a4f1b475a11acc8'}},(err, response) => {
                      if (!err) {
                          console.log(response.statusCode);
                          console.log(response.data);
                      } else {
                          console.error(err);
                      }
                  });
                  
                  Elektroniker86 1 Reply Last reply Reply Quote 0
                  • Elektroniker86
                    Elektroniker86 @OliverIO last edited by

                    @oliverio

                    Ja stimmt, ich war angemeldet, habe ja den Link aus der Weboberfläche rauskopiert.

                    Puh, das ist ja doof, das ich kein Blockly nutzen kann....
                    Javascript übersteigt leider meine Kenntnisse. Bin nur Elektroniker.

                    Meine Idee war es, ein Datenpunkt anzulegen womit ich ein Blockly triggere, wo mir dann per Telegramm die ganzen Infos als Tabelle oder zumindest gut leserlich schickt, wenn ich was nachschauen möchte.

                    Wäre dann vielleicht was, für ein neuen ioB Adapter ?

                    Naja, wenn jemand Lust und Zeit hat kann jemand eventuell mal ein Script zusammentippen. Vielleicht bin ich ja nicht der einzige, der dafür Interesse hat?

                    Nun trotzdem Danke für die Infos

                    1 Reply Last reply Reply Quote 0
                    • Codierknecht
                      Codierknecht Developer Most Active @Elektroniker86 last edited by

                      @elektroniker86
                      Also ich würde das - wie mittlerweile mein komplettes Monitoring - mit Zabbix machen.
                      Da gibt's sogar gleich das passende Template:

                      7042b552-7016-4a2a-a9de-a38eb62e9efd-grafik.png

                      Elektroniker86 1 Reply Last reply Reply Quote 2
                      • Elektroniker86
                        Elektroniker86 @Codierknecht last edited by

                        @codierknecht

                        Danke für den Tipp! Werde ich mir mal anschauen.

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        707
                        Online

                        31.7k
                        Users

                        79.7k
                        Topics

                        1.3m
                        Posts

                        4
                        10
                        371
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo