Thanos - Scalable Prometheus

Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala no nā haumāna o ka papa "Nā hana a me nā mea hana DevOps".

Fabian Reinartz he mea hoʻomohala polokalamu, Go fanatic, a me ka hoʻoponopono pilikia. He mea mālama Prometheus hoʻi ʻo ia a me ka mea hoʻokumu ʻo Kubernetes SIG instrumentation. I ka wā ma mua, he ʻenekini hana ʻo ia ma SoundCloud a alakaʻi i ka hui kiaʻi ma CoreOS. Ke hana nei ma Google i kēia manawa.

ʻO Bartek Plotka - Infrastructure Engineer ma Improbable. Makemake ʻo ia i nā ʻenehana hou a me nā pilikia o nā ʻōnaehana puʻupuʻu. Loaʻa iā ia ka ʻike haʻahaʻa haʻahaʻa haʻahaʻa ma Intel, ka ʻike hāʻawi ma Mesos, a me ka ʻike hana SRE papa honua ma Improbable. Hoʻolaʻa i ka hoʻomaikaʻi ʻana i ka honua o nā microservices. ʻO kāna mau mea aloha ʻekolu: Golang, open source a me ka volleyball.

I ka nānā ʻana i kā mākou huahana SpatialOS, hiki iā ʻoe ke koho e koi ʻo Improbable i kahi ʻōnaehana ao honua ākea me nā ʻumi o nā pūʻulu Kubernetes. ʻO mākou kekahi o ka mea mua i hoʻohana i kahi ʻōnaehana nānā IHILA. Hiki iā Prometheus ke nānā i nā miliona o nā metric i ka manawa maoli a hele mai me kahi ʻōlelo noiʻi ikaika e hiki ai iā ʻoe ke unuhi i ka ʻike āu e pono ai.

ʻO ka maʻalahi a me ka hilinaʻi o Prometheus kekahi o kāna mau pono nui. Eia nō naʻe, i ka wā i hala ai mākou i kekahi pae, ua loaʻa iā mākou kekahi mau drawbacks. No ka hoʻoponopono ʻana i kēia mau pilikia ua kūkulu mākou Thanos He papahana kumu wehe i hana ʻia e Improbable e hoʻololi maʻalahi i nā pūʻulu Prometheus i loaʻa i loko o kahi ʻōnaehana nānā hoʻokahi me ka waiho ʻana o ka ʻikepili mōʻaukala palena ʻole. Loaʻa ʻo Thanos ma Github maanei.

E noho mau me nā nūhou hou loa mai Improbable.

ʻO kā mākou pahuhopu me Thanos

Ma kekahi ʻano, kū mai nā pilikia ma mua o ka hiki o vanilla Prometheus. Pehea e mālama pono ai i nā petabytes o ka ʻikepili mōʻaukala? Hiki ke hana i kēia me ka ʻole o ka hoʻopale ʻana i ka manawa pane? Hiki paha ke komo i nā metric āpau ma nā kikowaena Prometheus like ʻole me kahi noi API hoʻokahi? Aia kekahi ala e hoʻohui i ka ʻikepili i hōʻiliʻili ʻia me ka hoʻohana ʻana iā Prometheus HA?

No ka hoʻoponopono ʻana i kēia mau pilikia, ua hana mākou iā Thanos. Hōʻike nā ʻāpana aʻe i ko mākou hoʻokokoke ʻana i kēia mau pilikia a wehewehe i kā mākou mau pahuhopu.

Ke noiʻi nei i ka ʻikepili mai nā manawa Prometheus he nui (nā nīnau honua)

Hāʻawi ʻo Prometheus i kahi ala hana i ka sharding. ʻO kahi kikowaena Prometheus hoʻokahi e hāʻawi i ka scalability e hoʻokuʻu i nā mea hoʻohana mai ka paʻakikī o ka sharding ākea i nā mea hoʻohana āpau.

ʻOiai he kumu hoʻohālike maikaʻi kēia, pono pinepine ia e komo i ka ʻikepili ma nā kikowaena Prometheus like ʻole ma o kahi API hoʻokahi a i ʻole UI - kahi ʻike honua. ʻOiaʻiʻo, hiki ke hōʻike i nā nīnau he nui i hoʻokahi papa Grafana, akā hiki ke hoʻokō ʻia kēlā me kēia nīnau ma kahi kikowaena Prometheus. Ma ka lima ʻē aʻe, me Thanos hiki iā ʻoe ke nīnau a hōʻuluʻulu i ka ʻikepili mai nā kikowaena Prometheus he nui no ka mea hiki ke loaʻa iā lākou a pau mai kahi hopena hoʻokahi.

Ma mua, no ka loaʻa ʻana o ka ʻike honua i Improbable, ua hoʻonohonoho mākou i kā mākou Prometheus mau manawa i loko o nā pae he nui. Hui Hoʻohui Hierarchical. ʻO kēia ka manaʻo o ka hana ʻana i hoʻokahi kikowaena Prometheus meta e hōʻiliʻili i kekahi o nā metric mai kēlā me kēia kikowaena lau.

Thanos - Scalable Prometheus

Ua pilikia kēia ala. ʻO kēia ka hopena i nā hoʻonohonoho paʻakikī, ka hoʻohui ʻana i kahi kikoʻī o ka hiki ʻole, a me ka hoʻohana ʻana i nā lula paʻakikī e hōʻoia i ka loaʻa ʻana o ka ʻikepili e pono ai ka federated endpoint. Eia kekahi, ʻaʻole ʻae kēia ʻano federation iā ʻoe e kiʻi i ka ʻike honua maoli, no ka mea ʻaʻole i loaʻa nā ʻikepili āpau mai kahi noi API hoʻokahi.

ʻO kahi pili pili i kēia kahi ʻike lokahi o ka ʻikepili i hōʻiliʻili ʻia ma nā kikowaena Prometheus kiʻekiʻe loaʻa (HA). Hōʻiliʻili kūʻokoʻa ʻo Prometheus 'HA i ka ʻikepili i ʻelua ʻelua, he maʻalahi loa ʻaʻole hiki ke maʻalahi. Eia nō naʻe, ʻoi aku ka maʻalahi o ka hoʻohana ʻana i kahi ʻike hui ʻia a wehe ʻia o nā kahawai ʻelua.

ʻOiaʻiʻo, pono nā kikowaena Prometheus i loaʻa loa. Ma Improbable, lawe mākou i ka nānā ʻana i ka ʻikepili i kēlā me kēia minuke, akā ʻo ka loaʻa ʻana o hoʻokahi Prometheus i kēlā me kēia puʻupuʻu he wahi hoʻokahi o ka hāʻule. Hiki ke alakaʻi i ka nalowale o nā ʻikepili koʻikoʻi i kēlā me kēia hewa hoʻonohonoho a i ʻole nā ​​lako lako. Hiki i kahi hoʻolālā maʻalahi ke hoʻopilikia liʻiliʻi i ka hōʻiliʻili metric no ka mea hiki ke ʻoi aku ka lōʻihi o ka hoʻomaka hou ʻana ma mua o ka wā scraping.

Mālama pono i ka ʻikepili mōʻaukala

ʻO kā mākou moeʻuhane (kaʻana like ʻia e ka hapa nui o nā mea hoʻohana Prometheus). Ma Improbable, ua koi ʻia mākou e hoʻonohonoho i ka manawa paʻa metric i ʻeiwa mau lā (no Prometheus 1.8). Hoʻohui kēia i nā palena maopopo i ka lōʻihi e hiki ai iā mākou ke nānā i hope.

Ua hoʻomaikaʻi ʻo Prometheus 2.0 i kēia ʻano, no ka mea ʻaʻole pili hou ka helu o ka manawa i ka hana holoʻokoʻa o ka server (ʻike. KubeCon kī nui e pili ana iā Prometheus 2). Eia naʻe, mālama ʻo Prometheus i ka ʻikepili ma ka disk kūloko. ʻOiai hiki ke hoʻemi nui ʻia ka hoʻohana ʻana o SSD i ka hoʻohana ʻana i ka SSD, aia ka palena i ka nui o ka ʻikepili mōʻaukala hiki ke mālama ʻia.

Eia kekahi, ma Improbable mākou e mālama i ka hilinaʻi, ka maʻalahi a me ke kumukūʻai. ʻOi aku ka paʻakikī o ka hana a hoʻihoʻi ʻana i nā disks kūloko nui. ʻOi aku ke kumukūʻai a koi aku i nā mea hana hoʻihoʻi hou aku, e hopena i ka paʻakikī pono ʻole.

Hoʻohaʻahaʻa

I ka wā i hoʻomaka ai mākou e hana me ka ʻikepili mōʻaukala, ua ʻike mākou aia nā pilikia koʻikoʻi me ka big-O e hoʻolōʻihi a lohi i nā nīnau ke hana mākou me nā pule, mahina, a me nā makahiki o ka ʻikepili.

ʻO ka hopena maʻamau i kēia pilikia hoʻohaʻahaʻa (downsampling) - e hoemi ana i ke alapine sampling. Me ka hoʻohaʻahaʻa ʻana, hiki iā mākou ke "hoʻohaʻahaʻa" i kahi manawa nui a mālama i ka helu like o nā laʻana, e mālama ana i nā nīnau.

ʻO ka hoʻohaʻahaʻa ʻana i nā ʻikepili kahiko he koi hiki ʻole ke ʻike ʻia i nā hopena mālama mālama lōʻihi a ʻoi aku ma mua o ke ʻano o vanilla Prometheus.

Nā pahu hopu hou

ʻO kekahi o nā pahuhopu mua o ka papahana Thanos ʻo ia ka hoʻohui pono ʻana me nā mea hoʻokomo Prometheus. ʻO ka lua o ka pahuhopu ka maʻalahi o ka hana me nā pale liʻiliʻi i ke komo ʻana. Pono e maʻalahi nā mea hilinaʻi no nā mea hoʻohana liʻiliʻi a me nā mea hoʻohana nui, ʻo ia hoʻi ke kumu kūʻai haʻahaʻa.

ʻO Thanos architecture

Ma hope o ka hoʻopaʻa inoa ʻana i kā mākou mau pahuhopu i ka pauku mua, e hana mākou ma o lākou a ʻike pehea e hoʻoponopono ai ʻo Thanos i kēia mau pilikia.

Nānā honua

No ka loaʻa ʻana o ka ʻike honua ma luna o nā hiʻohiʻona Prometheus i kēia manawa, pono mākou e hoʻopili i kahi helu komo noi hoʻokahi i nā kikowaena āpau. ʻO kēia ka mea e hana ai ka mea Thanos. Pauka. Hoʻonoho ʻia ia ma ka ʻaoʻao o kēlā me kēia kikowaena Prometheus a hana ma ke ʻano he koho, e lawelawe ana i ka ʻikepili Prometheus kūloko ma o ka API hale kūʻai gRPC, e ʻae ana e kiʻi ʻia ka ʻikepili manawa e ka tag a me ka manawa.

Ma ka ʻaoʻao ʻē aʻe, ʻo ka ʻāpana Querier kīʻaha ʻole, ʻoi aku ka nui o ka pane ʻana i nā nīnau PromQL ma o ka Prometheus HTTP API maʻamau. ʻO Querier, Sidecar a me nā mea ʻē aʻe o Thanos e kamaʻilio ma o protocol haʻihaʻi.

Thanos - Scalable Prometheus

  1. Hoʻopili ʻo Querier, i ka loaʻa ʻana o kahi noi, i ka kikowaena API Store Store, ʻo ia hoʻi, i kā mākou Sidecars a loaʻa i ka ʻikepili manawa mai nā kikowaena Prometheus pili.
  2. Ma hope o kēlā, hoʻohui ia i nā pane a hoʻokō i kahi nīnau PromQL ma luna o lākou. Hiki iā Querier ke hoʻohui i ka ʻikepili ʻokoʻa a me ka ʻikepili kope mai nā kikowaena Prometheus HA.

Hoʻoponopono kēia i kahi ʻāpana nui o kā mākou puzzle - hoʻohui i ka ʻikepili mai nā kikowaena Prometheus kaʻawale i kahi ʻike hoʻokahi. ʻOiaʻiʻo, hiki ke hoʻohana wale ʻia ʻo Thanos no kēia hiʻohiʻona. ʻAʻole pono e hoʻololi i nā kikowaena Prometheus i kēia manawa!

Ka palena ʻole o ka mālama ʻana!

Eia nō naʻe, ma hope a ma hope paha makemake mākou e mālama i ka ʻikepili ma mua o ka manawa paʻa Prometheus maʻamau. Ua koho mākou i kahi waiho mea e mālama ai i ka ʻikepili mōʻaukala. Loaʻa ia ma nā ao āpau a me nā kikowaena ʻikepili ma ka hale a ʻoi aku ka maikaʻi o ke kumukūʻai. Eia hou, aneane loaʻa kahi waihona mea ma o ka S3 API kaulana.

Kākau ʻo Prometheus i ka ʻikepili mai ka RAM i ka disk ma kahi o kēlā me kēia ʻelua hola. Aia i loko o ka poloka ʻikepili mālama ʻia nā ʻikepili āpau no kahi manawa paʻa a hiki ʻole ke hoʻololi. He mea maʻalahi kēia no ka mea hiki iā Thanos Sidecar ke nānā wale i ka papa kuhikuhi ʻikepili Prometheus a, i ka loaʻa ʻana o nā poloka hou, hoʻouka iā lākou i loko o nā bākeke mālama mea.

Thanos - Scalable Prometheus

Hiki iā ʻoe ke mālama i ka maʻalahi o ka scraper (Prometheus a me Thanos Sidecar). He mea maʻalahi ke kākoʻo, ke kumukūʻai a me ka hoʻolālā ʻōnaehana.

E like me kāu e ʻike ai, maʻalahi loa ka mālama ʻana i ka ʻikepili. Akā, pehea e pili ana i ka nīnau ʻana i ka ʻikepili i loko o kahi waihona mea?

Hana ʻia ka ʻāpana o Thanos Store ma ke ʻano he koho e kiʻi i ka ʻikepili mai kahi waiho mea. E like me Thanos Sidecar, komo ʻo ia i ka pūʻulu gossip a hoʻokō i ka API Store. Ma kēia ala, hiki i ka Querier ke hana iā ia e like me ka Sidecar, ma ke ʻano he kumu ʻē aʻe o ka ʻikepili manawa - ʻaʻohe pono hoʻonohonoho kūikawā.

Thanos - Scalable Prometheus

Aia kekahi mau waihona nui i nā poloka data moʻo manawa. ʻAʻole maikaʻi ka hoʻouka ʻana iā lākou ma ke koi ʻana, a ʻo ka mālama ʻana iā lākou ma ka wahi e pono ai ka nui o ka hoʻomanaʻo a me ka hakahaka disk.

Ma kahi, ʻike ʻo Store Gateway i ke ʻano o ka mālama ʻana i ka palapala mālama Prometheus. Mahalo i kahi mea hoʻonohonoho huli noiʻi akamai a mālama wale i nā ʻāpana kuhikuhi pono o nā poloka, hiki ke hōʻemi i nā nīnau paʻakikī i kahi helu liʻiliʻi o nā noi HTTP e hoʻopaʻa i nā faila. Ma kēia ala, hiki iā ʻoe ke hōʻemi i ka helu o nā noi e ʻehā a ʻeono mau kauoha o ka nui a hoʻokō i nā manawa pane i paʻakikī ke ʻike mai nā noi i ka ʻikepili ma kahi SSD kūloko.

Thanos - Scalable Prometheus

E like me ka mea i hōʻike ʻia ma ke kiʻikuhi ma luna, ua hōʻemi nui ʻo Thanos Querier i ke kumukūʻai no kēlā me kēia nīnau o ka ʻikepili waihona mea ma o ka hoʻohana ʻana i ka hōpili waihona Prometheus a kau i ka ʻikepili pili i kēlā me kēia ʻaoʻao. Ke hoʻohana nei i kēia ala, hiki iā mākou ke hoʻohui i nā noi hoʻokahi i kahi helu liʻiliʻi o nā hana nui.

Hoʻopaʻa a hoʻohaʻahaʻa

Ke hoʻouka maikaʻi ʻia kahi poloka hou o ka ʻikepili manawa i loko o kahi waihona mea, mālama mākou iā ia ma ke ʻano he "historical" data, i loaʻa koke ma o ka Store Gateway.

Eia nō naʻe, ma hope o kekahi manawa, hōʻiliʻili nā poloka mai kahi kumu (Prometheus me Sidecar) a ʻaʻole hoʻohana hou i ka hiki ke kuhikuhi ʻia. No ka hoʻoponopono ʻana i kēia pilikia, ua hoʻokomo mākou i kahi mea i kapa ʻia ʻo Compactor. Hoʻopili wale ia i ka ʻenekini compaction kūloko o Prometheus i ka ʻikepili mōʻaukala i ka waiho ʻana i nā mea a hiki ke holo ma ke ʻano he hana puʻupuʻu maʻalahi.

Thanos - Scalable Prometheus

Mahalo i ka hoʻopiʻi maikaʻi ʻana, ʻo ka nīnau ʻana i ka waiho ʻana i kahi manawa lōʻihi ʻaʻole ia e pilikia i ka nui o ka ʻikepili. Eia nō naʻe, ʻo ke kumukūʻai kūpono o ka wehe ʻana i hoʻokahi piliona waiwai a holo iā lākou ma o kahi kaʻina noiʻi e hopena i ka piʻi nui o ka manawa hoʻokō nīnau. Ma ka ʻaoʻao ʻē aʻe, no ka mea he mau haneli o nā helu ʻikepili i kēlā me kēia pika ma ka pale, hiki ʻole ke ʻike i ka ʻikepili i ka hoʻonā piha. No laila, ʻaʻole hiki ke hoʻohaʻahaʻa ʻia, akā ʻaʻole ia e alakaʻi i ka nalowale o ka pololei.

Thanos - Scalable Prometheus

No ka hoʻohaʻahaʻa i ka ʻikepili, hōʻuluʻulu mau ʻo Compactor i ka ʻikepili ma kahi hoʻonā o ʻelima mau minuke a me hoʻokahi hola. No kēlā me kēia ʻāpana maka i hoʻopaʻa ʻia me ka hoʻohana ʻana i ka TSDB XOR compression, mālama ʻia nā ʻano ʻikepili aggregate like ʻole, e like me ka min, max a i ʻole ka huina no hoʻokahi poloka. ʻAe kēia iā Querier e koho maʻalahi i kahi hui i kūpono no kahi nīnau PromQL i hāʻawi ʻia.

ʻAʻole koi ʻia kahi hoʻonohonoho kūikawā no ka mea hoʻohana e hoʻohana i ka ʻikepili pololei i hōʻemi ʻia. Hoʻololi ʻokoʻa ʻo Querier ma waena o nā ʻōlelo hoʻoholo like ʻole a me nā ʻikepili maka i ka wā e hoʻonui ai ka mea hoʻohana i loko a i waho. Inā makemakeʻia, hiki i ka mea hoʻohana ke hoʻomalu pono i kēia ma o ka "step" parameter ma ka noi.

Ma muli o ka haʻahaʻa o ke kumukūʻai o ka mālama ʻana i hoʻokahi GB, ma ka maʻamau, mālama ʻo Thanos i ka ʻikepili maka, ʻelima mau minuke a me hoʻokahi hola hoʻonā ʻikepili. ʻAʻole pono e holoi i ka ʻikepili kumu.

Nā lula hoʻopaʻa

ʻOiai me Thanos, ʻo ka hoʻopaʻa ʻana i nā lula he ʻāpana koʻikoʻi o ka pūʻulu nānā. Hoʻemi lākou i ka paʻakikī, latency, a me ke kumukūʻai o nā nīnau. Maikaʻi nō hoʻi i nā mea hoʻohana ke kiʻi i ka ʻikepili i hōʻuluʻulu ʻia e nā metric. Hoʻokumu ʻia ʻo Thanos ma nā hanana vanilla Prometheus, no laila ua ʻae ʻia ka mālama ʻana i nā lula hoʻopaʻa leo a me nā lula makaʻala ma kahi kikowaena Prometheus. Eia naʻe, i kekahi mau hihia, ʻaʻole lawa kēia:

  • ʻO ka mākaʻikaʻi honua a me ka lula (e laʻana, he makaʻala ke hoʻohana ʻole kahi lawelawe ma luna o ʻelua mau pūʻulu ʻekolu).
  • Rula no ka ʻikepili ma waho o ka waihona kūloko.
  • ʻO ka makemake e mālama i nā lula a me nā makaʻala ma kahi hoʻokahi.

Thanos - Scalable Prometheus

No kēia mau hihia āpau, loaʻa iā Thanos kahi ʻāpana ʻokoʻa i kapa ʻia ʻo Ruler, e helu ana i ka lula a me ka makaʻala ma o Thanos Queries. Ma ka hāʻawi ʻana i kahi StoreAPI kaulana, hiki i ka node Query ke komo i nā metric i helu hou ʻia. Ma hope, mālama ʻia lākou i loko o kahi waihona mea a hoʻolako ʻia ma o ka Store Gateway.

Ka Mana o Thanos

Hiki ke maʻalahi ʻo Thanos e hoʻopili i kāu mau pono. Hoʻohana nui kēia i ka neʻe ʻana mai Prometheus maʻamau. E hoʻihoʻi koke i nā mea a mākou i aʻo ai e pili ana i nā ʻāpana Thanos me kahi hiʻohiʻona wikiwiki. Eia pehea e lawe ai i kāu vanilla Prometheus i loko o ke ao o ka "palena helu palena ʻole":

Thanos - Scalable Prometheus

  1. Hoʻohui iā Thanos Sidecar i kāu mau kikowaena Prometheus - no ka laʻana, kahi pahu kaʻa ʻaoʻao i loko o kahi pod Kubernetes.
  2. E hoʻolālā i nā replica Thanos Querier he nui i hiki ke ʻike i ka ʻikepili. I kēia manawa, maʻalahi ka hoʻonohonoho ʻana i ka ʻōlelo ʻōlelo ma waena o Scraper a me Querier. No ka nānā ʻana i ka pilina o nā ʻāpana, e hoʻohana i ka metric 'thanos_cluster_members'.

Ua lawa kēia mau ʻanuʻu ʻelua e hāʻawi i ka ʻike honua a me ka wehe ʻana i ka ʻikepili maʻemaʻe mai ka Prometheus HA replicas! E hoʻopili wale i kāu mau dashboards i ka Querier HTTP endpoint a i ʻole e hoʻohana pololei i ka Thanos UI.

Eia naʻe, inā makemake ʻoe i ka hoʻihoʻi ʻana i nā metric a me ka mālama ʻana i ka wā lōʻihi, pono ʻoe e hoʻopau i ʻekolu mau ʻanuʻu:

  1. E hana i kahi bakeke AWS S3 a i ʻole GCS. E hoʻonohonoho i ka Sidecar e kope i ka ʻikepili i kēia mau bākeke. Hiki ke hoʻemi ʻia ka waihona ʻikepili kūloko.
  2. E hoʻokaʻawale i ka Gateway Store a hoʻohui iā ia i kāu pūʻulu gossip i kēia manawa. I kēia manawa hiki iā ʻoe ke nīnau i ka ʻikepili i kākoʻo ʻia!
  3. E hoʻohana i ka Compactor e hoʻomaikaʻi i ka maikaʻi o ka nīnau no nā manawa lōʻihi me ka hoʻohana ʻana i ka compaction a me ka downsampling.

Inā makemake ʻoe e ʻike hou aku, mai kānalua e nānā i kā mākou kubernetes hōʻike laʻana и hoʻomaka!

Ma nā ʻanuʻu ʻelima wale nō, ua hoʻohuli mākou iā Prometheus i ʻōnaehana nānā pono me ka ʻike honua, ka manawa mālama palena ʻole a me ka loaʻa kiʻekiʻe o nā metric.

Noi huki: makemake mākou iā ʻoe!

Thanos he papahana open source mai kinohi mai. ʻO ka hui pū ʻana me Prometheus a me ka hiki ke hoʻohana i kahi ʻāpana o Thanos he koho maikaʻi loa ia no ka hoʻonui ʻana i kāu ʻōnaehana nānā me ka maʻalahi.

Hoʻokipa mau mākou i nā noi a me nā pilikia ʻo GitHub Pull. I kēia manawa, e ʻoluʻolu e kelepona iā mākou ma o Github Issues a i ʻole slack Improbable-eng #thanosinā he nīnau a manaʻo manaʻo paha kāu, a makemake paha e kaʻana like i kāu ʻike me ka hoʻohana ʻana iā ia! Inā makemake ʻoe i kā mākou hana ma Improbable, mai hoʻokaʻulua e hoʻokaʻaʻike mai iā mākou - he mau hakahaka ko makou!

E aʻo hou e pili ana i ka papa.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka