Preskočiť na obsah

Analýza a riešenie problémov s telemetriou

V tejto časti sa zameriame na opravu chýb Gnocchi a Ceilometra, ktoré potom spolu integrujeme. Tieto komponenty slúžia na zber metrík. Konkrétne Ceilometer pomocou svojich agentov zbiera metriky a ukladá ich do datbaázy Gnocchi, ktorá má registrované API rozhranie v Keystone.

Počas celej doby riešenia problémov som postupoval podľa dokumentácie Gnocchi&Ceilometer. Komunikoval som aj s ich podporou na Charmhube.

Problémy s Gnocchi

Služba Gnocchi bola v chybovom stave: gnocchi-api maskovaná/inaktívna, gnocchi-metricd bežala.

Zistené chyby

  • Chyba hooku: metric-service-relation-broken
  • Log: missing identity_service.auth_host
  • Chýbajúce vzťahy: database pre Ceilometer

Problémy vznikli z neúplných alebo nesprávnych vzťahov medzi Gnocchi a Keystone.

Riešenie

Prvým krokom bolo obnovenie chýbajúceho vzťahu medzi službou Gnocchi a Keystone. Tento vzťah je nevyhnutný, aby Gnocchi mala prístup k identitnej službe OpenStack a mohla overovať požiadavky. Obnovenie vzťahu sa vykonalo príkazom:

juju integrate gnocchi:identity-service keystone:identity-service

Po pridaní vzťahu bolo potrebné reštartovať jednotku gnocchi príkazom:

juju resolved gnocchi/0

Preistotu aj reštartujeme služby gnocchi nasledovne:

juju ssh gnocchi/0
sudo systemctl restart gnocchi-api
sudo systemctl restart gnocchi-metricd

Na overenie stavu služieb sme použili:

juju status gnocchi
juju ssh gnocchi/0
systemctl status gnocchi-api
systemctl status gnocchi-metricd

Po doplnení vzťahu na keystone sa nám stav Gnocchi zmenil z error na active.

Problémy so Ceilometrom

Po vyriešení problémov s Gnocchi sme sa presunuli na opravu Ceilometra.

Ešte keď Gnocchi nebol v stave active, tak ceilometer písal chybu The identity-credentials and or metric-service relations are not complete. Ceilometer-upgrade cannot be run until they are ready a bol v stave blocked.

Ako sme opravili Gnocchi tak nám prešiel príkaz:

juju integrate ceilometer gnocchi

Následne bolo v dokumentácii písané, že treba spraviť upgrade. Zo statusu ceilometra, ktorý si zobrazíme príkazom:

juju status ceilometer

Tak aj samotný ceilometer písal, že je potrebný upgrade Run the ceilometer-upgrade action on the leader to initialize ceilometer and gnocchi.

Preto sme spustili príkaz:

juju run ceilometer/0 ceilometer-upgrade

Upgrade sa pustil no stretli sme sa s novou chybou CRITICAL ceilometer [-] Unhandled error: gnocchiclient.exceptions.ClientException: {"message": "The server is currently unavailable. Please try again at a later time.<br /><br />\nThe Keystone service is temporarily unavailable.\n\n", "code": "503 Service Unavailable", "title": "Service Unavailable"} (HTTP 503).

Po komunikácii s podporou na Charmhub-e a prezeraní logov sme zistili, že problém je v ssl certifikátoch, ktoré podpisovala certifikačná autorita Vault.

Riešenie

Stiahneme si certifikát z jednotky Vault príkazom:

juju run vault/leader get-root-ca

Tento výstup obsahoval PEM certifikát, ktorý sme potom uložili na Gnocchi aj Ceilometer:

juju ssh gnocchi/0
sudo tee /usr/local/share/ca-certificates/vault-ca.crt <<'EOF'
-----BEGIN CERTIFICATE-----
(obsah certifikátu)
-----END CERTIFICATE-----
EOF
sudo update-ca-certificates

Podobne aj na jednotke Ceilometer. Môže sa stať, že certifikát sa zle stiahne a bude obsahovať náhodné znaky. Je potrebné si ho overiť príkazom:

sudo cat /usr/local/share/ca-certificates/vault-ca.crt

Potom už nám Ceilometer upggrade prebehol bez problémov a momentálne je v stave active.

Overenie posielania metrík

Na jednotke gnocchi si vytvoríme súbor napríklad gnocchi-openrc.sh.

sudo nano gnocchi-openrc.sh

Súbor musí obsahovať všetky premenné prostredia potrebné na prihlásenie do OpenStacku/Keystone. Obsah súboru vyzerá nasledovne:

export OS_AUTH_URL=https://10.11.1.137:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_PROJECT_DOMAIN_NAME=service_domain
export OS_USER_DOMAIN_NAME=service_domain
export OS_PROJECT_NAME=services
export OS_USERNAME=gnocchi
export OS_PASSWORD='XXX'

Všetky potrebné premenné nájdeme v súbore /etc/gnocchi/gnocchi.conf.

Následne zadáme príkaz:

source ./gnocchi-openrc.sh

A potom príkazy:

openstack token issue
gnocchi metric list

Ak by sme nezadali príkaz source ./gnocchi-openrc.sh tak sa môžeme stretnúť s chybami typu Missing value auth-url required for auth plugin password respektíve The request you have made requires authentication. (HTTP 401).