19/Documentation
Crew komutları
Tek bir URL arkasında birden fazla makinenin Collie'si: davet etme, katılma, deputy, yük devretme
crew, tek bir lead altında Collie çalıştıran birkaç makinedir ve telefonunuz her makinenin herd alanına lead'in tek URL'si üzerinden erişir. Lead telefonunuzun ulaştığı makinedir, diğer her makine bir üyedir ve deputy devralmasına izin verilen tek üyedir.
| Komut | İşlevi | |
|---|---|---|
collie crew invite | Tek kullanımlık, 10 dakikalık bir kayıt belirteci üretin (lead üzerinde) | |
collie crew add <ssh-host> | kendi SSH'niz üzerinden bir eş kurun ve kaydını yapın (lead üzerinde) | |
| `collie crew update <üye>… \ | --all` | Her makinede, ardından lead'de, ardından her bir eşte kendi SSH'niz üzerinden teker teker ön kontrol yapın; ilk hata çalıştırmayı durdurur (ayrıntılar) |
collie crew status | Mod, üyeler, erişilebilirlik, secret alma ve bir bağlantının neden reddedildiği | |
collie crew rotate | Crew gizli anahtarını yeniden oluşturun ve erişilebilir her eşe iletin | |
collie crew rename <name> | Crew'a yeni bir ad verin (lead üzerinde) | |
collie crew remove <member> | Bir üyenin sabitlemesini kaldırın ve onu unutun (lead üzerinde) | |
collie crew set-address <member> <host:port> | Bu lead'in bir üyeyi aradığı adresi düzeltin | |
collie crew deputy <member> | Devralabilecek TEK eşi belirleyin ve hazırlayın; --revoke kimseyi belirlemez | |
collie crew approve-promote <member> | Lead üzerinde, bir üyenin devralması için onay; 10 dakika, tek kullanımlık; --cancel bunu temizler | |
collie crew join <lead-address> [<token>] | Bir crew'a katılın (katılan makinede); bir belirteç verilmezse ister, stdin için - veya @file geçin | |
collie crew leave | Crew'dan ayrılın; bu makinedeki crew secret'ını ve diğer her üyenin sabitlenmiş sertifikasını siler | |
collie promote | BU makineyi lead yapın (devralan peer üzerinde; lead erişilemiyorsa --force) | |
collie reconnect | Bir üye taşındı: hiçbir şeyi yeniden kaydetmeden yeni adresine yönlendirin |
collie join ve collie leave çalışmaya devam eder. Bunlar aynı argümanları ve çıkış kodlarını kullanan, collie crew join ve collie crew leave için alias'lardır.
collie pack da bu tablodaki her eylem için çalışmaya devam eder. Aynı argümanlar ve çıkış kodlarıyla collie crew için bir alias'tır. collie docs pack bu sayfayı yazdırır ve web uygulamasının /pack adresi /crew adresine yönlendirir. Her üçü de 2.0.0 sürümünde kaldırılacaktır (ADR 0038).
deputy, approve-promote ve promote komutları failover durumunu yönetir. Kurulum ve kurtarma talimatları için docs/deployment.md → standby kapısı ve kötü gün bölümlerine bakın.
İki makine, bir crew
Biri Herdr ve biri Collie için olmak üzere iki komut bir makine ekler; crew add aracının ssh ile bağlanamadığı bir ana bilgisayar ve düz HTTP sunan bir lider için manuel bir yol mevcuttur.
herdr machine add --label <name> <ssh-target> # prepare the remote host
collie crew add <ssh-host> # install Collie there and enroll itherdr machine add başında oturduğunuz makinede çalışır. Uzak ana makineye Herdr kurar ve onu Herdr'ın kendi listesine kaydeder; makineyi crew'a eklemez. collie crew add lead üzerinde çalışır. <ssh-target> ve <ssh-host> aynı ana makinedir, user@host olarak veya ~/.ssh/config dosyanızdaki bir Host diğer adı olarak yazılır; <name> ise yalnızca Herdr'ın listesini etiketler.
collie crew add <ssh-host>, Collie'yi kendi ssh bağlantınız üzerinden uzak ana makineye kurar ve kaydeder. Token'ı yerel olarak üretir, uzak makinede Collie'yi yapılandırır ve orada collie crew join çalıştırır. herdr machine add komutunun oraya koyduğu Uzak ana makinede Herdr önceden kurulmuş gerektirir, bu yüzden iki komut birlikte kullanılır. Düz HTTP sunan bir lead için elle bir adım daha gerekir, çünkü crew add --insecure desteklemez: katılan makinede collie crew join --insecure çalıştırın. Belirli bir ana makine için crew add veya manuel yoldan birini kullanın, asla ikisini birden kullanmayın. Hedef belirtilmeden çalıştırılan collie crew add, ssh yapılandırmanızın ve Herdr'ın zaten bildiği ana makineleri her adın çözümlendiği ana makinede birleştirerek listeler; bu nedenle ana makineyi ikinci bir şekilde yazmak (aşağıda) yerine bu listeden seçin.
crew add, kendi yükleme türünün belirttiği rotayı izler. Herdr eklenti yüklemesinde olduğu gibi bir git çalışma kopyasından çalışan bir lider, kendi işlemesini (commit) üyeye iletir ve orada derler; bu nedenle ilgili üyenin git ve Bun araçlarına ihtiyacı vardır. bağımsız kurulum üzerinden veya bir paketten çalışan bir liderin işlemesi yoktur, bu nedenle üyeyi kendisinin çalıştırdığı sürümden, aynı ssh üzerinden gönderilen Collie'nin kendi yükleyicisiyle yükler; ilgili üyenin bunun yerine curl, tar ve sha256sum veya shasum araçlarına ihtiyacı olur. --path, ilk rotada uzak çalışma kopyasını, ikinci rotada ise yükleme kökünü belirtir. Zaten diğer yükleme türünü çalıştıran bir üye, üzerine yazılmak yerine reddedilir ve ret mesajı sorunu çözen tek komutu belirtir. Bu ikinci rotada üye, sürümü doğrudan github.com üzerinden indirir; bu nedenle github.com rotası olmayan bir üye, çalışma kopyasından çalışan bir lidere ihtiyaç duyar.
Uçbirim collie crew update aynı iki rotayı kullanır ve birini seçmek için aynı olguyu okur: çalışma kopyasındaki lider kendi işlemesini her üyeye iletir, tek başına yüklemeden veya bir paketten gelen bir lider ise her üyeyi kendisinin çalıştırdığı sürüme eşitler. Bir sürüm liderinde, git çalışma kopyasından çalışan bir üye, satırında belirtilen ve o makinede çalıştırılacak tek komut olan collie update --to-tag v<version> ile atlanır. Bir çalışma kopyası liderinde, install.sh tarafından yüklenen bir üye ise tam tersi şekilde atlanır: sürümleri kabul eder, bu nedenle telefonun Güncellemeler sayfası onu eşitler. Atlanan bir üye çalıştırmayı hiçbir zaman durdurmaz ve onay bunu ayrı olarak sayar.
Manuel yol dört komuttan oluşur. Bunu ssh bağlantınızın erişemediği bir ana bilgisayar için veya liderin yükleme türünden bağımsız olarak düz HTTP sunan bir lider için kullanın: her lider türü crew add ile bir üye ekler. Lider, telefonunuzun zaten eriştiği örnektir ve katılan makinede Collie yüklü ve çalışır durumda olmalıdır.
- Lead üzerinde token'ı üretin.
collie crew invite # prints the token, then the join command to runBelirteç tek satırdan oluşur:
<token>.<lead-fingerprint>.
- Katılan makinede crew'a katılın ve sorulduğunda token'ı yapıştırın.
collie crew join https://lead.tail1234.ts.netAdresi
inviteçıktısından kopyalayın. Bu adres örnekteki değil, lead'inizin kendi adresidir.
- Lead üzerinde, çalışan sürecin yeni üyeyi alması için onu yeniden başlatın.
collie restart
- Lead üzerinde, bağlantının yanıt verdiğini doğrulayın.
collie crew status # the new member, its address, and whether the link answered
Belirteçler tek kullanımlıktır, on dakika geçerlidir ve bir kez görüntülenir. Lead yalnızca hash değerini saklar. invite komutunu çalıştırmak, gelen kaydı kabul edebilmesi için lead sürecini yeniden başlatır ve lead adını içeren katılma satırını yazdırır.
3. adım ikinci bir yeniden başlatmadır ve join kapanırken bunu belirtir. invite, kaydı kabul edebilmesi için lead'i yeniden başlattı. Ardından join yeni üyeyi diske yazdı ve çalışan süreç, tekrar yeniden başlatılana kadar o üyeye giden trafiğe vekillik etmez.
Etkileşimli bir terminalde, join belirteci girmenizi ister. Bir betikte - bayrağını geçirin ve belirteci stdin üzerinden sağlayın:
collie crew join https://lead.tail1234.ts.net - # paste the token on stdinBelirteci diskten okumak için bunun yerine @<file> bayrağını geçirin. Ham belirteçleri doğrudan argüman olarak geçirmek bir uyarı yazdırır, çünkü süreç listeleri argümanları tüm yerel kullanıcılara açık hale getirir (CREW_PROTOCOL.md §8.3).
Lead adresini, bu düğümden erişilebilen herhangi bir ana makine adına veya host:port değerine ayarlayın. Şema ve bağlantı noktası içermeyen bir adres, Collie'nin kendi dinleyicisinin bağlandığı bağlantı noktası olan https://<host>:8787 değerine çözümlenir.
crew invite komutunun ne yazdırdığı, lead'in nasıl yayımlandığına bağlıdır. Varsayılan HTTPS modunda lead, loopback üzerinde dinler ve tailscale serve onu 443 numaralı bağlantı noktasında yayımlar. Dolayısıyla invite, 443 numaralı bağlantı noktasını arayan https://<full-tailnet-name> yazdırır. Ön kapıyı COLLIE_SERVE_PORT ile taşıdıysanız <name>:<port> yazdırır. COLLIE_SERVE_MODE=http ile lead'in kendi dinleyicisi düz HTTP üzerinden 8787 numaralı bağlantı noktasında yanıt verir ve invite, yalnızca değiştirdiyseniz bağlantı noktasını içerecek şekilde kısa adı yazdırır. join, belirteci düz HTTP üzerinden göndermeden önce bir kez onay ister; --insecure ise bunu otomatik olarak onaylar. Belirtik bir http:// adresi yine de --insecure gerektirir ve hiçbir onay istemez.
crew add, üyeye aynı ön kapıyı verir; böylece üye de 443 numaralı bağlantı noktasını arar. Yalın bir ad 8787 numaralı bağlantı noktası anlamına gelir; tailscale serve arkasındaki bir lead ise bu bağlantı noktasını tailnet'e açmaz.
crew join üzerindeki --address, lead'in bu makineyi arayacağı adrestir ve bir bağlantı noktası gerektirir: --address <host>:8787. join, bağlantı noktası olmayan bir adresi reddeder çünkü lead 443 numaralı bağlantı noktasını arar. Bir https://host:8787 adresi yine de kabul edilir ve host:8787 olarak saklanır.
Çoğullayıcı seçimi her düğüme özeldir. O düğümün kendi .env dosyasında, ikili kurulumda ~/.config/collie/.env konumunda veya Herdr kurulumunda Herdr eklenti yapılandırma dizininde COLLIE_MUX yapılandırın. Makineler arasındaki hat olan crew protokolü, çoğullayıcıya özel hiçbir alan içermez. Eşlerin v1 sürümünde yalnızca Herdr ile test edildiğini unutmayın (CREW_PROTOCOL.md §16).
crew add, yeni bir üye için bu değeri belirler, çünkü üye bunu her zaman kendi başına belirleyemez. Tam olarak bir çoğullayıcı çalıştıran bir üyeye dokunulmaz ve ilk başlangıcında bunu kendisi seçer. Birden fazla çalıştıran bir üye, liderin size sorduğu bir sorudur ve yanıtınız o üyenin .env dosyasına COLLIE_MUX olarak yazılır. Zaten bir tane belirten üyeye de dokunulmaz. Önceden yanıt vermek veya üyenin zaten taşıdığı bir adı değiştirmek için --mux <name> geçirin. Hiçbir çoğullayıcısı çalışmayan bir üye bir uyarı alır ve hiçbir şey yazılmaz; çünkü ilki çalışana kadar ilk başlangıcı reddedilir.
Herdr makineleri ve ekip
Herdr'ın kayıtlı makineleri ile bir Collie crew'u iki ayrı listedir ve hiçbiri diğerini beslemez.
Makine eklemek için yukarıdaki İki makine, bir crew bölümüne bakın.
Herdr'ın makine listesi Herdr pencerenize aittir. Herdr 0.9.0 kayıtlı SSH hedeflerini istemcisinde tutar ve her kullandığınızda her birini SSH üzerinden açar. O makinelerdeki terminalleri, o pencerede, başında oturduğunuz makinede alırsınız.
Crew, her makinede Collie bulunmasıdır ve lead, her üyeye Collie'nin kendi şifreli bağlantısı üzerinden erişir; bu bağlantı, ssh bağlantınızı kullanan bir kurulumla bir kez yapılandırılır. Crew terminalleri de gösterir ve terminallerden daha fazlasını taşır. Yüklemeleri aktarır. Her makinenin günlüğünü ve denetim kaydını, bölmeyi çalıştıran makinede tutar. Tüm crew'u telefondan tek bir onayla günceller. Lead sessizleştiğinde ön kapıyı bir deputy'ye devredebilir. Hiçbir makine listesi bulunmayan tmux ve zellij altında da aynı şekilde çalışır.
| ne | Herdr makine listesi | bir Collie crew'u |
|---|---|---|
| Bağlantıyı kim kurar | Herdr istemciniz | lider Collie |
| Bunu ne taşır | ssh, her kullanımda | Collie'nin kendi şifreli bağlantısı |
| Gördüğünüz şey | terminaller | terminaller, yüklemeler, günlük, denetim kaydı, güncellemeler, yük devretme |
| Gördüğünüz yer | Herdr pencereniz | telefonunuz |
| tmux ve zellij ile çalışır | hayır | evet |
Üç gerçek bu iki listeyi ayrı tutar ve her biri tek başına bir nedendir.
Telefon hiçbir zaman bir SSH anahtarı barındırmaz. Bir SSH anahtarı makinede tam bir kabuk demektir ve telefonlar kaybolabilir. Bunun yerine telefon, yöneticinin oluşturduğu bir eşleştirme belirtecini tutar; bu yalnızca uygulamayı açar ve başka hiçbir şey yapmaz, ayrıca collie devices revoke <label> yeniden başlatma gerektirmeden bu kodu anında sonlandırır (bir cihaz eşleştirin).
Yüklemeler, günlük ve denetim kaydı bölmeyi çalıştıran makinede bulunur. Ve iki makine arasındaki şifreli hat için Collie'nin kullandığı terim olan crew bağlantısı, bir üye kaydolduktan sonra ssh gerektirmez.
Böylece aynı şeyi iki kez kurmazsınız. SSH'yi bir kez kurarsınız ve her iki araç da onu kullanır. Herdr kendi penceresi için listesini tutar, Collie ise telefonunuz için crew'u tutar. Herdr'a bir makine eklemek onu crew'a eklemez. Herdr'dan bir makineyi kaldırmak onu crew'dan çıkarmaz. tmux veya zellij çalıştıran bir crew üyesi Herdr'ın listesinde hiçbir zaman görünmez.
Hedef belirtilmeden çalıştırılan collie crew add, her iki listeden de adaylar önerir; böylece bir ana makineyi asla iki kez yazmazsınız. ~/.ssh/config dosyanızdaki Host girdilerini okur ve herdr machine list --json komutunu çalıştırır. İki listeyi, her adın çözümlendiği ssh hedefine göre birleştirir. Komut, bu yapılandırmadaki bir Include yönergesini bir düzey derinlikte ve yalnızca ~/.ssh/ altındaki yollar için takip eder. Dahil edilen bir dosyadan dahil edilen başka bir dosyadaki takma adı önermez. Her satır adın nereden geldiğini gösterir: ssh config, herdr veya her ikisi. Bu crew'da zaten bulunan bir makinenin satırı, bir numara yerine o üyenin kimliğini taşır.
Bir crew nasıl bağlanır
Yalnızca lead bir ön kapı sunar ve crew içindeki diğer makinelerin hiçbiri kapı sunmaz.
Lead, yönetilen ön kapıdır ve PWA'yı sunar. Telefon lead'e /api/* üzerinde HTTPS üzerinden erişir ve başka hiçbir şeyle konuşmaz. Lead her üyeye /crew/v1/* üzerinde, crew sırrını taşıyan sabitlenmiş karşılıklı TLS üzerinden erişir. Üye, ön kapısı olmayan tam bir Collie'dir ve kendi aracılarını, günlüğünü, yüklemelerini ve denetim kaydını tutar. Yönetim, Herdr arayüz işlemi olmadan, tamamen CLI üzerinden yürütülür. Hattın kendisi CREW_PROTOCOL.md içinde belirtilmiştir.
Bir eş; bir terminal çoklayıcı ve ona bağlı kalıcı ajanları (Bir crew içindeki durable agent'lar) içeren tek bir Collie örneğidir. İki terminal çoklayıcısı olan bir ana makine, her biri için bir eş çalıştırır. Bu tür her eşin kendi portu ve durum dizini bulunur, ekibe tek başına katılır ve listede kendine ait bir makine olarak görünür.
Kod her makineye kendi ssh bağlantınız üzerinden gider. crew add bir üyeyi bu şekilde kurar ve crew update onu eşitler. Crew bağlantısı çalışma zamanı verilerini taşır ve hiçbir zaman bir dağıtım kanalına dönüşmez.
Deputy, lead'in önceden belirlediği bir eş düğümdür. Üç rotaya sahip bir yedek kapıyı bağlar ve bu kapı hiçbir zaman yayımlanmaz. Lead'in sessizliği kapıyı etkinleştirir ve kendi eşleştirme kimlik bilginiz bunu harcar; böylece lead devre dışıyken telefon deputy'ye erişebilir.
Bir crew içindeki durable agent'lar
Bir üyenin kalıcı ajanları liderin telefonunda, tek bir Kalıcı ajanlar bölümünde görünür ve onlar adına üyenin kendi Collie örneği yanıt verir.
# on a member that runs a durable agent beside Herdr, tmux or zellij: no second instance
collie durable attach desk --socket /run/user/1000/desk/app.sock --restart
# on a durable-only member that shares its host with another peer
collie crew join <lead-address> --label desk-agentsBir Collie bir terminal çoklayıcıyı ve ona bağlı her kalıcı ajanı taşır; dolayısıyla bir Herdr örneği ve kalıcı ajanları tek bir eştir ve kendine ait bir etikete ihtiyaç duymaz. Yalnızca kalıcı ajan çalıştıran bir örnek (COLLIE_MUX=durable) bağımsız bir eştir. --label değerini geçmediğiniz sürece ana makine adı altında katılır, bu yüzden bu ana makineyi başka bir eş zaten kullanıyorsa ona bir ad verin.
| Öğe | Nerede gerçekleştiği |
|---|---|
| Kalıcı ajanın satırı | Liderin Kalıcı ajanlar bölümü, üzerinde üyenin adı yer alır. Liderin kendi kalıcı ajanları hiçbir makineyi adlandırmaz |
| Kalıcı ajanın kartı | Üye lidere merhaba mesajında bildirir, böylece telefon tekrar sormadan okur |
| Bir soru için bildirim | Lider. Bir ekipteki üye, kendi soruları için bildirim göndermez |
| Bildirim sınırları | Lider; her üye ve her kalıcı ajan için sayılır (Bir durable agent kaynaklı bildirimler) |
| Bir yanıt, bir gönderme, bir durdurma, bir kemer eylemi, bir yeniden açma ve bir başlatıcı dokunuşu | Kalıcı ajanın sahibi olan üye; lider tarafından iletilir |
| Bunların her biri için makbuz | Üye. Lider kopyasını tutmaz ve aynı istek kimliğiyle yapılan bir yeniden deneme üye üzerinde tekrarlanır |
1.21.0 sürümünden eski bir lider, üyenin kalıcı ajanlarını yine de listeler ancak soru kartı yer almaz ve Terminal sekmesi terminali olmayan bir paneli yoklar. Üye bunu günlüğünde bir kez belirtir ve üye üzerindeki collie doctor komutu durable-lead satırını gösterir. Düzeltmek için lideri güncelleyin.
Makineler arası mesajlar
Bir aracı, ekibin başka bir makinesindeki bir aracıya mesaj gönderebilir ve lider bu tür her mesajı iletir.
# on the lead: every agent pane of every machine
collie walky whoBir üye mesajı lidere gönderir. Lider üyenin imzasını doğrular, ardından mesajı adresin belirttiği makineye iletir ve o makine de liderin imzasını doğrular. Lider ayrıca gönderenin sertifikasını da iletir, böylece ilgili makine gönderenin imzasını da doğrular. Bir üyenin kendi who komutu yalnızca kendi bölmelerini listeler. Lider her mesajın sonucunu öğrenir ve bunu mesajı gönderen üyeye geri bildirir. Gönderenin makinesinde veya liderde collie walky status <id> komutunu çalıştırın (Bir ekip genelinde).
Telefonda, bir üyedeki bölme mesajlarını liderin kendi bölmesi gibi gösterir. Lider, listeyi ilgili üyenin günlüğünden okur; böylece kartlar ve Mesajlar sayfası her makinede aynı görünür (Telefonda).
Not. Bir üyenin mesaj alabilmesi ve mesajlarını telefonda gösterebilmesi için Collie 1.23.0 sürümüne ihtiyacı vardır. Daha eski bir üyeye gönderilen mesajnot sent: older memberile reddedilir ve daha eski bir lider altındaki bir üyenot sent: older leadalır. Ekip sürümlerini eşitlemek içincollie crew update --allçalıştırın (Bir ekibi güncelleyin).
Makineler
Her Collie kendi makinesini ölçer, yönetici ekipteki her makine için bunun bir günlük kaydını tutar ve Makineler sayfaları bunu gösterip uyarı kurallarını barındırır.
Listeyi Ayarlar, Makineler bölümünden açın. Kendi başına tek bir makine olarak çalışan bir collie üzerinde de bulunur. Ekibi olan bir yöneticide Ayarlar, Sistem aynı sayfa için ikinci bir satıra sahiptir ve Ekip sayfasındaki bir üyenin sayfası Yük ve uyarılar ile o makinenin kendi sayfasına bağlantı verir.
Listeyi yalnızca bir yönetici veya tek başına çalışan bir collie tutar. Doğrudan açılan bir ekip üyesi, üzerinde makine listesi olmadığını belirtir; sayfayı yöneticide açın.
Her Collie, CPU, bellek, diskler ve ağı zaten bölmelerinizi izleyen aynı döngüde okur; bu sayede arka planda yeni hiçbir şey çalışmaz. Bunları yaklaşık 15 ila 25 saniyede bir okur. Yönetici, bir telefonda Makineler sayfaları veya Ekip sekmesi açıkken kendi değerlerini 5 saniyede bir okur. Her iki durumda da her dakika en az bir okuma yapılır. Bir üye, son okumasını yöneticiye zaten verdiği yanıtla birlikte gönderir. Yönetici, her makine için dakikada bir veri noktasını 24 saat boyunca saklar. Ekibi olmayan bir Collie, aynı bir günlük süreyi kendi makinesi için tutar.
| ne | Linux | macOS | Windows |
|---|---|---|---|
| CPU | evet | evet | evet |
| Bellek | evet, sayfa önbelleği hariç | evet, dosya önbelleği olmadan | evet |
| Yük ortalaması | evet | evet | hayır |
| Ağ | evet, yalnızca fiziksel arayüzler | hayır | hayır |
| Diskler | evet | evet | evet |
Diskler dosyalarınızı barındıranlardır. Collie ev dizininizi barındıran dosya sistemini, kök dizini barındıran dosya sistemini (Windows'ta sistem sürücüsü) ve Collie'nin durum klasörünü barındıran dosya sistemini okur. Aynı cihazdaki iki dosya sistemi bir kez sayılır ve Collie en fazla dört tanesini gösterir. 1 GiB altındaki bir dosya sistemini ve hiç boş alanı olmayan salt okunur bir dosya sistemini hariç tutar. Fedora Atomic gibi imaj tabanlı bir sistemin kök dizini bu tür bir dosya sistemidir: her zaman %100 doludur ve dolmuş bir disk değildir. Her disk df ile aynı sayıları gösterir: "used", df komutunun Used değeridir ve yüzde, df komutunun Use% değeridir. Toplam, normal bir kullanıcı olarak halen doldurabileceğiniz alandır; bu nedenle kök kullanıcı için ayrılan alanı da sayan df komutunun Size değerinden yüzde birkaç daha düşük olabilir. Collie diskleri arka planda dakikada bir kez okur. Yanıt vermeyen bir disk (örneğin takılan bir ağ bağlama noktası) diğerlerini asla bekletmez ve Collie yanıt alamadığı üç buçuk dakikadan sonra onu göstermeyi bırakır. Bunun için hiçbir kalıcı ajan başlatılmaz.
Ağ her baytı bir kez sayar. Linux'ta Collie; eth0, enp3s0 ve wlan0 gibi fiziksel arayüzleri toplar. Baytları aynı zamanda fiziksel bir arayüzden de geçen tüm arayüzleri hariç tutar:
- Geri döngü:
lo. - Köprüler:
br*(ayrıca Docker'ınbr-*arayüzü),docker*,virbr*,lxcbr*,lxdbr*,incusbr*,podman*,cni*,flannel*,cali*,cilium*,weave*,vxlan*. - Konteyner ve VM uçları:
veth*,vnet*,tap*. - Tüneller:
tailscale*,wg*,tun*,zt*. Tünel trafiği fiziksel arayüzden de çıkar, bu nedenle crew bağlantısı orada sayılır. - Bond'lar ve VLAN'lar:
bond*,team*veeth0.100gibi nokta içeren herhangi bir ad.
Günün veri noktaları lead'in durum klasöründeki machine-history.json dosyasında tutulur. Lead bunu en fazla beş dakikada bir, yalnızca bir dakika değiştiğinde ve durduğunda bir kez daha yazar. Bir makinenin bir günü diskte yaklaşık 46 KB (diskleri bildirdiğinde 54 KB) ve lead belleğinde yaklaşık 68 KB yer kaplar. Geçmiş, her dakikanın en dolu diskini saklar; bu da bir uyarının izlediği disktir. Bir üye kendi geçmişini tutmaz, bu nedenle bakılacak tek yer lead'dir. Lead kapalı olduğunda kimse kayıt yapmaz ve grafik bir boşluk gösterir.
Yanıt vermeyi durduran bir makine, alındığı zamanla birlikte son ölçümünü korur ve yeni dakika kaydetmez. Collie ölçmediği bir sıfırı asla göstermez. Her sayısında eşit olacak şekilde aynı ölçümü tekrar gönderen bir üye, yeniden ölçüm yapmamıştır. Lead bunu kaydetmez ve ölçüm eski zamanını korur. Bu nedenle örnekleyicisi takılan bir üye düz bir çizgi değil, bir boşluk gösterir.
Günün veri noktaları ve kurallar tek bir lead üzerinde kalır.
- Görevi devralan bir deputy, hiçbir uyarı kuralı ve geçmiş olmadan başlar. Her iki dosya da eski lead üzerinde yer alır. Kuralları yeni lead üzerinde tekrar belirleyin.
- Lead haline gelen tek başına bir collie kendi geçmişini siler. Kendi başınayken makinesini
localolarak adlandırır. Lead olarak üye kimliğini kullanır;localveri noktaları ve kuralları silinir. - Crew'dan çıkarılan bir makine, geçmişini ve uyarı kurallarını beraberinde götürür.
Bu özellikten daha eski bir üye hiçbir ölçüm göndermez ve eskisi gibi crew içinde kalır.
Bir makine için uyarılar
Her makinede CPU, bellek ve disk için birer kural belirleyebilirsiniz. Bir kural %50 ile %99 arasında bir sınıra ve 5 ile 120 dakika arasında bir süreye sahiptir. Disk kuralı en dolu diski izler ve anlık bildirim bu diski adlandırır. Kurallar lead üzerindeki machine-alerts.json dosyasında tutulur.
Lead, bu süre içindeki her dakika sınırda veya sınırın üzerinde olduğunda bir anlık bildirim gönderir. Bu dakikaların en az %80'i için bir ölçüme ihtiyaç duyar. Değer yüksek kaldığı sürece başka bir şey göndermez. Uyarı, art arda beş dakika boyunca sınırın en az beş puan altında kalındığında sona erer ve bir sonraki yükseliş yeni bir anlık bildirim gönderir. Açık bir uyarı kurallarla birlikte kaydedilir, böylece yeniden başlatma onu iki kez göndermez.
Bir uyarı yalnızca sürekli yüksek yükü bildirir. Çevrimdışı olan bir makineyi bildirmez. Yanıt vermeyen bir makine bir uyarıyı başlatmaz da sonlandırmaz da. Erteleme her uyarıyı bekletir ve Ayarlar'daki Makine yükü yüksek kalıyor anahtarı hepsini kapatır (Collie'nin hangi uyarıları gönderdiği).
crew dışına hiçbir şey çıkmaz. Ölçümler crew bağlantısı üzerinden aktarılır ve lead üzerinde kalır.
Telefonda
| Sayfa | Neleri gösterdiği |
|---|---|
| Makineler | Önce lead olmak üzere makine başına bir kart: adı, sistem durumu, son 30 dakikaya ait küçük bir grafikle birlikte anlık CPU ve bellek değerleri; makinenin raporladığı durumlarda ise tek bir satırda en dolu disk ("Disk %66"), yük ve gelen/giden ağ trafiği |
| Dashboard, Crew sekmesi | Bir crew'ya sahip lead'in dashboard'undaki aynı kartlar. Dokunulduğunda makine açılır, geri gelindiğinde Crew sekmesine dönülür |
| Tek bir makine, Status | Büyük boyutlu aynı sayılar, kullanılan ve toplam alan ile yüzdesini gösteren her diske özel bir çubuk; ardından son bir saat veya son 24 saat için CPU, bellek, en dolu disk ve ağ için ayrı birer grafik |
| Tek bir makine, Alerts | Makinenin CPU, bellek ve disk için uyarı kuralları |
Bir makinenin sayfasında iki görünüm bulunur: Status ve Alerts. Seçici başlığın altındadır. Önce Status açılır; bir makineye dair anlık bildirim de Status görünümünü açar. Status üzerindeki ve karttaki "Alert firing" satırı, kuralın bulunduğu Alerts görünümünü açar. Bir kural tetiklendiği sürece Alerts seçicisinde bir nokta görünür. Görünüm adresin bir parçasıdır (?tab=alerts) ve geçiş yapmak fazladan bir adım eklemez: Geri tuşu makineden çıkar ve açtığınız yere döner. Yalnızca Status geçmişi okur; Alerts hiçbir şey okumaz.
Bir kart, neyin yanlış olduğunu sözcüklerle belirtir. Yanıt vermeyen bir makine, sistem durumunu ve son ölçümünün ne kadar eski olduğunu gösterir, sayı göstermez; çünkü "unreachable" ifadesinin yanındaki güncelliğini yitirmiş bir %12 değeri makinenin sorunsuz olduğu izlenimini verir. Yanıt veren ancak iki dakikadır yeni ölçüm göndermeyen bir makine, sayılarını soluk renkte, bir saat simgesi ve son ölçümün ne kadar eski olduğu bilgisiyle gösterir. Yük durumunu raporlamadığı eski bir Collie sürümünü çalıştırmaya devam eden bir üye "Update this machine to see its load" mesajını verir ve sayfasında grafik gösterilmez. Alerts görünümünde makinenin güncellenmesi gerektiği belirtilir. Uyarısı tetiklenen bir metrik, sayısını ve küçük grafiğini kırmızıya dönüştürür; kartta ise "Alert firing: CPU" yazar. Disk verisinin küçük bir grafiği yoktur, çünkü bir disk yarım saatte değil, günler içinde dolar. Küçük grafik 0 ile %100 arasında sabit bir ölçeğe, bir kural ayarlandığında kesikli bir çizgiye, anlık ölçüm için bir noktaya ve eksik bir dakika için bir boşluğa sahiptir.
Sayfalar yalnızca siz bakarken veri okur. Machines listesi, dashboard'un kendi yenilenmesiyle okunur. Bir makinenin sayfası açıldığında günün verisini bir kez okur, sonrasında ise dakikada bir kez yalnızca en yeni dakikaları okur. Crew sekmesi açtığınızda ve ekranda kaldığı sürece 15 saniyede bir okunur. Ekranda olmayan bir sayfa veya sekme için ya da telefon kilitliyken hiçbir şey okunmaz.
Grafikler eksik dakikayı boş bırakır. Geçmiş verisinde dakika başına bir nokta bulunur. Lead yeniden başlatıldığında veya bir makineden veri gelmediğinde çizgi durur, boşluktan sonra tekrar başlar ve boşluğun üzerinden devam etmez. CPU, ortalamasını bir çizgi olarak, tepe değerini ise daha açık renkli bir bant olarak çizer. Bir kural ayarlandığında uyarı eşiği kesikli bir çizgiyle gösterilir. Ağ ekseninin sabit bir tepe noktası yoktur: en büyük değeri takip eder ve birimini yazar. Ağ sayaçları veya diski bulunmayan bir platformdaki makine, boş bir grafik çizmek yerine bunu metinle belirtir.
Her grafiğin ekran okuyucu için tek bir cümlesi vardır. Metriği, aralığı, anlık değeri, ortalamayı ve tepe değerini verir. Grafiğin altındaki açıklama her işareti adlandırır, böylece hiçbir grafik yalnızca renge bağlı kalmaz.
Telefonda uyarı tanımlayın
İlgili makine sayfasının Alerts görünümünde bir kural tanımlayın. Kurallar ve sınırları yukarıdaki Bir makine için uyarılar altındadır. Disk kuralı yalnızca disklerini raporlayan makinelerde görünür.
| Seçenek | Değerler |
|---|---|
| Anahtar | CPU, bellek ve disk için ayrı ayrı açık veya kapalı |
| Eşik | %80, %90 veya %95 |
| Süre | 5, 10, 30 veya 60 dakika |
Farklı bir şekilde, bu seçeneklerin dışındaki bir satır veya süreyle ayarlanan bir kural, değerini korur ve bunların yanında gösterir.
Yeni bir kural 10 dakika boyunca %90 olarak başlar. Her değişiklik o makineye ait kuralların tamamını gönderir, bu nedenle CPU eşiğini değiştirmek bellek veya disk kuralını hiçbir zaman silmez. Kart kendi durum satırında Kaydediliyor, Kaydedildi veya Kaydedilemedi gösterir ve bir hata oluştuktan sonra bridge bileşeninin en son bildirdiği kuralları görüntüler.
Bildirim, bu Collie kurulumuna abone olan her cihaza iletilir. Kart, hangi bildirimleri alacağınızı seçtiğiniz Ayarlar, Bildirimler bölümüne bağlantı verir.
Bir makinede bir şey başlatma
Bir crew çalıştırdığınızda Yeni sayfasında (panodaki + Yeni) bir Makine seçimi bulunur. Seçtiğiniz ajan, komut ve klasörün tümü seçtiğiniz makineye aittir ve başlatmayı o makine çalıştırır.
- Her makine hangi ajanlara sahip olduğunu bildirir. Giriş kabuğunuzun kullandığı
PATHyoluna bakar; bu nedenle nvm aracılığıyla veya bir ev dizinine yüklenmiş bir ajan da geçerli sayılır. Bir makinede bulunmayan bir ajan, seçim listesinde devre dışı bırakılmış ve "not installed" olarak işaretlenmiş şekilde kalır. Aynı ajan bir makinede hazır olabilirken diğerinde soluk renkte görünebilir. - Her makine kendi başlatıcılarını okur.
launchers.tomliçindeki satırlar ve bir telefonun oraya eklediği satırlar crew genelinde paylaşılmaz (Kendi başlatıcılarınız). Klasör listesi ile Recent ve Favourite satırları da makinenin kendisine aittir ve sayfa, klasörü o makinenin diskinde denetler. - Yeni bir worktree yalnızca lead üzerinde oluşturulur. Bir member üzerinde anahtar kapalı kalır ve lead'in adıyla birlikte "only on" ifadesini gösterir.
- 1.19.0 sürümünden önceki bir member ada göre hiçbir şey başlatmaz. Sayfa, seçeneklerini devre dışı bırakılmış olarak ve "this machine runs an older Collie" gerekçesiyle listeler. Üzerinde ajanları başlatmak için member'ı güncelleyin (Güncelleme, telefondan veya terminalden).
install.sh tarafından kurulmamış üyeler
Bir crew, dosyaları başkasına ait olan üyeler hariç, her üyeyi telefondan günceller.
collie crew update ve telefonun tek dokunuşla crew güncellemesi, eski sürümün yanına yeni bir sürüm hazırlar ve onu devreye alır. Bu işlem, kurulum betiğinin ve Herdr'ın yaptığı iki kurulumda çalışır; her kurulumda çalışmaz, bu nedenle crew diğerlerini başarısız saymak yerine raporlar.
Paketlenmiş bir üye, kendi paket yöneticisini bekler. Dosyaları pacman, nix veya brew nereye koyduysa, o dosyaların sahibi o paket yöneticisidir ve Collie sahibi olmadığı bir dosyanın üzerine yazmaz (paketlenmiş bir kurulum). Crew ona asla güncelleme göndermez, belirlenebildiği durumlarda öneki için gereken komutla birlikte onu "paket yöneticisini bekliyor" olarak gösterir ve çalıştırmayı o olmadan tamamlanmış sayar. O makinede bu komutu çalıştırdığınızda eşitlenir ve bir sonraki kontrolde satır temizlenir.
Paketlenmiş bir LEAD üyelerini yine de eşitler. Lider, aynı nedenle kendi taşınmasını reddeder ve bu, reddin tamamını oluşturur: telefon ve collie crew update her üyeyi liderin şu anda çalıştırdığı sürüme eşitler ve tek bir onay bunları kapsar. Paket yöneticisi lideri taşıdıktan ve üzerinde collie restart çalıştırdıktan sonra hiçbir şey kendiliğinden eşitlenmez; telefonun Güncellemeler sayfasındaki bir onay daha üyeleri liderin yeni sürümüne getirir.
Bir kaynak kod kopyası, kendisinde de bulunan bir liderin altında tam bir üyedir. Kendi klonlayıp derlediğiniz bir üye, ekip güncellemesini bir çalışma kopyası liderinden alır: bu lider, tıpkı kendisininkinde yaptığı gibi işlemesini iletir, yeniden derler ve yeniden başlatır. İşlemesi olmayan bir lider altında collie crew update onu atlar ve o makinede çalıştırılacak collie update --to-tag v<version> komutunu belirtir.
Dolayısıyla karma bir crew normal bir crew'dur. Tek bir dokunuş, lead'in güncelleyebileceği her üyeyi eşitler, güncelleyemediklerini listeler ve paket yöneticilerini çalıştırdığınızda crew yeniden eşitlenmiş olur.
Crew adı
Bir crew adı görüntüleme verisidir ve bunu yalnızca lead gösterir. collie crew invite --name "the shed", oluşturulduğunda bir crew'a ad verir; --name olmadan oluşturulan bir crew ise "collie crew" olarak adlandırılır. Daha sonra değiştirmek için lead üzerinde collie crew rename <name> komutunu çalıştırın. Eylem, adı lead'in kendi crew-trust.json dosyasına yeniden yazar ve bridge'i yeniden başlatır; böylece collie crew status ve telefonun crew sayfası yeni adı hemen gösterir.
Bir üyeye hiçbir şey gönderilmez. Ad yalnızca bir kez, bir kayda lead'in verdiği yanıtta iletilir ve üye bunu hiçbir zaman göstermeden saklar. Yeniden adlandırmadan sonra katılan bir makine yeni adı alır, crew'da zaten bulunan üyeler ise eski metni kimsenin okumadığı bir alanda tutar. Ad kırpılır, en fazla 64 karakter uzunluğundadır ve denetim karakteri içermez. Bir peer üzerinde veya hiçbir crew'da yer almayan bir makinede, eylem reddedilir ve nerede çalıştırılacağını bildirir.
1.7.0 veya 1.8.x sürümünden 1.9.0 sürümüne güncelleme
Lideri 1.9.0 sürümüne geçirmeden önce her üyeyi 1.8.x sürümüne getirin. 1.9.0, crew bağlantısının tek bir sürümünü destekler ve 1.8.0 bunu destekleyen en eski derlemedir.
Bunların hangi sürümler olduğunu hatırlamanız gerekmez. 1.8.0 sürümünden itibaren güncelleme bildirimi; band üzerinde, Güncellemeler kartında ve günlük push bildiriminde sonraki sürümün crew bağlantısını ne zaman değiştireceğini söyler ve orada da aynısını belirtir: önce lead'i güncelleyin, üyeler onu takip eder.
1.8.0 bir makinenin okuduğu adları yeniden adlandırır. İletişim yolları, iki ortam anahtarı, üç durum dosyası ve journal öneki artık crew adını taşır (ADR 0039). Bağlantı tamamen eskisi gibi davranır ve komut dosyalarınızın hiçbirini aynı gün taşımanız gerekmez.
1.8.0, 1.7.0 sürümündeki bir üyeyi bir sürüm boyunca destekledi; 1.9.0 ise desteklemez. 1.8.0 sürümündeki bir lider eski yolları da yanıtlıyordu, bu sayede hâlâ 1.7.0 sürümünde olan bir üye onu takip etmeyi sürdürdü. 1.9.0 bunu kaldırdı; ADR 0039 belgesinde yapılacağı belirtilen de buydu.
1.9.0 lideri altındaki hâlâ 1.7.0 sürümünde olan bir üye iki kez görünür ve ikisi de sessiz değildir. Liderin ön kontrolü, her iki sürümü ve çalıştırılacak komutu belirterek version denetimini kırmızıya çevirir; bu kırmızı durum, tamamlanamayacak bir aşamalı dağıtımı başlatmak yerine crew güncellemesini engeller. collie crew status içinde aynı üye, sonu "this build speaks 2" ile biten bir gerekçeyle incompatible olarak görünür.
Bu üyeyi kendi makinesinden yükseltin. 1.9.0 sürümündeki bir lider artık bağlantı üzerinden ona erişemez; bu nedenle orada collie update komutunu çalıştırın, sürümünü 1.8.x veya daha yenisine getirin; lider bir sonraki yoklamada onu algılar.
Yeni adlar
| 1.7.0 | 1.8.0 | Makinenizde ne olur |
|---|---|---|
COLLIE_PACK_TIMEOUT_MS | COLLIE_CREW_TIMEOUT_MS | 1.9.0 sürümünde kaldırıldı. 1.9.0 derlemesi yalnızca crew anahtarını okur; bu nedenle yeniden adlandırılmamış eski bir anahtar size varsayılan bütçeyi verir |
COLLIE_PACK_HELLO_TIMEOUT_MS | COLLIE_CREW_HELLO_TIMEOUT_MS | Aynısı |
pack-trust.json, pack-ops.json, pack-runtime.json | crew-trust.json, crew-ops.json, crew-runtime.json | 1.8.x tarafından bir kez, ~/.local/state/collie/ içinde yeniden adlandırıldı. 1.9.0 sürümünde kaldırıldı: 1.8.x sürümünü hiç görmemiş bir dizin başlangıçta adlandırılır ve collie tek başına kalır |
[pack] | [crew] | Crew'un kendi journal satırlarındaki önek |
/pack/v1/… | /crew/v1/… | Lider-üye bağlantısındaki her yol. 1.9.0 sürümünde kaldırıldı |
PACK_PROTOCOL.md | CREW_PROTOCOL.md | Kablo protokolünün kendisi |
1.9.0 sürümüne geçmeden önce kendi .env dosyanızdaki iki ortam anahtarını yeniden adlandırın. 1.9.0 derlemesi eski anahtarı okumaz ve bu konuda uyarı vermez.
Güncellemeyi kapsayan bir journal üzerinde her iki önek için grep çalıştırın:
journalctl --user -u collie | grep -E '\[(crew|pack)\]'Güncellemeden önce yazılan bir satırda [pack], sonrasında yazılan bir satırda ise [crew] yazar. Tüm ekip 1.8.0 sürümüne geçtiğinde yalnızca [crew] için filtreleme yapın.
Bu sayfayı GitHub üzerinde düzenleyin