Press "Enter" to skip to content

GOTO 2018 • Troubleshooting & Debugging Microservices in Kubernetes • Ray Tsang & Robert Kubis


[Musica]
il mio nome è Rey, sono un sostenitore dello sviluppo
per la piattaforma cloud di Google cosa
significa che è il numero uno che mi piace
portare alcune delle nostre migliori tecnologie
comprese le tecnologie open source a
sviluppatori in tutto il mondo e anche io
piace contribuire a migliorare la nostra tecnologia
e più facile da usare e un sacco di quello che ha
fare con un feedback proveniente da tutti
gli utenti e gli sviluppatori come te
quindi sai che voglio davvero sentire
da te dai commenti e feedback
per questa sessione e sì e uno dei
le cose che faccio è di contribuire a
progetti open source e uno dei
il progetto che ho iniziato è una nuvola di primavera
GCP quindi se stai usando come qualcosa
dalla mia primavera e la primavera di avvio abbiamo
Auto veramente bella e facile da usare
configurazione di avviamento per te
Contribuisco anche a G hipster e io
ho il mio progetto Co JT per questo e
di nuovo se avete domande per favore
trovami su twitter su satin ism very
fortunatamente oggi abbiamo anche il mio collega
unendomi a me oggi sai grazie Ray
benvenuto ciao credilo
Sono anche avvocato degli sviluppatori come Reyes
Mi sto concentrando su tutti i dati su cose
sistema distribuito così attualmente al comando
per sistemi di archiviazione e database, ma io sono
anche come avere un po ‘di esperienza in
sviluppo completo dello stack in vari modi
aziende quindi sono molto fortunato che noi
mi ha invitato a co-presentare quella conversazione oggi
se hai ancora domande anche il
la stessa cosa che ti abbiamo offerto mi trovi
anche su Twitter a quello che stai vedendo
grazie ancora per essere qui
e proprio così se non hai notato I
senti come se avessimo la stessa camicia, sì, noi
non ha nemmeno coordinato per quello fantastico
una specie di comunicazione inespressa
è vero, ho notato che hai questo
corto sul tuo profilo immagine troppo a destra
questo è un che indosso da allora mai
toglierlo sì, è molto bello quindi oggi
ti mostreremo qualcosa di carino
cool su microservices ma prima noi
bisogno di mostrarti un’applicazione demo e
questa è probabilmente la migliore demo
domanda che è bella intendo sì
abbiamo mantenuto i due colori molto semplicistici
forse tre se conti qualche pazzo
ombreggia qui questo è ciò che ti piace
con 30 anni di software combinato
esperienza di sviluppo che è quello che
puoi produrre sì sì questo è quello che
tu miri
per un nichel solo per mostrarti quanto male
che questo è ciò che stai usando sai
gioielli per la parte anteriore un po ‘
di bootstrap ho semplicemente fatto il
cosa di bootstrap qui per l’ interfaccia utente
Io non sono uno sviluppatore di front-end va bene così
questa è la cosa migliore che posso fare comunque
dimostra un bel po ‘di
cose di ciò che un micro servizio
applicazione per esempio quando si pop
il tuo nome e il tuo messaggio per le cose andranno
capita quando clicchiamo su quel pulsante della griglia
ti saluterà così
ha un’applicazione demo mondiale Hello
e sta per salvare i dati nel
database e questo è il database
parte si trova la parte del libro degli ospiti di questo
la parte più importante di esso sì così noi
combina la maggior parte della migliore demo
applicazioni in uno così lo rende uno
della migliore applicazione demo migliore
supponiamo tuttavia lo fa mostrare che
l’architettura dietro le quinte così
ecco il diagramma dell’architettura proprio noi
avere il front-end con l’interfaccia utente e poi
abbiamo due servizi dietro le quinte
abbiamo il servizio hollower e il
servizio guestbook e quindi il guestbook
il servizio scriverà i dati sul mio sequel
e per la replica dell’insieme che stiamo usando
Redis dietro le quinte e tu
dovrebbe provare a mettere una semplice applicazione
che probabilmente potresti scrivere anumana
questo in un microsoft complesso
architettura sì sì credo che indovino
questo è tutto ciò che abbiamo deciso di fare comunque come
puoi vedere che forse non è il miglior uso
caso però lo fa bene lo farà
dimostrare alcuni punti in a
secondo va bene quindi andiamo avanti e
dai un’occhiata e io ho qui
schierato tutto in comunità, quindi tutto
di questi servizi sono containerizzati e
abbiamo implementato questo in comunità
ambiente e possiamo vederlo chiaramente
abbiamo il front end qui con a
interfaccia utente guestbook in un abbiamo due istanze
correndo e poi abbiamo il casebook
servizio e il mio seguito e tutto
distribuire distribuire sembrano andare avanti
e ora vedi che ora in realtà vedo perché
lo metti in un micro servizio
architettura perché ora puoi
in realtà scala queste cose
Indipendentemente giusto quindi intendo se il nostro
l’applicazione del guestbook diventa davvero
molto popolari possiamo praticamente scalare
fuori la tua interfaccia utente e poi forse la nostra
backend
Sì, parti di cui abbiamo bisogno, certo che succederà
essere una delle applicazioni più popolari
tra un secondo , lo saranno tutti
usandolo e quindi dobbiamo ridimensionarlo
in piedi con tutti in questa stanza di
Certo ora anche per il fatto che noi
bisogno di scala aspettare che stiamo correndo
questo in a
sei è quello due tre quattro cinque cinque
puoi contare che stai facendo questo in cinque
nodo cluster in modo che questo è in esecuzione su cinque
mulino criminale cluster dietro questi
cose che funzionano su Google Cloud
in questo momento ma questo è solo go go cloud
è il cluster della comunità dietro il
scene tutto bene e siamo in grado di andare avanti e
dare un’occhiata a come questo è in realtà
schierato così nelle comunità che abbiamo
questi file ben definiti e un PR
oggetti ‘che erano abituati a definire
cosa vogliamo implementare e
che queste sono proprietà qui già usate
comunità di cui vedrai uno spettacolo
mani va bene un sacco di gente molto
molto bello sì giusto così alcuni di voi
potrebbe avere familiarità con questo così fondamentalmente
Ho un file giallo qui che definisce
la distribuzione e poi diciamo quanti
istanze che vogliamo distribuire e poi noi
avere queste tabelle che possiamo usare in seguito
così etichette sono valori chiave che solo le coppie
sappiamo che possiamo nominare l’ applicazione che possiamo
dargli un numero di versione e così via
avanti bene puoi etichettare le cose
tuttavia lo vuoi per quella materia e
allora abbiamo l’immagine qui che sono
tirando da un’immagine parlante e questo è
come lo sto schierando per il servizio
che abbiamo visto che abbiamo un servizio di interfaccia utente
definizione qui e abbiamo il tipo di
un servizio che significa solo quello
questo definirà un bilanciamento del carico all’interno
il cluster di Kubernetes e poi lo è
andando ad ascoltare sulla porta 80 per questo carico
bilanciamento e sta andando avanti a
la porta 80 come bene e sta andando a
indirizzare il traffico verso tutto ciò che ha il
etichette corrispondenti e basate su questo
selettore e questo particolare ha un
tipo di un bilanciatore del carico che cosa significa
è che sta andando a creare un vero e proprio carico
bilanciamento con l’ indirizzo IP esterno
ora dipende dall’ambiente che sei
in esecuzione su torneranno al
infrastruttura reale e creare un carico
bilanciatore per te in particolare perché
Al momento stiamo lavorando su Google Cloud
in realtà creiamo un vero carico GC pl4
bilanciamento per te con un vero indirizzo IP
e possiamo effettivamente andare avanti e
dai un’occhiata a questa applicazione lasciami
basta aggiornarlo consumandolo assicurati
Ho due giusto sì giusto così noi
può vedere chiaramente che questo si è aperto
e possiamo vedere questa icona verde che è a
spring bouquet ssin e prendiamo a
Guarda
aspetta tesoro, puoi fare un duro rinfresco
cosa intendi per hot refresh come a
turno maiuscolo si hai un video
no, sono appena arrivato ieri ho pensato
hai pensato che ti saresti preso cura di questo
Ero all’incarico di fibra a Praga
sì prima di ieri quindi non ho avuto
tempo oh sei come sei minuti in esso oh
si, va bene, sì, grazie a tutti per
essere qui sì, mi dispiace per quello, immagino
è così che tieni duro su una seconda presa
un secondo conosco tutti qui cucciolo
vedere un sacco di conferenze e conferenze
cose del genere penso che ognuno di voi
Probabilmente stai facendo il tifo per vedere una demo
in realtà fallito
Immagino sia quello che è oggi ma facciamolo
dare un’occhiata a questo messaggio di errore molto
rapidamente immagino che dobbiamo eseguire il debug di questo
pubblico silenzioso per i prossimi 40 minuti
destra sì All Everybody destra va bene
che sì, ci stai guardando DP sì, vedo
ciò che accade cosa abbiamo qui sì
quindi abbiamo un pozzo probabilmente ne abbiamo uno
delle pagine della freccia di guerre qui sai
perché ora è esattamente a
un’applicazione pronta per la produzione ma è in esecuzione a
ambiente di produzione quindi abbiamo a
freccia bianca etichetta pagina destra destra noi
avere un errore interno del server 400 e noi
avere un 4 4 e 400 e 500 nel
stessa pagina probabilmente non l’hai mai vista
prima
no e ora abbiamo un sì
qui è l’ unica cosa che è
di sicuro questa è un’applicazione java che è
un open to exception sì, sappiamo di Java
sta correndo dietro le quinte sì ma
questo non è ovviamente lavorando in
produzione giusta ma tu non hai mai mai
distribuire alla produzione a meno che tu non abbia
un ambiente di staging che è giusto sì
abbiamo una scena che dovresti controllare
ambiente operativo effettivamente tutto a posto
così così in questo caso quello che abbiamo fatto è
creare
namespace nel nostro cluster così nel tuo
ambiente kubernetes che puoi creare
più domini che dovresti nominare
lo spazio è fondamentalmente un self-contained
ambiente in cui è possibile distribuire il
stessa applicazione in diversi
spazio dei nomi giusto quindi in realtà a quello
punto in modo da utilizzare tutta la configurazione
file che avevamo in precedenza per l’implementazione
e per il servizio e puoi fondamentalmente
distribuire l’intero paesaggio della cravatta
topologia di allerta top della tua applicazione
a diversi spazi dei nomi che non hai
per cambiare qualcosa nella tua configurazione
i file si dichiarano fondamentalmente nuovi
namespace tech e possiamo andare lì così noi
ho visto qui prima che abbiamo una coppia
di spazi dei nomi in esecuzione, quindi ne abbiamo uno per
QA ne abbiamo uno per la messa in scena che avremo
il nostro predefinito , usiamo il nostro default
uno per la nostra produzione quindi diamo un
guarda il nostro allestimento di uno spazio dei nomi e guarda
cosa sta succedendo lì, quindi prendiamone un po ‘
le pentole ci assicurano che sia laggiù
tipicamente quello che faresti è quello
in particolare, il foro che faremmo è
effettivamente eseguire la produzione in un separato
cluster e quindi probabilmente pack di fagioli
tutti questi ambienti non profit in
un cluster separato ma solo per la demo
qui abbiamo il default che è il
produzione, ma in genere si dispone che
in un cluster separato per la produzione e
allora hai allestito un allestimento per lo stage di QA
attenersi a te qualunque cosa in un separato
cluster quindi diamo un’occhiata al
ambiente qui così abbiamo la mia messa in scena
corri corri sì sì va bene guardiamo
ai servizi ma anche come uno di più
puntare a questo spazio dei nomi effettivamente lasciato
tu capsula fondamentalmente tipo di
vincoli di risorse si può sostanzialmente
mettere limiti di risorse su spazi dei nomi
le tue applicazioni se usi solo il normale
come nominare è fondamentalmente gentile
di DNS con scope che hai con tutto il
spazi dei nomi se vuoi parlare
spazio dei nomi devi usare completamente
nome qualificato per parlare, naturalmente
spazi dei nomi ora per questa applicazione noi
effettivamente schierato tutto compreso
il database nel nostro spazio dei nomi così noi
può semplicemente usare esattamente la stessa cosa
file di configurazione come la mappa di configurazione
segreti tutti i servizi di implementazione
e distribuire l’intero stack su un nuovo
namespace e funziona senza
facendo eventuali cambiamenti ora in fase di distribuzione
database per classi di kubernetes no
sempre le migliori pratiche in realtà e
è quello che in realtà vuoi usare è
tipo di servizio gestito che è
gestito fuori e quindi se ne hai
cambia ciò che fai in realtà lo metti
questi cambiamenti nelle tue mappe di conflitto
e come forse hanno diversi segreti
e distribuisci mappe dei conflitti diverse
e segreti per il tuo diverso
ambienti ma tutto il resto
di nuovo devi solo distribuire lo stesso stack così
qui siamo di fronte a questo momento al
servizi che vengono distribuiti
nel nostro spazio dei nomi di staging e anche noi
avere un servizio di bilanciamento del carico in esecuzione con
un IP pubblico quindi diamo un’occhiata al nostro
la messa in scena è sbagliata, sì , questo è il nostro
ambiente di produzione che in alcuni
104,7 t3 e quindi possiamo provare a connetterci
al nostro ambiente separato qui per
messa in scena oh oh questo è interessante quello che
funziona così anche per qualcuno
lavoro non so chi sia questa persona ma
Sto per salutare e ciao, sì
interessante
sì e spero che funzioni sì sì
Certo che funziona di nuovo probabilmente no
mai andare in produzione senza messa in scena
funziona bene, quindi ci aspettiamo
questo funziona perfettamente, quindi cos’è
qual è il prossimo passo che devi trovare
fuori ciò che in realtà dobbiamo soffiare e
messa in scena e prod destra, si, si
così come a volte la tua produzione potrebbe
essere in esecuzione una versione diversa e
messa in scena o perché ragazzi qualcosa
altro in scena ma sono abbastanza sicuro di me
schierato esattamente la stessa cosa a
messa in scena e l’ho fatto con il mio spiegamento
File schiero esattamente la stessa cosa in modo
se scorrimento qui se riesci a vedere il
file qui da qualche parte abbiamo il
nome dell’immagine o intenzione di distribuire I
avere questo in un parlatore artefatto
registro qui e al passo peruca tu
conosco il mio corpo Pirozhki che sta ospitando questo
per me quindi è sotto il suo nome utente e
il punto è Alleluia I che è il
nome del contenitore e ho il
ultimo alto giocatore più tardi sul serio il
più recente sì sì porta USB il
ultimo con il potassio, giusto
parlando di integrazione continua e
consegna continua no sì l’ultima
la pratica non è sempre la migliore pratica
giusto perché, perché non è l’ultimo di
certo, come lo sai?
in realtà la stessa cosa è in esecuzione
dietro l’ultimo tech sei prepotente
quella tecnologia ogni volta che costruisci il bene
e distribuendolo o pubblicandolo a
il tuo registro quindi non lo sai davvero
se la stessa cosa sta correndo lì, cosa?
intendi così così quello che stai dicendo è
come se i miei ultimi spettacoli potessero essere
diverso dalla produzione come oh è
solo un esempio, abbatti il ​​tuo
immagine docker fondamentalmente I sulla mia macchina
con l’ultimo tech e lo fai
giù due giorni dopo con l’ultima tecnologia e
qualcuno potrebbe aver cambiato qualcosa dentro
tra e lo ha spinto al registro così
l’immagine che tag è simile a punti
l’ultima è in realtà un contenuto diverso
rispetto all’immagine che si trova sulla mia macchina
correndo con interesse che non dovresti usare
un
l’ultimo tech che dovresti davvero usare
modifica la versione del tuo sistema di compilazione
dà effettivamente ad ogni immagine del contenitore
questo è stato creato
Lo vedo a volte dovresti probabilmente
utilizzare la versione dell’applicazione o
il bunam burr o me anche hash agata
da dove proviene il codice sorgente e così via
e tale diritto giusto ma da rober
già implementato cosa possiamo fare
va bene così da quando l’abbiamo schierata
già abbiamo bisogno di ispezionare effettivamente cosa
è ciò che è in realtà in esecuzione qualunque
quale immagine del contenitore è attualmente in esecuzione
quindi abbiamo qui i nostri vasi che vediamo i nostri
ciao vai al tuo iPod e quindi andiamo
in un cubo CTL ha descritto che in realtà
ci mostra alcune ulteriori informazioni sono
intorno all’ambiente di questo vaso che
sta correndo sì sì, lo vedo
CTO cubo descritto e facendo così
può vedere molti dettagli su questo
istanza particolare e posso vedere il
variabile ambientale qui che sono
usando per configurare il backend che io
voglio chiamare perché abbiamo questo
il servizio di comunità è definito che sto chiamando
solo vuoto o servizio e guestbook
servizio questi sono automaticamente esposti
essere accompagnato come un servizio di carico
bilanciatore, ma se lo scorrimento un po ‘
Posso anche vedere l’immagine che è il
ultimo e altro è l’ID dell’immagine e
Posso vedere lo sha-256 e questo è il
uno che si identificherà in modo univoco questo
l’ immagine particolare non è giusta così
confrontalo ora facciamo un po ‘di umano
checksum sì rispetto a quello che vogliamo
per confrontare questo con raggiungere la messa in scena
giusto quindi facciamo qualcosa che ricordi
i primi cinque per un I forte
ricorda l’ultimo per il modo in cui io
non posso ricordare cinque e un altro membro
tutto in mezzo
sì, devi ricordare che ho postato cifre
nella posizione giusta la caratteristica giusta
perché altrimenti dici oh c’è un
vino ma scrivi il primo per i mi piace
per essere ok 0 347 hai tutto
giusto quindi possiamo entrare in produzione
alcuni sono andati bene sul palco in realtà tu
sapere cosa devo copiare e incollare
questo o sto per copiare e incollare questo
giusto e poi andiamo a cercare le parti
vediamo qui un nome che descrive la bellezza
difficile
oh no, facciamo entrare in scena oh
si si no lo sai mettere il no io
ho una copia e incolla di nuovo scusa, va bene
quindi ti do una valutazione del tuo peso
descrivi il potere nella stadiazione così quando tu
voglio riferimento
in un ambiente che vuoi sempre usare
il – in così qui facciamo l’ allegato
messa in scena e tutti si ricordano ancora
il cha tutto bene ho dimenticato il mio già
si qualunque si, okay, ricordo zero
tre che è molto meno ricordano
va bene così nell’ambiente di messa in scena noi
avere le stesse variabili d’ambiente
ricorda perché stanno correndo dentro
posti di nome diversi a cui stiamo facendo riferimento
al servizio di Hollow Earth ma tale ambito
solo che lo spazio nome così non abbiamo
devo davvero cambiare la configurazione
tuttavia se guardo l’ ID dello spettacolo lì
andiamo così ricordo zero zero quattro zero tre
quattro sette
sì, due per la pace, tutti sono bravi, sì
dì che ricordi il tuo così loro sono
esattamente la stessa immagine ma è
ovviamente una parola e l’altra
non lo fa
giusto così sai cosa c’è dentro
forse potrebbe esserci un bello che il
il codice sorgente che non è esattamente pronto
per la produzione o qualcosa di simile
ma possiamo effettivamente andare e tornare indietro
vedi, quindi è molto importante che tu mantenga
traccia dei metadati utilizzati
la build all’interno di un contenitore in modo che
o hai qualche tipo di sistema di metadati
che tiene traccia di ciò che effettivamente è andato nel tuo
contenitore giusto e ce ne sono molti molti
modo diverso di farlo
stiamo usando una fabbrica per questo
particolare applicazione in modo che possiamo
in realtà tornare alla fabbrica di auto
istanza e potenzialmente possiamo vedere
cosa sta succedendo cercando il
negozio ora la prima cosa che ho bisogno di fare di
Certo è login ci andiamo
tutti chiamano i tuoi occhi cosa sono miei
password lì andiamo bene e lasciami
accedi bene e poi possiamo
probabilmente fare una ricerca e se devo
Shaw, che ho intenzione di copiare e incollare io
può andare avanti e cercare questi assegni
ora fuori di nuovo in un registro diverso
sistema come probabilmente puoi fare il
cerca in modo simile a Google Cloud per
esempio abbiamo il nostro registro dei contenitori
e probabilmente si può cercare con la
checksum anche con lo Shaw ma qui
molto chiaramente possiamo vedere l’ultimo è
effettivamente 50 sì, quindi avrebbe potuto essere usato
avrei dovuto usarlo nel mio nella mia
file giallo per usare il tag 50 per il mio
immagine e quindi possiamo potenzialmente entrare
e vedi i dettagli dell’immagine qui con quello
i metadati quindi, per esempio, abbiamo il nome
e tutto ciò che abbiamo l’implementazione da parte
da Mark che è Mark, conosci il marchio che è
interessante quello che qualcuno ha chiamato Mark
effettivamente distribuito questa immagine nel
registro quindi sappiamo che siamo lontani
sai chi incolpare sì forse
beh, non si tratta di cultura irreprensibile
giusto che è comunque possiamo anche tornare indietro
per vedere come la bellezza in realtà accade così
se effettivamente stai usando Jenkins o
qualcos’altro che possiamo potenzialmente collegare
indietro è importante per tenere traccia di
anche i metadati, quindi possiamo collegarci
di nuovo all’istanza che ho effettivamente creato
questa particolare bellezza comunque penso il mio
Il server Jenkins è giù sono sempre
giù per qualche motivo
quante persone qui hai a volte te
ha fatto una bellezza nei server Jenkins
via e non puoi tornare alla build
più
fortunatamente per noi siamo in grado di vederne alcuni
più io che non sono qui per questo
esempio ne abbiamo molti dei più importanti
sono mantenuti intatti quindi sappiamo ad esempio
quale applicazione java usa l’istanza java
usiamo per vedere questa applicazione, ma
ancora più importante abbiamo anche il
metadati dei quali sono i file jar
associato a questo particolare butte così
per esempio qui abbiamo l’interfaccia utente in modo che
ho la tua domanda e conosciamo il
versione che è zero punto zero
un’istantanea sì sì, certo che usiamo
l’ultimo tag immagine e noi sempre il
puntare l’istantanea no ora si dovrebbe
non farlo mai da solo
inserisci il pattern che sto mostrando qui
non farlo proprio bene così a questo
punto, penso che abbiamo praticamente capito
quello che è abbiamo schierato ciò che è dentro
l’ immagine continua e siamo carine
sicuro che siano esattamente uguali
immagine tra messa in scena e produzione tutto
giusto ma stiamo ancora avendo questo
problema in ambiente di produzione quando sono
messa in scena quindi cosa vuoi fare è
in questo momento probabilmente andresti
e guarda i log dei tuoi contenitori
proprio così in un sistema tradizionale
qualunque cosa tu faccia entri in un
macchina SSH in una macchina abbassare a
file forse da più istanze se
si dispone di più istanze in esecuzione
devi decomprimere questo file devi
in qualche modo portali in un formato che tu
posso cercarli voglio dire che puoi immaginare
quanto tempo ci vuole e quanto noioso
è in realtà ottenere alcune informazioni
attraverso i tuoi registri, sì, ero abituato
scrivere proscritti e usare molti dei
grande condivisione di commenti per capire cosa
le linee di blocco sto bene, ma da noi
stanno eseguendo questo
l’applicazione su Kubernetes possiamo
effettivamente utilizzare alcuni strumenti di Kubernetes per
guarda nelle nostre greggi in modo che possiamo fare un cubo
CDL non ottenere parti per le parti e poi
facciamo un blocco CTL del cubo e possiamo usarlo
il trattino F per fondamentalmente lo streaming del
registra nella nostra shell ora aspetta un secondo
Robert Ho due istanze qui che io
non ho guardato a quali sono le arti per me
per trovare questo messaggio di errore in uno di
queste istanze bene direi che lo è
5050 giusto sì Wayne – okay
piuttosto buono ma in un micro servizio
ambiente perché questo è assolutamente
applicazione popolare potremmo avere di più
di uno o più di due istanze
in questo momento, cosa succede se scala questo perché
a volte hai il ridimensionamento automatico
a volte sono uno in due casi di
Certo che ora ho due istanze se io
fai in modo che un CTO cubo ottenga pod di nuovo, fammi vedere
qui pausa ora dovrei avere squadre questo
assemblaggio in esecuzione ora Robert quali sono i
probabilità per me di essere in grado di trovare il mio log mio
freccia qui in una delle cose questo è
facile sì, qui c’è un po ‘di matematica dura
Wayne dieci destra anche 5050 5050 quanto bene
o lo trovi o non lo fai
questo è il punto giusto che è giusto così io
Direi che è come pubblico crede
funziona bene, non sono molto bravo con la matematica
sfortunatamente così ti prendo la parola per
quindi lasciami andare avanti e vedere i log
qui e con una di queste cose Oh Oh
dai un’occhiata che sono molto fortunato oggi
si si si, molto molto fortunato, dovrei
andare a comprare un po ‘di lotteria tutto bene qui andiamo
quindi posso vedere il registro in dettaglio
ma se voglio vedere tutti i log
sta accadendo in tutte le istanze
non voglio passare attraverso questi
uno
giusto perchè ho qui Tim Potts se ne ho bisogno
per fluire da ognuno di essi
Avrò dieci diverse console
aperto a destra in modo da non voler andare
attraverso tutti e cerca il tuo
errori giusti quindi in pratica praticamente
vuoi trasmettere i log da tutti i tuoi vasi
che stanno correndo verso la tua console
quindi ci sono alcuni strumenti là fuori
che possiamo usare per questo sono tutti
console così anche Stern è uno di loro
o una coda cubo che puoi usare e tu
fondamentalmente definire la distribuzione che è
correndo e dì come darmi tutto il
registra per quello per le parti che sono
in esecuzione per una certa distribuzione qui
usiamo la distribuzione del mondo Ciao e noi
usa il turno e ora scorre fondamentalmente
tutti i log di tutte le nostre parti per
quella distribuzione
al nostro antipasto però sì in a
ambiente di produzione questo potrebbe non essere
così utile perché, perché voi sapete
a meno che non si dispone di utenti questo è
cosa vedrai che stai per
vedi queste lettere semplicemente cadendo giù
schermo il più velocemente possibile
come la matrice giusta, quindi non è così
particolarmente utile se si è in realtà
avere un sacco di problemi nel tuo
ambiente di produzione che vedrai
queste frecce dappertutto fino a te
cattura l’errore che effettivamente vuoi
per indagare correttamente è chiamato
di buffer del tuo shell yeah sì che è
perché lo farai tutto il tempo tutto
destra
quindi non è molto utile, va bene così
in realtà vogliamo aggregare questo registro
da qualche parte quindi vogliamo davvero
aggregare in una sorta di registro
sistema di aggregazione così nell’open source
mondo che cosa potresti usare è come
elasticsearch log stash e Gabanna per
istanza e aggregare tutti i log
su cui sono in esecuzione i contenitori
i tuoi nodi in una registrazione centralizzata così
Stavo per dire uno dei più
cosa importante qui è che nel
mondo del contenitore soprattutto se si distribuisce
in kubernetes cerca semplicemente di non scrivere il
registra in un file prova a inviarlo a STD
out o freccia STD e registrare la registrazione
agenti nel tuo centralizzato nel tuo
il cluster kubernetes sarà in grado di scegliere
li sollevano e poi li spediscono al
logger centralizzato per ulteriori analisi
giusto così da quando stiamo correndo su gke on
Motore di Google code vanitas ciascuno
i nodi hanno un e installato fluentemente e un
installazione agente che raccoglie sostanzialmente
tutti i registri formano i tuoi vasi e put
loro nel nostro registro centralizzato che
è lo stackdriver
quindi possiamo fondamentalmente andare alle serrature di registrazione
e quindi possiamo selezionare noi contenitori gke
selezionare il cluster che è in esecuzione su
demo 2 qui e poi elencherà il
namespace se il Wi-Fi è felice con noi
oppure possiamo farlo possiamo cercare il
namespace e ora fondamentalmente i flussi
tutti i nostri log in questa finestra e tu
posso cercare ore
ok diciamo sì, selezioniamo anche
il mondo ciao, sì, così possiamo scavare
giù nel contenitore specifico che vogliamo
a guardare e qui abbiamo tutto il
eccezioni ovviamente lo sai in una qualsiasi di
i logger centralizzati che usi
probabilmente ti permetterò di fare questo e
anche la ricerca così possiamo cercare
per le eccezioni posso fare clic su di esso noi
può vedere da dove proviene il 404
cucciolo
la freccia 500 se scorro un po ‘
un po ‘dovrei riuscire a vedere in te lo sai
potenzialmente dove questo sta accadendo e
qui possiamo vedere riposare sul posto, quindi forse
forse stava succedendo quando sto facendo un
chiama da qualche parte comunque una delle cose
Mi piace fare nei miei precedenti lavori quando
dovevo sapere per la produzione e
risoluzione dei problemi che potrei chiamare alle 2:00
sono al mattino giusto 20 nel
mattina e niente funziona o
qualcosa non funziona e uno dei
la prima cosa che mi piace fare è capire
è quanto è grande questo raggio d’esplosione è
sta succedendo questo errore accadendo su tutti
delle macchine giuste perché se lo è
dicendo che so che starò sveglio tutto il giorno
o tutta la notte fino a quando tutto è sistemato o
forse è solo accadendo in una delle
macchine e poi basta e basta
lo fermi e basta
giusto se sta accadendo su uno dei
forse potresti semplicemente smetterla
puoi semplicemente reindirizzare il traffico da
quella macchina e sono semplicemente felici
quello giusto e quindi risolvere il problema
dopo
quindi una delle cose che dovresti essere
in grado di fare è estrarre di più
informazioni dal registro e quando dico
Io uso un sacco di pro e uva che è
perché volevo non solo scaricare
tutti questi file di registro che voglio anche fare
qualche tipo di analisi forse in Hadoop in
con script di maiale o qualcosa del genere
per capire più una delle cose
che qui potremmo esportare
questo registro potenzialmente diversi
giusto così per esempio puoi potenzialmente
inoltra questo a un sistema di messaggistica come
si apre in modo da poter fare quasi vicino
analisi in tempo reale di ogni voce del registro
che ti interessa o il mio preferito
uno lo sta effettivamente inoltrando in grande
Ferrari dove posso effettivamente usare il sequel
query per creare i nostri registri ora è il selettore
un sistema che usiamo anche internamente
chiamato Dremel dove Google usa Dremel
per interrogare una grande quantità di
testo strutturale del testo compresi i registri come
beh, personalmente ho dovuto usare un dremel
internamente per estrarre i log in
risolvere i problemi in passato, ma ora
possiamo usare bigquery per farlo, quindi lasciami fare
vai avanti e apri la console della cava
qui perché ho già messo tutto
i registri di questo particolare sistema di nuovo
probabilmente lo puoi fare in un open
sistema sorgente anche se hai una scintilla
e cose del genere così una delle cose
quello che abbiamo è sul lato sinistro
possiamo vedere tutti i diversi log in modo che possiamo
in realtà query e una delle cose è
in realtà holloway UI quindi questo è il
contenitore a cui siamo interessati e
allora possiamo vedere tutto il diverso
colonne possiamo usare il corion e di nuovo
possiamo solo scrivere query sequel a
ragazza in strip più informazioni su cosa sono
sta per fare è aprire una query di salvataggio
che ho giù per questo particolare
applicazione che sto per aprire questo in
l’ editor di carriera e il nostro così qui
in realtà quello che stiamo facendo è noi
vuoi fare un po ‘di aggregazione che vuoi
vedere se in realtà un contenitore sta fallendo
nel nostro sistema o se si diffonde
tutti i nostri contenitori in esecuzione
giusto quindi cosa stiamo facendo qui siamo noi
fondamentalmente vai nel nostro mondo Ciao
il tuo io un tavolo sono come separati
di giorno quindi vedi come ogni giorno noi
avere uno di questi, quindi scegliamo quello
dal giorno in cui filtriamo su
contenitore del tipo di risorsa e ciao
interfaccia utente mondiale per il nome del contenitore e noi
guarda anche solo le eccezioni
perché vuoi solo dimostrare di essere aggregato
tutte le eccezioni in modo che si raggruppino per
il nome del contenitore e quindi l’ordine
dagli eventi in modo che abbiamo a
bella vista su chi è quello che
ha molto quindi cerchiamo di eseguire questa query
una nota veramente rapida è bigquery
in pratica non devi creare un
istanza o qualsiasi cosa tu possa semplicemente mettere
tutti i tuoi dati sono lì e paghi
per uso
ci sono anche alcune tariffe forfettarie, se tu
bisogno di una tariffa fissa, ma fondamentalmente questo
il sistema sta semplicemente scalando oltre ogni immaginazione
almeno per la mia mente sì e tu no
necessario pre disposizione tutte le risorse sì
quindi per esempio adesso abbiamo solo noi
abbiamo 2.71 megabyte, tuttavia possiamo fare
la query simile su centinaia di
gigabyte o terabyte e così sarebbe
ancora tornare in secondi che è un
davvero molto bello e facile da ottenere
estrarre informazioni da una grande quantità
di file di registro, ad esempio, ma hey Robert
guarda che abbiamo un’istanza che è
in particolare avendo qualche problema qui
sì, sai come sono gli altri
si si è di per sé normale per Java
giusto dovremo guardare quelli
più tardi ma sì, ma ce n’è uno che è
avendo solo un problema, diciamo giusto
smettila cosa voglio dire, diciamo solo
riavvialo riavvialo in modo che possiamo sì così
incriminare è ciò che puoi fare noi
può ovviamente fare il pod di cancellazione e poi
quello che succede in questo chiuderà questo
contenitore particolare e ripristino del
nessuno, ma Robert sa che non è così
molto bene perché se cancello 8nh
riavvia un’altra istanza e oltre
qualcosa sta funzionando di nuovo
che va bene, ma se succede
di nuovo la prossima settimana
abbiamo appena riavviato e poi
noi automatizziamo la merda proprio così lui
fondamentalmente semplicemente fantastico scrivere il proprio lavoro
e scrivi un cron job
sì e appena riavviato giusto chi non ha
riavviato Java Runtime come ogni settimana
base si può evocare qualcuno c’è
sempre qualcuno nella stanza va bene così
sai prima che il mio servizio si esaurisce
memoria come intorno al segno della settimana così tu
riavviato dopo cinque giorni in te
potrebbe per la cronaca c’è un cron job
la funzionalità aumenta a tuo piacimento
in realtà può crunch alcuni di questi
cose però non dovresti mai un cron
lavoro la rimozione della tua applicazione su
base settimanale solo perché non è così
lavoro ogni settimana
va bene questo per il record che ti ho detto
che comunque tu sai che non lo sappiamo
vogliono solo cancellare perché allora
diventa molto difficile risolvere i problemi
sta accadendo e anche se succederà
ancora
non sapremmo perché, così in realtà io
guarda il tuo punto come se tu se lo volessi
per indagare se c’è qualcosa in
questo contenitore che in realtà vuoi prendere
fuori servizio e poi indagare
in modo che tu non lo fermi e solo
distruggi tutte le prove
giusto ma non lo vuoi anche tu
continuare a servire il traffico così
il braccio dei tuoi clienti ha un brutto
esperienza quindi ciò che in realtà possiamo fare è
possiamo toglierlo dalla trappola
in kubernetes
e il modo in cui lo stiamo facendo è
in realtà con le etichette quindi abbiamo visto prima
a cui sono associate queste etichette
i nostri schieramenti e ai container
e abbiamo anche nel nostro servizio sì
mostriamolo come un dispiegamento
guarda questo , supponiamo di essere noi
supponiamo che questa sia la corporazione
e sospettiamo davvero che questo sia il
problema quindi possiamo abbiamo bisogno di dare un’occhiata
a quello che sta succedendo dentro bene prima di
tutto ciò che ricordo ti mostra le etichette
prima ora ho un’etichetta speciale
qui un codice che serve questa è l’etichetta
che ammetto di essermi inventato proprio così
nel bilanciatore basso qui abbiamo anche
il selettore che verrà instradato
traffico verso quelli che hanno l’etichetta
di servire è uguale a vero e
attualmente se diamo un’occhiata alle parti
possiamo anche mostrare l’etichetta di servizio qui
e possiamo essere in grado di vederlo
tutte le zampe hanno l’etichetta di servizio
così vero sì, ci siamo
Quindi, se ho diminuire un po ‘e siamo in grado di
vediamo che abbiamo
l’ UI hollower nella porzione è impostata
vero e quello che ha problemi giusti
qui e quello che possiamo fare è ovviamente noi
può potenzialmente scavalcare l’etichetta così
Mi mancherà la parte destra W 64 LC
sì e possiamo impostarlo per servire la bandiera
per esempio, per esempio, e così sarà
efficacemente fuori dal servizio ora
se torno di nuovo ai piatti, se vedo
questa è tutte le istanze in esecuzione
quello che è successo possiamo vederlo chiaramente
questa porzione è impostata su true false così
che non è più il traffico
ci sono furti e vediamo anche questo
ce n’è uno che è in realtà solo
ha iniziato la nuova 311 ora e la cosa è
piace non solo il server come il nostro
PC di servizio su cui stava lavorando il modello
il servizio vero ma anche il nostro spiegamento
stava cercando quell’etichetta che serviva
vero così ora lo spiegamento da parte nostra se noi
ha preso fuori abbiamo portato anche fuori dal
spiegamento e in Kubernetes voi
ha descritto lo stato che fondamentalmente dici
come quello che vuoi avere così
la distribuzione descrive che vogliamo
ho dieci parti della nostra interfaccia utente mondiale Hello così
di conseguenza ne abbiamo portato fuori uno e
fondamentalmente hey va bene ho bisogno di riavviare
un nuovo negozio in parte quindi iniziamo solo a
nuovo e ora abbiamo dieci dieci in servizio
di nuovo e quello che abbiamo appena
isolato e tirato fuori e ora possiamo andare
avanti e indagare se questo è in
esattamente il problema quindi ci sono un paio
di cose che puoi fare una volta che prendi
fuori servizio se non vuoi
influire sul traffico di produzione nella finestra mobile
contenitori quello che puoi fare è farlo
qualcosa di più scuro e preciso e poi tu
può entrare nel contenitore e può
risolvere alcune cose lì, ma questo
richiede l’uso di SSH nelle macchine
Giusto compromettere tutto ciò di cui hai bisogno
fare è fare cubo città o esatto TI per
l’interazione terminale e poi il
nome del piatto e poi del guscio se
ce l’hai nel contenitore poi questo
mi farà entrare direttamente nel guscio
di questa particolare istanza contenitore
e posso fare tutto il basic
risoluzione dei problemi che posso fare una volta entrato
lì così possiamo vedere chiaramente che lo è
correndo sulla prima e poi possiamo fare
è un kill tre che in realtà costringe il
per esempio la minaccia, possiamo farlo
puoi eseguire J stat se vuoi
contro questa piastra particolare così così
ci sono molte cose che puoi fare
una volta dentro il contenitore
sì, solo una parola di cautela sono andato a
una società e ho mostrato tutte queste cose
con il cubo X e poi qualcuno ha camminato
fino a me è come
Non è che non mi piaccia davvero a te
ha mostrato questo come ora tutti i nostri ingegneri
andare in produzione
è come attraverso le parti ne fanno alcuni
cambia quel qualcosa giusto, quindi non farlo
questo diritto lo usa solo per l’imballaggio
scopi non lo fanno per configurare il tuo
parti in produzione e puoi anche
limitare l’accesso a questo in base al nostro
di nuovo in kubernetes , ad esempio tu
può limitare alcune persone che devono
un tale accesso nella costruzione di altre persone
va tutto bene e l’altra cosa
Certo è che forse vuoi attaccare
un vero debugger di qualche tipo che tu
è necessario allegare il collegamento alla porta
è in esecuzione in questo particolare
istanza o forse vuoi solo testare
questo particolare esempio per vedere e
convalidare la nostra ipotesi così per
Ad esempio, quello che possiamo fare è stabilire
il tuo porto in avanti, così possiamo
istituire port forwarding qui direttamente
in quel caso particolare ho intenzione
legare alla mia porta locale 8080 così sono
ascolterò sulla mia porta 8080 sul mio
portatile e intenzione di inoltrare il mio traffico
in questa particolare istanza in esecuzione
puoi anche usare una macchina sulla porta 8080
usa la tecnica simile per legare a
altre porte come gmx o una porta debugger
se lo vuoi e ora il porto è legato
e posso andare lì per la prima volta
e vedere se questa istanza è in realtà il
problema oh funziona
si e per qualche ragione questa persona lo è
qui di nuovo va tutto bene così
funziona per alcune persone e non è così
lavoro per me e bene, funziona davvero
quindi questa cosa visto che va bene proprio come
questa istanza va bene, puoi solo metterla
indietro sì, ma se lo rimetto è
andando di nuovo alle istanze viventi felici
giusto fammi vedere cosa succede qui, quindi se
Dico servire e il loro giorno così abbiamo ottenuto
questo per questo … qui giusto e possiamo mettere
torna indietro se vuoi o possiamo ucciderlo
ma mettiamo la schiena così sono
andando a sitt istanza a vero va bene
non ha raggiunto questo come Java Runtime
vita destra sì sì è abbastanza grande
okay, ci siamo
Va bene così possiamo anche vedere chiaramente che
perché dichiariamo che vogliamo prendere
istanze una volta che le abbiamo rimesse abbiamo 11
Kubernetes deve ridimensionare questo punto
a 10 e deve prendere alcune decisioni
ci sono alcuni euristici qui in termini
di come le comunità decidono su quale
per sbarazzarsi di così ogni volta che ridimensionato
laggiù ci sono alcune euristiche per cui
esempio cercherà di mantenere
i più sani che sia
correre per il tempo più lungo in giro per
il tempo più lungo che proveremo
rimuovere le istanze come non salutari
e / o ha il minor tempo di esecuzione destra
quindi fondamentalmente quello che ha il
il tempo di esecuzione più lungo è probabilmente il più
stabile e probabilmente il servizio di alcuni di
anche la maggior parte del traffico, quindi in realtà
rimosso in modo efficace una delle istanze
quindi è carino ma Robert mio
applicazione è ancora ora lavorando tutti
destra
abbiamo visto i log che abbiamo alcune teorie
su cosa succede penso che dobbiamo andare
indietro e dobbiamo capire davvero
cosa sta succedendo davvero noi
ha avuto questa bellissima visualizzazione qui
che probabilmente non abbiamo progettato perché
sembra un po ‘bello e sì
yeah Così vediamo qui abbiamo le nostre parti siamo
avere i nostri nodi non è realmente reale
rappresentazione come hai fatto un video
no no no no no no no questo non lo è
Visio questo è HTML con JavaScript
giusto però hai ragione tu intendo io
vediamo che avevamo in precedenza due pod in esecuzione
per l’ interfaccia utente Ciao mondo che abbiamo ora
partecipare in modo che sia chiaramente dinamico ma Rd
linee anche dinamiche ooh mi hai preso
perché è complicato
ambiente microservizi potenzialmente
hai davvero bisogno di capire il
topologia di come sono i tuoi servizi
chiamandoci a vicenda ora questo diagramma
sfortunatamente non sta riflettendo il
lo stato attuale esatto la ragione è questa
Robert Cotton queste linee sono in realtà
hard-coded nella mia distribuzione così questi
le linee sono in realtà solo annotazioni
L’ho messo qui nel mio spiegamento, così sono
dicendo fisicamente qui che il mio cavo
la nostra interfaccia utente sta parlando alla tua guerra vuota
il servizio è chiamato per aiutare il libro degli ospiti
servizio e così via e così via
effettivamente questo è davvero più vicino a
documentazione giusta in valore e
documentazione sai cosa sarebbe
quello che è con la documentazione è giusto
è fondamentalmente obsoleto dal momento in cui tu
scrivilo chi ha avuto la situazione in cui tu
stavano scendendo come se cercassi di eseguire il debug
qualcosa usando la documentazione fino al
qualcuno ha bussato alla tua spalla e ha detto
come questo non è più come funziona
questa documentazione è obsoleta sì
Va bene va tutti a destra a destra e
è troppo brutto, quindi abbiamo bisogno di qualcosa di più simile
tempo reale come intuizioni su ciò che è
in realtà sta accadendo giusto e ci sono
diversi strumenti che è possibile utilizzare
informazioni in tempo reale su come i tuoi servizi
comunicano tra loro per
esempio nel cluster di vaniglia o è possibile
distribuire qualcosa chiamato scope della settimana
per esempio e con la trama questa volontà
in realtà introspetto la loro rete di vita
connessioni tra i tuoi servizi
quindi per esempio posso stabilire un tiro
per questo nella mia applicazione di ambito del tessuto
e qui posso vedere chiaramente alcuni dei
il traffico in diretta che sta attraversando così noi
può vedere chiaramente ciao la nostra interfaccia utente sta parlando
a Zipkin alleluia sta parlando con Redis
e se dovessi effettivamente effettuare una chiamata così
per esempio lasciami prendere questo qui e
mi permetta di appena ottenere tessere sul lato opposto
proprio come qui forse in poi posso
notate la bella interfaccia utente, quindi se faccio un aggiornamento
giusto qualche connessione di rete potrebbe
capita e se succedesse dovremmo esserlo
in grado di vederlo con gli altri loro
ancora vedi la linea che è appena spuntata
su possiamo vedere la rete live
connessioni Ho appena passato attraverso, ma questo
è davvero bello tipo di capire è
la mia connessione di rete sta davvero andando
ma di solito non lo sai
cosa sta causando il problema come in questo
caso sappiamo che le connessioni di rete sono
tutto sta accadendo, ma sto ancora ottenendo un
problema nel mio livello di applicazione giusto così
questo è solo a livello di rete voi
in realtà non mi piace il contesto di
come quale richiesta ha creato quale rete
connessione qui solo ciò che sta accadendo
nel tuo cluster ti serve un po ‘di più
livello più alto
intuizioni su ciò che sta realmente accadendo
sì e così per farlo potremmo aver bisogno di
fare un po ‘più di tracciamento a livello di applicazione
e questo è ciò che chiamiamo tracciamento digitale
infatti 119 anni fa quando ne avevo una grande
architettura orientata ai servizi
implementazione presso una società di consulenza
per società di servizi uno dei primi
cosa che il mio manager mi ha detto di fare era
per assicurarsi che ho un ID di richiesta
che viene propagato a valle per
ogni richiesta e ne faccio un’altra
servizio e poi quando stiamo stampando
i registri cerchiamo sempre di stampare il
accedi con un ID di richiesta che riceviamo
e noi propagheremo la stessa richiesta
ID tramite l’intestazione a valle e quella
era più di dieci anni fa e tu sai
questa pratica è ora formalizzata
distribuire il tracciamento e possiamo usare
esattamente la stessa tecnica con alcuni
tipo di strumenti, ad esempio, se lo sei
scrivere un’applicazione java che è possibile utilizzare
qualcosa come coraggioso e puoi
propagare le tracce a solo due
zip c’n se usi primavera e primavera
bootie può usare sleuth di nuvole primaverili e
che genererà automaticamente il
traccia ID e propagalo per te se
sei in una piattaforma di analisi del presepe e
forse vuoi usare qualcosa di simile
East EO allora possiamo la piattaforma e steel
può generare queste tracce per te e
propagare anche per te va bene così così
abbiamo effettivamente l’applicazione usando
Traccia ora, quindi immagino che possiamo andare e
dai un’occhiata sì
va bene, quindi dove andiamo?
facciamo lo slash stackdriver
tracciando sì , andiamo ad aspettare quale traccia
così tipicamente sai di aver aperto
mondo sorgente puoi propagare la traccia
a Zipkin o Jaeger dove hai un
bella interfaccia utente per dargli un’occhiata ma tu
devono anche essere in grado di sapere ingerire
tutte le tracce il più possibile
rapidamente possibile o puoi usare a
servizio gestito in questo caso particolare
che conserveremo effettivamente le tracce
per te Robert aiutami qui mi sono preso così
molte tracce qui non so cosa
guarda bene credo che dovremmo
filtrare un po ‘sì sì, possiamo
filtra per HTTP uno stato qui così
abbiamo avuto circa 500 errori che abbiamo visto
su questo e abbiamo alcune tracce lì
che possiamo controllare e vediamo in realtà
la cronologia quindi questo è fondamentalmente
mostrandoci attraverso tutte le chiamate tra
i nostri micro servizi per quanto tempo erano
come quello che è stato chiamato fondamentalmente a
modello a cascata di questo e solo per fare
un altro punto per apprezzare l’importo dei dati
che in realtà ti metti a tracciarti
può controllarlo dicendo fondamentalmente
come se volessi avere solo un migliaio
delle mie richieste vengono messe in traccia così
sì , qui possiamo chiaramente vedere questo è
cinquecento e se scendo riesco a vedere
che questo abbiamo fatto una chiamata a Hollow
Servizio terrestre e quindi ecco i quattro
quattro in modo che spiega il motivo per cui il pavimento
è venuto da così sappiamo da qualche parte
lungo questa chiamata sicuramente questa cosa
fallito e questo è ciò che sta causando il nostro
corretto funzionamento dell’applicazione destra ma noi non lo fanno
sapere esattamente perché questo sta accadendo ancora
destra più abbiamo bisogno di reget abbiamo bisogno di
approfondire abbiamo bisogno di andare più in profondità qui
quindi sappiamo come stanno accadendo le parole che
il servizio sta fallendo, quindi ora che cosa
faresti in una vita normale quello che tu
farebbe è aggiungere qualche registrazione
giusto aggiungere altro e
Moloch’s ed Moloch’s who’s in the in the
campo del sistema di debug della linea di stampa
portare il mio sistema fuori linea di stampa no davvero
siete tutti sofisticati va bene così
ma come facciamo fanno un taglialegna italiano
per il debug ma sì è come cosa
come faresti normalmente così?
devi sapere come va bene ciò che è
in esecuzione quale versione è fondamentalmente
in esecuzione è necessario abbattere il codice
per la revisione in esecuzione nel tuo
nel tuo cluster, quindi è necessario aggiungere
alcune dichiarazioni di debug e poi tu
passare attraverso la pipeline ad alta distribuzione
e distribuirlo alla produzione come a
hotfix quindi chi può qui nella stanza
effettivamente distribuire diciamo entro un’ora
alla produzione penso che sia il più
che abbiamo visto penso di sì
ok perché usano i kubernetes
giusto giusto chi è nel campo
un giorno va bene che siamo camp andando off
più di un giorno tutto bene si, lo è
immagina proprio come se dovessi farlo
distribuire un hotfix con tutto il tuo debug
informazioni e devi aspettare un giorno
fino a quando non compare nei tuoi registri da allora
questa è una grossa fetta dei tuoi clienti
potrebbe essere andato sì questo sarebbe molto
arrabbiato sì sì, ma possiamo fare di meglio
possiamo fare meglio quando sei in un pizzico
quando hai bisogno di scoprire cos’è
in realtà succede che effettivamente abbiamo un
agente di debugger a cui è possibile collegarsi
la tua applicazione in particolare Java o per
alcune delle altre lingue e cosa
possiamo fare è collegare un debugger
fondamentalmente qui così per esempio nel
Linea comune Starla Java che possiamo allegare
con l’agente d’affari puoi eseguire qualsiasi
ambiente che vuoi ciò che ottiene
tu sei quello che chiamiamo l’inizio di
un asse di debug proprio così a volte in a
pizzicare questo è assolutamente questo è
effettivamente necessario così con questo
cosa particolare cosa possiamo fare noi
può navigare verso l’applicazione che noi
voglio fare il debug quindi qui stiamo parlando
su ciao stai io si può vedere che
il codice sorgente scaricato automaticamente
e questo perché nel mio palmo nella mia
costruire in realtà associato l’ottenere
informazioni quindi so dove si trova il bambino
repository so anche quale revisione
del codice ho bisogno di fare riferimento a un RD
sodomita
L’interfaccia utente farà automaticamente riferimento a questo
dati e tira giù il codice sorgente
automaticamente e siamo in grado di navigare in
il controller dell’interfaccia utente e noi
può fare un debug di stampa come
Robert fallo Robert come fai di solito
esegui il debug della tua linea di stampa, se necessario
per eseguire il debug di uno di questi controller qui
quindi è il controller che ha il
problema giusto così normalmente il modo in cui io
Go è come una specie di ricerca binaria si
iniziato con una riga di stampa in alto
proprio all’inizio ti piace il numero
uno come sì sì sono qui
e poi abbastanza e poi prima del
ritorno, io sono – ho finito – vedo
e quindi se qualcosa non funziona
tra te tornerai indietro e ne aggiungi un altro
linea che si lascerebbe proprio diritto facciamo
modifica una linea adesso Ok, quindi io
voglio sapere qual’è il nome?
è il nome così qui possiamo usare la variabile
riferimento qui così quando dico che il nome è
nome okay e poi forse dico codice
saluto forse qualcosa del genere
giusto così non appena ho fatto questo nel
eseguire il debug qui l’agente di debug
riceve le informazioni e ora tutte
le istanze ora possono effettivamente
produrre questi log, ad esempio se io
torna qui e fai il refresh di alcuni
ogni volta che passo attraverso questo
linea di codice su una delle istanze il
il registro viene effettivamente prodotto e io posso
convalidare questo naturalmente se torno a
la console di login qui, quindi se torno indietro
al registro e conosci il trapano
se disponi di un registratore centralizzato , puoi farlo
vai a cercare il contenitore che sei
cercando giusto puoi vedere tutto il
registri che stanno arrivando e poi tu
può vedere il loro errore qui questo è il
errore con la legge con l’eccezione se
Ci guadagno un po ‘ci sono giorni
quindi questo è un punto di legge che ho appena aggiunto e
quello è il numero uno che sono qui significa carino
buono e poi numero di cavallo numero due
due non erano finiti ma numero due cosa
la diga è vuota e quindi qualcuno no
Metti un nome lì dentro, io sì qualcuno
non era vero? mi hai capito? sì sì
Immagino che tu sia lì giusto ma di
Ovviamente ora sappiamo qual è l’input effettivo
è stato possibile convalidarlo molto
meglio e capire questo ma ma
tipicamente conosci la cosa del logging
non sai che dobbiamo andare molto
di logging qui è molto molto
conveniente per noi farlo bene ma
a volte voglio solo attaccare un
debugger e passo bene il codice
a quante persone piacerebbe o?
il coraggio di farmi chiedere se mi piacerebbe
collega il debugger di produzione al tuo
codice sì
Oh lì
lo fai davvero cool debugger di induzione
Reena aspetta un secondo
bene se dovessi allegare il reale
debugger di produzione se sei ancora
serve il traffico che vuoi vedere
ciò che sta realmente accadendo cosa sarebbe
capita che mi chiami giusto e dica
Ehi, Robert, c’è un cliente
sta aspettando, puoi attraversarlo sì?
passo attraverso il codice nella latenza
sarà come quanto ci vorrà
due minuti si dà una fusione di due
minuti di sicurezza negozio destra cercatori di lavoro
ogni volta che hanno un’istanza lenta e
questo ti chiameranno per farlo
si, ma possiamo fare meglio se vuoi
fare come il debugging del livello di produzione con
il vero debugger che possiamo effettivamente chiedere
qualcosa ha chiamato un’istantanea in modo simile
se si aggiunge l’agente al proprio
applicazione è possibile fare le istantanee come
bene
quindi per esempio se sono veramente interessato
in quello che sta succedendo in una riga del
codice come per esempio qui vado
al servizio holloway che sto per fare
scattare un’istantanea in questo momento per
posso fare allora è per rinfrescarti
possiamo vedere che stiamo aspettando un’istantanea
il più presto una richiesta che posso vedere
esattamente quello che gli stati sono nel mio
applicazione posso navigare attraverso il mio
variabili posso vedere l’endpoint al nostro
sto cercando di colpire posso vedere molto chiaramente
il nome è quello e quindi posso vedere tutto
delle tracce con il co stack direttamente
qui ora, naturalmente, se vuoi fare un passo
attraverso il codice è anche molto facile
eccetto che non blocchiamo puoi semplicemente aggiungere un
punto di osservazione in ognuna di queste linee
e ogni volta che torniamo al
applicazione facciamo un aggiornamento stiamo andando
per catturare le tracce per ogni singolo
una di queste linee va bene e cosa
puoi davvero non solo puoi farlo
questo nell’interfaccia utente che potresti davvero fare
allegare anche il bugger ad esempio da
IntelliJ o altro qualsiasi altro strumento che
si desidera avere sì così giusto per
riassumere ok self il tempo che vogliamo
un bel po ‘di diverse utility che puoi
uso con kubernetes di cui abbiamo parlato
utilizzando un logger centralizzato in modo che noi
può analizzare cosa c’è nella traccia di accesso
maggiori informazioni e si spera che tu possa
interrogarlo e piangere molto di più
informazioni da esso si abbiamo parlato
osservabilità quindi in sostanza aggiunta
utilità per ottenere tracce di come cosa
sta accadendo nel tuo micro servizio
topologia e veramente ispezionare come cosa
sta accadendo e quali sono le cose
sequenze che sono in esecuzione e se siete
in pizzico quando ne hai davvero bisogno
capisci cosa c’è nella tua giornata
carico utile che devi bloccare
tutto o puoi aggiungere un debugger
dove puoi effettivamente vedere il
il traffico di produzione che sta attraversando
che potrebbe effettivamente aiutarti a determinare
la causa principale molto molto rapidamente e
ricordati per ognuno di questi
ci sono le soluzioni open source e
allora ci sono anche soluzioni nel
piattaforma cloud dove siamo in grado di aiutare a
fare questo molto più facile pure e con
che ho detto grazie mille per essere
qui e tu puoi trovare tutta la fonte
codice e parte del materiale sul
link e grazie per averci ringraziato
molto vi ringrazio
[Applausi]

Please follow and like us: