Der Schleimaal führt Buch

Dieser Beitrag wurde im Oktober 2016 geschrieben


"Hagfish" (der Schleimaal) heisst der Dienst, der die minütliche Abrechnung der Nutzung von Triton ermöglicht. Dies bezieht die aktuelle Konfiguration, die Instanzgröße, die verbrauchte Netzwerkbandbreite und den Plattenplatzverbrauch mit ein. 

Jeder Telemetrieeintrag besteht aus einem kompletten JSON Objekt, unterteilt durch ASCII Zeilenumschaltungen. Es wird für jede Instanz, auf jedem Compute Node ein Eintrag generiert - egal ob sie gerade eingeschaltet ist. Dies geschieht alle 60 Sekunden. Dabei werden Dateien erzeugt, in denen alle Datenpunkte einer UTC-Stunde gesammelt sind.

Eine weitere Komponente für die Erfassung der Nutzdaten ist der Hermes-Archivdienst. Dieser lädt - sofern entsprechend konfiguriert - die Nutzungsdaten in den Manta-Objektstore hoch. Vorher sammelt Hermes die Daten von jedem Compute Node und speichert sie in einer Baumstruktur sortiert nach Datacenter, Server und Zeitstempel. Die Logfiles verbleiben nach einem erfolgreichen Upload für eine konfigurierbare Zeit auf dem entsprechenden Compute Node. Nach Verstreichen dieses Zeitraums, werden die alten Logs von dem Compute Node gelöscht.

Die Auswertung der Logs in Manta kann dann über Map and Reduce Jobs erfolgen (die Joyent zur Verfügung stellt, wenn man Triton lizensiert).

Konkret erzeugt Hagfish zwei Arten von Einträgen in seinen Logs. Den Summary Record: 

{
  "sdc_version": "7.0",
  "server_uuid": "45474a4c-bbb0-1c54-9027-a2d04f4889b1",
  "datacenter_name": "us-east-1",
  "v": "HF4",
  "timestamp": "2014-03-15T12:01:00.000Z",
  "type": "summary",
  "vm_count": 18,
  "runtime": 1095
}

Und den Usage Record:

{
  "sdc_version": "7.0",
  "server_uuid": "6f113af2-2339-49ed-b10c-0b133c8c0bce",
  "datacenter_name": "us-west-1",
  "v": "HF4",
  "timestamp": "2014-03-15T12:01:00.001Z",
  "type": "usage",
  "uuid": "3bc43279-8d88-4e74-8412-c3d9fe22441a",
  "os_uuid": "3bc43279-8d88-4e74-8412-c3d9fe22441a",
  "status": "running",
  "config": {
    "name": "3bc43279-8d88-4e74-8412-c3d9fe22441a",
    "debugid": "27",
    "zonepath": "/zones/3bc43279-8d88-4e74-8412-c3d9fe22441a",
    "autoboot": "true",
    "brand": "joyent",
    "cpu_shares": "1024",
    "zfs_io_priority": "10",
    "max_lwps": "4000",
    "max_physical_memory": "1073741824",
    "max_locked_memory": "1073741824",
    "max_swap": "2147483648",
    "attributes": {
      "owner-uuid": "2edc5aae-ca53-4176-af3b-2c6faef45ed2",
      "package-name": "Small 1GB",
      "package-version": "1.0.1",
      "tmpfs": "1024",
      "hostname": "blahblah",
      "dns-domain": "local",
      "resolvers": "8.8.8.8,8.8.4.4",
      "alias": "robert0",
      "create-timestamp": "2012-08-07T21:07:28.000Z",
      "billing-id": "17ba1dd6-fd0f-4586-806d-a56135da7428",
      "dataset-uuid": "a963d5d0-5e29-11e1-a4d7-a31977b1e6dd"
    },
    "cpu_cap": "200",
    "networks": [
      {
        "mac_addr": "00:50:56:c0:00:08",
        "vlan_id": "405",
        "physical": "net0",
        "global_nic": "external",
        "index": "0",
        "ip": "163.99.99.99",
        "netmask": "255.255.255.0",
        "gateway": "163.99.99.1"
      },
      {
        "mac_addr": "10:40:f3:7a:c3:8e",
        "vlan_id": "307",
        "physical": "net2",
        "global_nic": "internal",
        "ip": "10.100.101.100",
        "netmask": "255.255.255.0",
        "index": "1",
        "gateway": "10.100.101.1"
      }
    ]
  },
  "network_usage": {
    "net2": {
      "sent_bytes": 25160107660,
      "received_bytes": 5513894125,
      "counter_start": "2014-01-27T23:19:45.003Z"
    },
    "net0": {
      "sent_bytes": 382735714,
      "received_bytes": 570332335,
      "counter_start": "2014-01-27T23:19:45.003Z"
    }
  }
}

Ein Summary Record erscheint im Log nur wenn alle Usage Records für einen Zeitstempel geschrieben worden sind. Summary Records sollten verwendet werden, um sicherzustellen, dass alle Usage Records eines Zeitstempels korrekt gelesen und verarbeitet worden sind. "Runtime" bezeichnet die Laufzeit des Datensammlungsprozesses (in Millisekunden).

Usage Records enthalten - je nach Art der Zone (virtuelle Maschine oder Container) verschiedene Angaben zum Verbrauch. Schön sind in dem Beispiel-Record die Daten über den Netzwerkverbrauch zu sehen. Weiterhin sieht man die gesetzten Maximalwerte für Threads (LWPs), Hauptspeicher, Swap, CPU-Shares (Min), CPU-cap (Max) und die ZFS IO-Priority. Da die Werte alle 60 Sekunden erhoben werden, lässt sich so eine minutengenaue Abrechnung realisieren. Die dezentrale Erhebung mit der zentralen Speicherung in einem idealerweise georedundanten System wie Manta verspricht eine hohe Verfügbarkeit der Daten. Beim Ausfall eines Compute Nodes, ist auch die weitere Erhebung von Verbrauchsdaten für diesen Compute Node sinnlos. 

Für das Übertragen der Daten zu Manta ist sdc-hermes verantwortlich. Die Funktion und die Komponenten des Dienstes werden aus der Ascii-Grafik, die als Dokumentation dient, ersichtlich:

+-------------------------------------------------------------+
| COMPUTE NODE GLOBAL ZONE                                    |
|                                                             |
|   <global zone log files> ............> ****************    |
|                                         *              *    |
|    +-------------------------+          *              *    |
|    | TRITON SERVICE ZONE(S)  |          * hermes-actor *    |
|    |                         |          *              *    |
|    |    <log files> ..................> *              *    |
|    +-------------------------+          ****************    |
|                                                   :         |
|                                 ,---------^       :         |
|                                /                  :         |
+------------------------------ / ----------------- : --------+
                               /                    :
                        deployment,               CONNECT
                      config, control              proxy
                            /                       :
+------------------------- / ---------------------- : --------+
| "sdc" ZONE              /                         V         |
|   ________       ****************       ****************    |
|  (________)      *              *       *              *    |
|  | config |----> *              *  ,--> *              *    |
|  | files  |      *    hermes    *  |    * hermes-proxy *    |
|  \________/      *              *  |    *              *    |
|        |         *              *  |    *              *    |
|        |         ****************  |    ****************    |
|        |                           |              :         |
|        `---------------------------'              :         |
|                                                   :         |
+-------------------------------------------------- : --------+
                                                    :
              .     .                             HTTPS
              |_.-._|                               :
            ./       \.     <.......................;
       _.-'`           `'-._
    .-'        Manta        '-.
  ,'_.._      Storage      _.._',           LEGEND:
  '`    `'-.           .-'`    `'           +-- zone/server --+
            '.       .'                     *** smf service ***
              \_/|\_/                       ... log data .....>
                 |                          --- config ------->
                 |
                 |

Die Konfiguration ist dabei auch relativ einfach. Es müssen nur die beiden Dienste "hermes" und "hermes-proxy" mit Zugangsdaten zu Manta versorgt werden. Dazu loggt man sich in die sdc-Zone von Triton (auf dem headnode) ein und editiert die Konfigurationsdateien für die genannten Dienste. Bei mir sieht die Konfiguration so aus:

[root@e394dcbf-564b-4f43-b428-9a4ce317573f (de-gt-2:sdc0) /opt/smartdc/hermes/etc]# cat config.json
{
  "admin_ip": "10.65.68.25",
  "port": 9999,
  "log_level": "",
  "sapi": {
    "url": "http://sapi.de-gt-2.srv.tgos.de"
  },
  "vmapi": {
    "url": "http://vmapi.de-gt-2.srv.tgos.de"
  },
  "cnapi": {
    "url": "http://cnapi.de-gt-2.srv.tgos.de"
  },
  "manta": { 
    "user": "admin",
    "url": "https://manta.de-gt.srv.tgos.de", 
    "key_id": "5c:b7:25:ef:ec:b4:f3:d3:67:b5:35:5a:c2:3c:b7:88",
    "connect_timeout": "300"
  }, 
  "max_concurrent_bootstraps": 32 
} 
[root@e394dcbf-564b-4f43-b428-9a4ce317573f (de-gt-2:sdc0) /opt/smartdc/hermes/etc]# cat proxy.json 
{  
  "bind_ip": "10.65.68.25", 
  "bind_port": 3128, 
  "backend": "https://manta.de-gt.srv.tgos.de", 
  "log_level": ""  
}

Dabei habe ich nur die Werte unter "manta" und unter "backend" eingetragen, weil diese in den entsprechenden Logfiles der Dienste als fehlend angemeckert wurden. Ist der Dienst nicht konfiguriert sieht er offenbar zyklisch nach, ob eine valide Konfiguration existiert. Ist dies der Fall, wird der Dienst gestartet und der "hermes-actor" auf alle Compute Nodes ausgebracht:

{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"msg":"configuration missing \"manta.user\"","time":"2018-08-13T21:34:16.157Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"msg":"configuration valid; starting...","time":"2018-08-13T21:34:46.159Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"msg":"starting periodic worker","time":"2018-08-13T21:34:46.349Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"component":"HttpServer","level":30,"address":{"address":"10.65.68.25","family":"IPv4","port":9999},"msg":"http server listening","time":"2018-08-13T21:34:46.403Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"9af27feb-dcb4-11e3-8a81-70e28407685c","msg":"deploying actor","time":"2018-08-13T21:34:51.351Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a961e2fe-4626-491d-bf59-a6bbf133043f","msg":"deploying actor","time":"2018-08-13T21:34:51.354Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"6426b66b-11e8-49bd-8185-73171054bae7","msg":"deploying actor","time":"2018-08-13T21:34:51.355Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"eff10f9a-8e60-4a73-811c-5078cde28c7c","msg":"deploying actor","time":"2018-08-13T21:34:51.356Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a5083dee-d9d3-11e3-bdb9-70e284073792","msg":"deploying actor","time":"2018-08-13T21:34:51.358Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"1a06f7b0-bc67-4165-a84a-1bfbd02d1586","msg":"deploying actor","time":"2018-08-13T21:34:51.358Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"1f669469-dcb5-11e3-b04c-70e284076842","msg":"deploying actor","time":"2018-08-13T21:34:51.359Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"3a3100f7-01b9-417f-ae1f-fc98a6773b2b","msg":"deploying actor","time":"2018-08-13T21:34:51.360Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"acef1f38-2cec-11e4-ac14-f9492575343c","msg":"deploying actor","time":"2018-08-13T21:34:51.360Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"2e140f75-d294-40d5-85bf-0b61b713065b","msg":"deploying actor","time":"2018-08-13T21:34:51.361Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"dabadf51-ca52-46c2-a34e-346403432acb","msg":"deploying actor","time":"2018-08-13T21:34:51.361Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"10ff505a-2faa-4e9d-9dda-22eb53e29d22","msg":"deploying actor","time":"2018-08-13T21:34:51.362Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a316e522-f6c1-11e3-b9cb-70e284086a2a","msg":"deploying actor","time":"2018-08-13T21:34:51.362Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a0cc627a-dcb6-11e3-a170-70e28407681e","msg":"deploying actor","time":"2018-08-13T21:34:51.362Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"94caf9cd-15a7-4ee8-b290-0f2b578253d4","msg":"deploying actor","time":"2018-08-13T21:34:51.363Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"bf64ffbf-f419-445f-a00e-26e6e71d3306","msg":"deploying actor","time":"2018-08-13T21:34:51.363Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"99d21c6f-0f7a-4b81-86c2-994ba879b23e","msg":"deploying actor","time":"2018-08-13T21:34:51.364Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"f7206ab8-98da-42bf-8bd5-66cd1c49bb53","msg":"deploying actor","time":"2018-08-13T21:34:51.364Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"6426b66b-11e8-49bd-8185-73171054bae7","msg":"actor deployed","time":"2018-08-13T21:34:51.980Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"eff10f9a-8e60-4a73-811c-5078cde28c7c","msg":"actor deployed","time":"2018-08-13T21:34:52.023Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"9af27feb-dcb4-11e3-8a81-70e28407685c","msg":"actor deployed","time":"2018-08-13T21:34:52.075Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a5083dee-d9d3-11e3-bdb9-70e284073792","msg":"actor deployed","time":"2018-08-13T21:34:52.087Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a961e2fe-4626-491d-bf59-a6bbf133043f","msg":"actor deployed","time":"2018-08-13T21:34:52.137Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"1f669469-dcb5-11e3-b04c-70e284076842","msg":"actor deployed","time":"2018-08-13T21:34:52.661Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"1a06f7b0-bc67-4165-a84a-1bfbd02d1586","msg":"actor deployed","time":"2018-08-13T21:34:52.676Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"3a3100f7-01b9-417f-ae1f-fc98a6773b2b","msg":"actor deployed","time":"2018-08-13T21:34:52.802Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"acef1f38-2cec-11e4-ac14-f9492575343c","msg":"actor deployed","time":"2018-08-13T21:34:52.810Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"2e140f75-d294-40d5-85bf-0b61b713065b","msg":"actor deployed","time":"2018-08-13T21:34:52.914Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"dabadf51-ca52-46c2-a34e-346403432acb","msg":"actor deployed","time":"2018-08-13T21:34:53.361Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"10ff505a-2faa-4e9d-9dda-22eb53e29d22","msg":"actor deployed","time":"2018-08-13T21:34:53.444Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a316e522-f6c1-11e3-b9cb-70e284086a2a","msg":"actor deployed","time":"2018-08-13T21:34:53.477Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"94caf9cd-15a7-4ee8-b290-0f2b578253d4","msg":"actor deployed","time":"2018-08-13T21:34:53.702Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"a0cc627a-dcb6-11e3-a170-70e28407681e","msg":"actor deployed","time":"2018-08-13T21:34:54.033Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"bf64ffbf-f419-445f-a00e-26e6e71d3306","msg":"actor deployed","time":"2018-08-13T21:34:54.061Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"99d21c6f-0f7a-4b81-86c2-994ba879b23e","msg":"actor deployed","time":"2018-08-13T21:34:54.097Z","v":0}
{"name":"hermes","hostname":"e394dcbf-564b-4f43-b428-9a4ce317573f","pid":54823,"level":30,"server":"f7206ab8-98da-42bf-8bd5-66cd1c49bb53","msg":"actor deployed","time":"2018-08-13T21:34:54.220Z","v":0}

Ähnlich sieht es auch bei hermes-proxy aus. Es dauert ein bißchen, bis die Adressen aufgelöst werden können. Doch dann scheint die Verbindung zu funktionieren. Aber die Logfile-Uploads funktionierten leider noch nicht. Auf den Compute Nodes sah das Log des "hermes-actor" so aus:

[2018-08-16T06:00:01.087Z] ERROR: hermes-actor/LogsetWorker/36564 on hh24-gts2-de29: failed to upload file to Manta (logset_name=firewaller_logs)
VError: could not mkdirp: /poseidon/stor/logs/de-gt-2/firewaller/2018/08/12/01: The signature we calculated does not match the one you sent
    at /opt/smartdc/hermes-actor/deploy/lib/worker.js:367:9
    at f (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/once/once.js:16:25)
    at /opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:1352:13
    at next (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/vasync/lib/vasync.js:179:4)
    at self.client.put.onRequestCallback.onResult (/opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:1264:21)
    at /opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:396:17
    at IncomingMessage.<anonymous> (/opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:385:9)
    at IncomingMessage.g (events.js:180:16)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
Caused by: InvalidSignatureError: The signature we calculated does not match the one you sent
    at ClientRequest.onResponse (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/restify/lib/clients/http_client.js:133:38)
    at ClientRequest.g (events.js:180:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient (http.js:1688:21)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
    at CleartextStream.socketOnData (http.js:1583:20)
    at CleartextStream.read [as _read] (tls.js:511:12)
    at CleartextStream.Readable.read (_stream_readable.js:320:10)
    at EncryptedStream.write [as _write] (tls.js:366:25)
    at doWrite (_stream_writable.js:226:10)
[2018-08-16T06:00:01.100Z] ERROR: hermes-actor/LogsetWorker/36564 on hh24-gts2-de29: failed to upload file to Manta (logset_name=vm_agent_logs)
VError: could not mkdirp: /poseidon/stor/logs/de-gt-2/vm-agent/2018/08/11/15: The signature we calculated does not match the one you sent
    at /opt/smartdc/hermes-actor/deploy/lib/worker.js:367:9
    at f (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/once/once.js:16:25)
    at /opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:1352:13
    at next (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/vasync/lib/vasync.js:179:4)
    at self.client.put.onRequestCallback.onResult (/opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:1264:21)
    at /opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:396:17
    at IncomingMessage.<anonymous> (/opt/smartdc/hermes-actor/deploy/node_modules/manta/lib/client.js:385:9)
    at IncomingMessage.g (events.js:180:16)
    at IncomingMessage.EventEmitter.emit (events.js:117:20)
    at _stream_readable.js:920:16
Caused by: InvalidSignatureError: The signature we calculated does not match the one you sent
    at ClientRequest.onResponse (/opt/smartdc/hermes-actor/deploy/node_modules/manta/node_modules/restify/lib/clients/http_client.js:133:38)
    at ClientRequest.g (events.js:180:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at HTTPParser.parserOnIncomingClient (http.js:1688:21)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
    at CleartextStream.socketOnData (http.js:1583:20)
    at CleartextStream.read [as _read] (tls.js:511:12)
    at CleartextStream.Readable.read (_stream_readable.js:320:10)
    at EncryptedStream.write [as _write] (tls.js:366:25)
    at doWrite (_stream_writable.js:226:10)

Auf Anfrage in der Mailingliste erhielt ich den Hinweis, dass ich nicht den User poseidon sondern den User admin verwenden solle (admin  ist der Admin von Triton - poseidon ist der Admin von Manta - nicht mischen). Das habe ich gemacht und dann noch die ssh public-keys des Users admin aus dem de-gt-2 beim selben User im Manta-Setup eingetragen (über die adminui) und dann funktionierten auch die Uploads:

[2018-08-16T07:24:19.883Z]  INFO: hermes-actor/LogsetWorker/36564 on hh24-gts2-de29: uploaded log file to manta (logset_name=fwadm_logs, do_delete=true, upload_time_ms=673, md5=1B2M2Y8AsgTpgAmY7PhCfg==)                                                                                                      
file: {                                                                                                                                            
  "path": "/var/log/fw/fwadm_hh24-gts2-de29_2018-08-12T13:00:00.log",                                                                              
  "mtime": "2018-08-12T12:00:01.000Z",                                                                                                             
  "size": 0,                                                                                                                                       
  "real_path": "/var/log/fw/fwadm_hh24-gts2-de29_2018-08-12T13:00:00.log"                                                                          
}                                                                                                                                                  
--                                                                                                                                                 
manta_path: /admin/stor/logs/de-gt-2/fwadm/2018/08/12/12/hh24-gts2-de29.log                                                                        
[2018-08-16T07:24:20.228Z]  INFO: hermes-actor/LogsetWorker/36564 on hh24-gts2-de29: uploaded log file to manta (logset_name=vmadm_logs, do_delete=true, upload_time_ms=717, md5=1B2M2Y8AsgTpgAmY7PhCfg==)                                                                                                      
file: {                                                                                                                                            
  "path": "/var/log/vm/vmadm_hh24-gts2-de29_2018-08-11T05:00:00.log",                                                                              
  "mtime": "2018-08-11T04:00:00.000Z",                                                                                                             
  "size": 0,                                                                                                                                       
  "real_path": "/var/log/vm/vmadm_hh24-gts2-de29_2018-08-11T05:00:00.log"                                                                          
}                                                                                                                                                  
--                                                                                                                                                 
manta_path: /admin/stor/logs/de-gt-2/vmadm/2018/08/11/04/hh24-gts2-de29.log                                                                        
[2018-08-16T07:24:20.287Z]  INFO: hermes-actor/LogsetWorker/36564 on hh24-gts2-de29: removed local file (logset_name=fwadm_logs, do_delete=true)       
file: {                                                                                                                                            
  "path": "/var/log/fw/fwadm_hh24-gts2-de29_2018-08-12T13:00:00.log",                                                                              
  "mtime": "2018-08-12T12:00:01.000Z",                                                                                                             
  "size": 0,                                                                                                                                       
  "real_path": "/var/log/fw/fwadm_hh24-gts2-de29_2018-08-12T13:00:00.log"                                                                          
}                                                                                                                                                  
--                                                                                                                                                 
manta_path: /admin/stor/logs/de-gt-2/fwadm/2018/08/12/12/hh24-gts2-de29.log

Trotzdem wäre es natürlich interessant, wie die Reports denn nun ungefähr aussehen, die aus den Logfiles erstellt werden. Nach ein paar Wochen Betrieb der Manta-Installation sieht das für Manta aus wie folgt. Für Triton wird es wahrscheinlich ähnlich aussehen:

root@e3b75fc5-3621-cdd8-f9dd-c9acbf4a37e9:~# cat daily-summary.txt
Summary for 2018-10-15T00:00:00.000Z
LOGIN                      GBHOURS     GBSECS      BWIN   BWOUT
admin                      39624       0           27G    0B
poseidon                   33075       8391        0B     0B
mhbloed                    2           0           0B     0B
root@e3b75fc5-3621-cdd8-f9dd-c9acbf4a37e9:~# cat hourly-compute-usage.txt
Generated Fri Oct 19 19:55:11 UTC 2018
Compute data from the hour of 2018-10-19T19:18:11.381Z
LOGIN                      BILLTIME  RAWTIME   JOBS   PHASES  TASKS  BWIN   BWOUT
poseidon                   2m39s     2m39s     3      5       25     47K    0B
root@e3b75fc5-3621-cdd8-f9dd-c9acbf4a37e9:~# cat hourly-request-usage.txt
Generated Fri Oct 19 19:55:07 UTC 2018
Request data from the hour of 2018-10-19T19:20:12.008Z
LOGIN                      TOTAL    BWIN     BWOUT
admin                      1.1G     1.1G     0B
root@e3b75fc5-3621-cdd8-f9dd-c9acbf4a37e9:~# cat hourly-storage-usage.txt
Generated Fri Oct 19 19:55:02 UTC 2018
Storage data from the hour of 2018-10-19T08:23:20.519Z
LOGIN                      TOTAL    STORAGE  PUBLIC   JOBS  
admin                      1.7T     1.7T     0B       0B
poseidon                   1.4T     1.3T     0B       37G
mhbloed                    12M      3.2M     0B       9.3M

Je nach Vorhaben, kann man diese Reports dann als Input für ein Userportal und/oder die Abrechnung verwenden.

Link:


Joyent Hagfish Agent Telemetry Format (Version 4)