{"id":4143,"date":"2026-07-01T08:59:33","date_gmt":"2026-07-01T06:59:33","guid":{"rendered":"https:\/\/www.sycope.com\/?p=4143"},"modified":"2026-07-01T09:00:18","modified_gmt":"2026-07-01T07:00:18","slug":"linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope","status":"publish","type":"post","link":"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope","title":{"rendered":"LinkSense: lekkie, open source\u2019owe narz\u0119dzie do synthetic monitoringu od zespo\u0142u Sycope"},"content":{"rendered":"<p class=\"isSelectedEnd\">W\u0142a\u015bnie z tej obserwacji narodzi\u0142 si\u0119 LinkSense \u2014 lekkie, open source\u2019owe narz\u0119dzie do synthetic monitoringu stworzone przez zesp\u00f3\u0142 Sycope.<\/p>\n<p class=\"isSelectedEnd\">Synthetic monitoring, czyli monitoring syntetyczny, to podej\u015bcie, w kt\u00f3rym nie czekasz biernie, a\u017c co\u015b si\u0119 zepsuje i zg\u0142osz\u0105 to u\u017cytkownicy. Zamiast tego system sam, w regularnych odst\u0119pach, sztucznie generuje ruch \u2014 wysy\u0142a pinga, zapytanie HTTP, sprawdza DNS \u2014 i mierzy, jak odpowiada monitorowany system. \u201eSyntetyczny\u201d, poniewa\u017c ten ruch powstaje na potrzeby testu, a nie pochodzi od prawdziwych u\u017cytkownik\u00f3w. Dzi\u0119ki temu o problemie mo\u017cna dowiedzie\u0107 si\u0119 zanim zauwa\u017cy go klient.<\/p>\n<p class=\"isSelectedEnd\">LinkSense to projekt zbudowany wok\u00f3\u0142 trzech bardzo konkretnych zasad: bez zb\u0119dnej z\u0142o\u017cono\u015bci, bez vendor lock-inu i bez nadmiernego zu\u017cycia zasob\u00f3w.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_88 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Skad_sie_wzial_LinkSense\" >Sk\u0105d si\u0119 wzi\u0105\u0142 LinkSense?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Trzy_zasady_ktore_trzymaja_projekt_w_ryzach\" >Trzy zasady, kt\u00f3re trzymaj\u0105 projekt w ryzach<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#1_Bez_zbednej_zlozonosci\" >1. Bez zb\u0119dnej z\u0142o\u017cono\u015bci<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#2_Bez_vendor_lock-inu\" >2. Bez vendor lock-inu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#3_Bez_nadmiernego_zuzycia_zasobow\" >3. Bez nadmiernego zu\u017cycia zasob\u00f3w<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Architektura_w_pigulce_model_agent%E2%80%93serwer\" >Architektura w pigu\u0142ce: model agent\u2013serwer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Co_LinkSense_potrafi_monitorowac\" >Co LinkSense potrafi monitorowa\u0107?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Typowe_zastosowania\" >Typowe zastosowania<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#Swiadome_%E2%80%9Enie%E2%80%9D_brak_wizualizacji_i_alertingu\" >\u015awiadome \u201enie\u201d: brak wizualizacji i alertingu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.sycope.com\/pl\/post\/linksense-lekkie-open-sourceowe-narzedzie-do-synthetic-monitoringu-od-zespolu-sycope\/#To_nie_jest_%E2%80%9Evibe-coded%E2%80%9D_projekt\" >To nie jest \u201evibe-coded\u201d projekt<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Skad_sie_wzial_LinkSense\"><\/span>Sk\u0105d si\u0119 wzi\u0105\u0142 LinkSense?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">Historia LinkSense jest mniej korporacyjna, a bardziej in\u017cynierska. Maciej Wilamowski, CIO Sycope, oraz Marcin Ka\u017amierczak, Solution Architect, zauwa\u017cyli, \u017ce klienci z naprawd\u0119 du\u017cymi sieciami \u2014 obejmuj\u0105cymi wiele lokalizacji, serwerowni, aplikacji i load balancer\u00f3w \u2014 potrzebuj\u0105 prostego sposobu monitorowania po\u0142\u0105cze\u0144: czy linki mi\u0119dzy punktami sieci dzia\u0142aj\u0105 i jak faktycznie si\u0119 zachowuj\u0105.<\/p>\n<p class=\"isSelectedEnd\">Pierwsza reakcja by\u0142a przewidywalna: \u201eprzecie\u017c co\u015b takiego na pewno ju\u017c istnieje\u201d. \u017byjemy w czasach, w kt\u00f3rych na niemal ka\u017cdy problem mo\u017cna znale\u017a\u0107 gotow\u0105 bibliotek\u0119 albo narz\u0119dzie. Owszem, istniej\u0105 Zabbix, Nagios i podobne rozwi\u0105zania, ale nie uda\u0142o si\u0119 znale\u017a\u0107 systemu, kt\u00f3ry by\u0142by jednocze\u015bnie open source, banalnie prosty w konfiguracji i obs\u0142udze oraz dobrze dopasowany do du\u017cych, rozproszonych sieci z wieloma w\u0119z\u0142ami i lokalizacjami.<\/p>\n<p class=\"isSelectedEnd\">Skoro takiego narz\u0119dzia nie by\u0142o, a sama idea wydawa\u0142a si\u0119 prosta \u2014 wystarczy co jaki\u015b czas wys\u0142a\u0107 pinga albo zapytanie HTTP, \u017ceby wiedzie\u0107, czy us\u0142uga odpowiada \u2014 pojawi\u0142 si\u0119 wniosek: napiszmy to sami. Tak zacz\u0105\u0142 si\u0119 LinkSense.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Trzy_zasady_ktore_trzymaja_projekt_w_ryzach\"><\/span>Trzy zasady, kt\u00f3re trzymaj\u0105 projekt w ryzach<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"1_Bez_zbednej_zlozonosci\"><\/span>1. Bez zb\u0119dnej z\u0142o\u017cono\u015bci<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"isSelectedEnd\">LinkSense to jedna ma\u0142a binarka. Wdro\u017cenie sprowadza si\u0119 do schematu \u201eskopiuj plik i uruchom us\u0142ug\u0119\u201d. Ca\u0142a konfiguracja opiera si\u0119 na plikach tekstowych w formacie TOML \u2014 osobno dla samego agenta, osobno dla listy zada\u0144. Definicja nowego zadania jest na tyle prosta, \u017ce w praktyce polega na skopiowaniu jednego wpisu i podmianie kilku warto\u015bci. Ka\u017cdy typ zadania ma w\u0142asn\u0105, kr\u00f3tk\u0105 dokumentacj\u0119 README, wi\u0119c nie trzeba zgadywa\u0107, co oznaczaj\u0105 poszczeg\u00f3lne pola.<\/p>\n<p class=\"isSelectedEnd\">Co istotne, projekt jest mocno udokumentowany. README istnieje dla ca\u0142ego projektu, dla agenta, dla serwera i dla ka\u017cdego pojedynczego zadania z osobna. Dokumentacja zawiera r\u00f3wnie\u017c informacje o bibliotekach z ekosystemu Rusta u\u017cywanych \u201epod mask\u0105\u201d.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"2_Bez_vendor_lock-inu\"><\/span>2. Bez vendor lock-inu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"isSelectedEnd\">Vendor lock-in, czyli uzale\u017cnienie od dostawcy, to sytuacja, w kt\u00f3rej narz\u0119dzie przechowuje dane w zamkni\u0119tym, w\u0142asnym formacie i wi\u0105\u017ce u\u017cytkownika z jednym ekosystemem do tego stopnia, \u017ce zmiana rozwi\u0105zania staje si\u0119 kosztowna albo wr\u0119cz niewykonalna. Dane trudno wyeksportowa\u0107, a kluczowe elementy s\u0105 \u201ezaszyte\u201d w konkretnym narz\u0119dziu.<\/p>\n<p class=\"isSelectedEnd\">LinkSense dzia\u0142a odwrotnie.<\/p>\n<p class=\"isSelectedEnd\">Wszystkie dane trafiaj\u0105 do bazy SQLite \u2014 zar\u00f3wno po stronie agenta, jak i serwera. SQLite to lekka, plikowa baza danych: nie wymaga osobnego serwera bazodanowego, a ca\u0142o\u015b\u0107 mie\u015bci si\u0119 w jednym pliku, kt\u00f3ry mo\u017cna otworzy\u0107 dowolnym narz\u0119dziem do SQL-a. Struktura tabel jest celowo bardzo prosta, aby LinkSense da\u0142o si\u0119 \u0142atwo zintegrowa\u0107 z dowolnym innym narz\u0119dziem. Je\u015bli chcesz wyci\u0105gn\u0105\u0107 swoje dane i przenie\u015b\u0107 je gdzie indziej, sprowadza si\u0119 to do prostego scenariusza: pobra\u0107 dane z SQLite i skopiowa\u0107 je w inne miejsce. Licencja jest permisywna, czyli pozwala swobodnie u\u017cywa\u0107, modyfikowa\u0107 i rozwija\u0107 kod, a sam kod pozostaje otwarty.<\/p>\n<p class=\"isSelectedEnd\">To \u015bwiadoma decyzja: LinkSense jest narz\u0119dziem do zbierania danych, nie do ich wizualizacji. Do tego w\u0105tku wr\u00f3cimy w dalszej cz\u0119\u015bci.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"3_Bez_nadmiernego_zuzycia_zasobow\"><\/span>3. Bez nadmiernego zu\u017cycia zasob\u00f3w<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p class=\"isSelectedEnd\">Tutaj liczby m\u00f3wi\u0105 same za siebie. Podczas \u017cywej demonstracji na webinarze agent dzia\u0142aj\u0105cy od blisko godziny, wykonuj\u0105cy kilkadziesi\u0105t r\u00f3\u017cnych zada\u0144 \u2014 wiele ping\u00f3w, zapytania HTTP co kilkana\u015bcie sekund, testy TLS i TCP \u2014 zu\u017cywa\u0142 31 MB pami\u0119ci i praktycznie zerowy procent CPU, z wahaniami w okolicach 0\u20131%. Zesp\u00f3\u0142 prowadzi\u0142 r\u00f3wnie\u017c testy d\u0142ugoterminowe trwaj\u0105ce ponad miesi\u0105c, sprawdzaj\u0105c, czy nie pojawiaj\u0105 si\u0119 wycieki pami\u0119ci lub inne problemy. Testy zako\u0144czy\u0142y si\u0119 bez jednej awarii.<\/p>\n<p class=\"isSelectedEnd\">Za t\u0119 wydajno\u015b\u0107 odpowiada mi\u0119dzy innymi wyb\u00f3r Rusta jako j\u0119zyka, w kt\u00f3rym napisano LinkSense. Rust jest ceniony za szybko\u015b\u0107 dzia\u0142ania i oszcz\u0119dne gospodarowanie pami\u0119ci\u0105. Kluczowe znaczenie ma tak\u017ce asynchroniczne wykonywanie zada\u0144: zamiast czeka\u0107, a\u017c zako\u0144czy si\u0119 jeden test, na przyk\u0142ad ping trwaj\u0105cy u\u0142amek sekundy, zanim ruszy kolejny, agent prowadzi wiele zada\u0144 \u201er\u00f3wnolegle\u201d i nie blokuje si\u0119 na \u017cadnym z nich. Dzi\u0119ki temu jeden niewielki proces mo\u017ce obs\u0142u\u017cy\u0107 kilkadziesi\u0105t test\u00f3w naraz bez obci\u0105\u017cania maszyny.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Architektura_w_pigulce_model_agent%E2%80%93serwer\"><\/span>Architektura w pigu\u0142ce: model agent\u2013serwer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">Trzonem projektu jest podzia\u0142 na agent\u00f3w i centralny serwer. Agenci to ma\u0142e binarki rozstawione w r\u00f3\u017cnych lokalizacjach. Wykonuj\u0105 zlecone im testy, przechowuj\u0105 wyniki lokalnie w SQLite, a co 60 sekund tworz\u0105 zagregowane metryki i wysy\u0142aj\u0105 je do centralnego serwera.<\/p>\n<p class=\"isSelectedEnd\">Kluczowy jest kierunek po\u0142\u0105czenia: to agenci aktywnie \u0142\u0105cz\u0105 si\u0119 z serwerem, a nie odwrotnie. Daje to dwie konkretne korzy\u015bci.<\/p>\n<p class=\"isSelectedEnd\"><strong>Bezpiecze\u0144stwo.<\/strong> Agent mo\u017ce dzia\u0142a\u0107 na maszynie z firewallem ustawionym wed\u0142ug zasady \u201eblokuj przychodz\u0105ce, zezw\u00f3l na wychodz\u0105ce\u201d. Nie potrzebuje \u017cadnych otwartych port\u00f3w. A brak otwartych port\u00f3w oznacza istotnie mniejsz\u0105 powierzchni\u0119 ataku \u2014 wszyscy s\u0142yszeli\u015bmy o przypadkach przej\u0119cia agent\u00f3w monitoruj\u0105cych, kt\u00f3re potrafi\u0105 sta\u0107 si\u0119 powa\u017cnym zagro\u017ceniem.<\/p>\n<p class=\"isSelectedEnd\"><strong>Prostsze zarz\u0105dzanie.<\/strong> Otwarte porty musi mie\u0107 tylko jedna maszyna \u2014 serwer. Zadbanie o bezpiecze\u0144stwo jednej maszyny jest znacznie prostsze ni\u017c pilnowanie wielu rozproszonych instancji.<\/p>\n<p class=\"isSelectedEnd\">Ten model ma jeszcze trzeci\u0105 zalet\u0119: masow\u0105 rekonfiguracj\u0119. Konfiguracj\u0119 agent\u00f3w mo\u017cna zmienia\u0107 z poziomu serwera. Wyobra\u017a sobie statek z szesnastoma albo wi\u0119ksz\u0105 liczb\u0105 agent\u00f3w na pok\u0142adzie. Je\u015bli chcesz doda\u0107 im wszystkim jedno nowe zadanie, robisz to jedn\u0105 zmian\u0105 w pliku konfiguracyjnym po stronie serwera. Przy kolejnej aktualizacji agent wykrywa, \u017ce jego konfiguracja jest nieaktualna, pobiera now\u0105 wersj\u0119 z serwera, waliduje j\u0105 i od razu zaczyna z niej korzysta\u0107.<\/p>\n<p class=\"isSelectedEnd\">Architektura jest r\u00f3wnie\u017c \u201elocal-first\u201d, czyli \u201enajpierw lokalnie\u201d. Agent zapisuje wyniki u siebie, na miejscu, i dopiero potem wysy\u0142a je do serwera. Dzi\u0119ki temu nawet je\u015bli serwer chwilowo nie odpowiada, agenci nie trac\u0105 danych i kontynuuj\u0105 monitoring podczas problem\u00f3w sieciowych. Gdy \u0142\u0105czno\u015b\u0107 wraca, dosy\u0142aj\u0105 zebrane metryki. Agent\u00f3w mo\u017cna te\u017c uruchomi\u0107 w trybie w pe\u0142ni samodzielnym, czyli standalone. Je\u015bli traktujesz LinkSense jako ma\u0142y prywatny projekt, nie potrzebujesz centralnego serwera \u2014 wystarczy podejrze\u0107 lokaln\u0105 baz\u0119 SQLite dowolnym narz\u0119dziem.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Co_LinkSense_potrafi_monitorowac\"><\/span>Co LinkSense potrafi monitorowa\u0107?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">LinkSense oferuje zestaw gotowych typ\u00f3w zada\u0144.<\/p>\n<p class=\"isSelectedEnd\"><strong>Ping<\/strong> \u2014 najprostsze sprawdzenie, jak szybko pakiety wracaj\u0105 i czy nie ma ich utraty, czyli czy cz\u0119\u015b\u0107 wys\u0142anych pakiet\u00f3w nie ginie po drodze.<\/p>\n<p class=\"isSelectedEnd\"><strong>HTTP GET<\/strong> \u2014 pe\u0142na informacja o \u017c\u0105daniu strony. LinkSense rozbija czas odpowiedzi na sk\u0142adniki: czas nawi\u0105zania po\u0142\u0105czenia TCP, czas zestawienia szyfrowanego po\u0142\u0105czenia, czyli TLS handshake \u2014 moment, w kt\u00f3rym serwer i klient ustalaj\u0105 szyfrowanie, zanim w og\u00f3le zostan\u0105 przes\u0142ane dane \u2014 time-to-first-byte, czyli czas do pierwszego bajtu odpowiedzi i informacj\u0119 o tym, jak d\u0142ugo serwer \u201emy\u015bli\u201d, zanim cokolwiek ode\u015ble, oraz ca\u0142kowity czas pobrania. Do tego dochodz\u0105 kody statusu HTTP, informacja o tym, czy certyfikat jest wa\u017cny, oraz ile dni zosta\u0142o do jego wyga\u015bni\u0119cia.<\/p>\n<p class=\"isSelectedEnd\"><strong>TCP i TLS<\/strong> \u2014 w praktyce \u201epodzadania\u201d HTTP GET. Czasem nie chcesz pobiera\u0107 ca\u0142ej strony, a jedynie sprawdzi\u0107, czy dany port jest otwarty, czyli TCP, albo czy poprawnie zestawia si\u0119 szyfrowanie, czyli TLS \u2014 bez pe\u0142nego zapytania HTTP.<\/p>\n<p class=\"isSelectedEnd\"><strong>DNS<\/strong> \u2014 sprawdza, czy nazwy domen poprawnie t\u0142umacz\u0105 si\u0119 na adresy IP. Co wa\u017cne, to zadanie u\u017cywa w\u0142asnego resolvera, a nie systemowego. Resolver to mechanizm, kt\u00f3ry zamienia nazw\u0119, na przyk\u0142ad sycope.com, na adres IP. System operacyjny zwykle zapami\u0119tuje, czyli cache\u2019uje, wyniki, wi\u0119c kolejne zapytania nie trafiaj\u0105 realnie do serwera DNS. W\u0142asny resolver omija ten cache i rzeczywi\u015bcie odpytuje DNS za ka\u017cdym razem. Dzi\u0119ki temu mierzysz faktyczny stan, a nie zapami\u0119tan\u0105 odpowied\u017a.<\/p>\n<p class=\"isSelectedEnd\"><strong>HTTP content<\/strong> \u2014 pozwala zajrze\u0107 w tre\u015b\u0107 odpowiedzi za pomoc\u0105 wyra\u017cenia regularnego, czyli regexu \u2014 wzorca do wyszukiwania konkretnego tekstu w tre\u015bci strony. To przydatne wtedy, gdy aplikacja zwraca status 200, czyli \u201ewszystko OK\u201d, ale w tre\u015bci komunikuje na przyk\u0142ad okno serwisowe. Sam kod statusu by tego nie wychwyci\u0142, natomiast dopasowanie wzorca w tre\u015bci ju\u017c tak.<\/p>\n<p class=\"isSelectedEnd\"><strong>Bandwidth<\/strong> \u2014 pomiar przepustowo\u015bci \u0142\u0105cza, zawsze pomi\u0119dzy agentem a serwerem. Po stronie serwera dzia\u0142a kolejkowanie, aby kilka test\u00f3w uruchomionych jednocze\u015bnie nie zafa\u0142szowa\u0142o sobie nawzajem wynik\u00f3w.<\/p>\n<p class=\"isSelectedEnd\"><strong>SQL query i SNMP query<\/strong> \u2014 zadania opcjonalne, wykraczaj\u0105ce poza g\u0142\u00f3wne przeznaczenie narz\u0119dzia. Zapytanie SQL pozwala sprawdzi\u0107 nie tylko, czy baza danych odpowiada, ale te\u017c czy dane w niej s\u0105 poprawne, na przyk\u0142ad policzy\u0107, ile wierszy zwraca konkretne zapytanie. SNMP to standardowy protok\u00f3\u0142 do odpytywania urz\u0105dze\u0144 sieciowych o ich stan. Pozwala pobiera\u0107 konkretne warto\u015bci spod tzw. OID-\u00f3w, czyli numerycznych identyfikator\u00f3w konkretnych informacji w urz\u0105dzeniu \u2014 na przyk\u0142ad obci\u0105\u017cenia CPU, nazwy hosta czy opisu urz\u0105dzenia.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Typowe_zastosowania\"><\/span>Typowe zastosowania<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">Z tych element\u00f3w sk\u0142adaj\u0105 si\u0119 konkretne scenariusze u\u017cycia:<\/p>\n<ul data-spread=\"false\">\n<li>monitoring uptime\u2019u, czyli dost\u0119pno\u015bci \u2014 odsetka czasu, w kt\u00f3rym us\u0142uga realnie dzia\u0142a \u2014 w du\u017cych sieciach, ogl\u0105dany z perspektywy rozproszonych geograficznie endpoint\u00f3w, czyli punkt\u00f3w ko\u0144cowych: konkretnych maszyn w r\u00f3\u017cnych miejscach, z kt\u00f3rych prowadzony jest pomiar;<\/li>\n<li>pomiar wydajno\u015bci aplikacji i sieci;<\/li>\n<li>ocena load balancer\u00f3w \u2014 urz\u0105dze\u0144 lub us\u0142ug, kt\u00f3re rozk\u0142adaj\u0105 ruch mi\u0119dzy wiele serwer\u00f3w; w praktyce warto wiedzie\u0107, czy ka\u017cdy z nich faktycznie odpowiada r\u00f3wnie sprawnie;<\/li>\n<li>sprawdzanie kondycji DNS i pilnowanie poziom\u00f3w SLA, czyli Service Level Agreement \u2014 umownych prog\u00f3w dost\u0119pno\u015bci i wydajno\u015bci, do kt\u00f3rych dostawca si\u0119 zobowi\u0105za\u0142;<\/li>\n<li>kontrola dat wyga\u015bni\u0119cia certyfikat\u00f3w SSL, aby nie obudzi\u0107 si\u0119 nagle z komunikatem \u201epo\u0142\u0105czenie niezaufane\u201d na produkcji.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Swiadome_%E2%80%9Enie%E2%80%9D_brak_wizualizacji_i_alertingu\"><\/span>\u015awiadome \u201enie\u201d: brak wizualizacji i alertingu<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">LinkSense z za\u0142o\u017cenia nie ma wbudowanej wizualizacji ani alertingu. To nie jest brak, ale decyzja projektowa. Rozwi\u0105za\u0144 do wizualizacji, alertowania czy orkiestracji jest na rynku mn\u00f3stwo. Brakowa\u0142o natomiast prostego, lekkiego, open source\u2019owego narz\u0119dzia do zbierania danych. Za\u0142o\u017cenie jest takie, \u017ce wi\u0119ksza organizacja prawdopodobnie ma ju\u017c system, w kt\u00f3rym chce te dane ogl\u0105da\u0107 i dalej przetwarza\u0107. Dzi\u0119ki rezygnacji z wizualizacji i alertingu LinkSense mo\u017ce pozosta\u0107 tak oszcz\u0119dny w zasobach.<\/p>\n<p class=\"isSelectedEnd\">Z tej samej filozofii wynika brak oficjalnych kontener\u00f3w. Skoro LinkSense to jedna prosta binarka, konteneryzacja jest trywialna do wykonania samodzielnie, na przyk\u0142ad przez w\u0142asny docker compose, kt\u00f3ry kopiuje binark\u0119 i uruchamia us\u0142ug\u0119. Rozwi\u0105zanie dzia\u0142a r\u00f3wnie\u017c z Alpine Linux. Dostarczanie gotowych kontener\u00f3w nie wnosi\u0142oby tutaj du\u017cej warto\u015bci, a mog\u0142oby zabra\u0107 cz\u0119\u015b\u0107 przewagi zwi\u0105zanej z niskim zu\u017cyciem zasob\u00f3w.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"To_nie_jest_%E2%80%9Evibe-coded%E2%80%9D_projekt\"><\/span>To nie jest \u201evibe-coded\u201d projekt<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p class=\"isSelectedEnd\">Tw\u00f3rcy \u015bwiadomie podkre\u015blaj\u0105 t\u0119 r\u00f3\u017cnic\u0119. Owszem, do rozwoju i dokumentacji u\u017cywali narz\u0119dzi typu Claude Code, poniewa\u017c realnie przyspieszaj\u0105 prac\u0119. Struktura projektu zosta\u0142a jednak zaprojektowana r\u0119cznie, a ka\u017cda linia kodu zosta\u0142a przejrzana. Dokumentacja r\u00f3wnie\u017c zosta\u0142a zaplanowana co do tre\u015bci i struktury przez cz\u0142owieka, a nie wygenerowana hurtowo. Do tego dochodz\u0105 wspomniane intensywne, d\u0142ugoterminowe testy. St\u0105d przekonanie autor\u00f3w, \u017ce narz\u0119dzie dzia\u0142a stabilnie i zgodnie z za\u0142o\u017ceniami.<\/p>\n<p><strong>Drobna uwaga techniczna dotycz\u0105ca Linuksa: je\u015bli chcesz wykonywa\u0107 wiele ping\u00f3w r\u00f3wnolegle, dodaj odpowiedniego u\u017cytkownika lub proces do grupy ping. Wynika to z faktu, \u017ce LinkSense realizuje pingi asynchronicznie i wydajnie, zamiast by\u0107 jedynie nak\u0142adk\u0105 na systemowe polecenie ping.<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>Chcesz dowiedzie\u0107 si\u0119 wi\u0119cej o LinkSense bezpo\u015brednio od jego tw\u00f3rc\u00f3w? <strong><a href=\"https:\/\/youtu.be\/brb1i0JTlWo\" target=\"_blank\" rel=\"noopener\">Obejrzyj dedykowany webinar<\/a><\/strong> z Maciejem Wilamowskim i Marcinem Ka\u017amierczakiem, w kt\u00f3rym opowiadaj\u0105, sk\u0105d wzi\u0105\u0142 si\u0119 pomys\u0142 na narz\u0119dzie, jak dzia\u0142a jego architektura i w jakich scenariuszach LinkSense mo\u017ce realnie pom\u00f3c w monitorowaniu rozproszonych \u015brodowisk.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W\u0142a\u015bnie z tej obserwacji narodzi\u0142 si\u0119 LinkSense \u2014 lekkie, open source\u2019owe narz\u0119dzie do synthetic monitoringu stworzone przez zesp\u00f3\u0142 Sycope. Synthetic monitoring, czyli monitoring syntetyczny, to podej\u015bcie, w kt\u00f3rym nie czekasz biernie, a\u017c co\u015b si\u0119 zepsuje i zg\u0142osz\u0105 to u\u017cytkownicy. Zamiast tego system sam, w regularnych odst\u0119pach, sztucznie generuje ruch \u2014 wysy\u0142a pinga, zapytanie HTTP, sprawdza [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":1396,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[99],"tags":[242,243],"product":[245],"topic":[168],"sycope_author":[249],"class_list":["post-4143","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-linksense-pl","tag-monitoring-sieci","product-linksense-pl","topic-monitorowanie-i-analiza-sieci","sycope_author-marcin-kazmierczak"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/posts\/4143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/comments?post=4143"}],"version-history":[{"count":1,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/posts\/4143\/revisions"}],"predecessor-version":[{"id":4144,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/posts\/4143\/revisions\/4144"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/media\/1396"}],"wp:attachment":[{"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/media?parent=4143"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/categories?post=4143"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/tags?post=4143"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/product?post=4143"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/topic?post=4143"},{"taxonomy":"sycope_author","embeddable":true,"href":"https:\/\/www.sycope.com\/pl\/wp-json\/wp\/v2\/sycope_author?post=4143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}