Како започети са Цхецкмк-ом

Praćenje IT infrastrukture može biti komplikovan zadatak, ali uz pomoć alata kao što je Checkmk, proces se znatno pojednostavljuje.

Mnoge organizacije su implementirale tehnologije zasnovane na oblaku kako bi unapredile performanse svojih proizvoda. Istovremeno, često nastavljaju da upravljaju sopstvenim mrežama i lokalnom infrastrukturom. Ova tranzicija ka hibridnoj infrastrukturi zahteva detaljno praćenje zbog ogromne količine podataka koja se generiše svake sekunde za različite komponente kao što su operativni sistemi, skladišta, serveri, okruženja u oblaku i slično. Svi ovi elementi su ključni za osiguranje optimalnog rada aplikacija.

Ovi podaci su od suštinskog značaja za DevOps timove kako bi razumeli stanje svoje infrastrukture. Zato je organizacijama potrebno rešenje za praćenje koje će im omogućiti da brzo identifikuju probleme u proizvodnji koristeći metriku, vizualizaciju i analitiku. Checkmk se ističe kao jedan od najpopularnijih i najkorisnijih alata za praćenje infrastrukture. U ovom članku, istražićemo zašto Checkmk uživa tako dobru reputaciju i kako možete napraviti prve korake u njegovoj upotrebi.

Šta je Checkmk?

Checkmk kontinuirano nadzire funkcionalnost svih aspekata modernog IT okruženja, sa posebnim naglaskom na hibridne infrastrukture. Ovaj alat nudi fleksibilnost i podržava različita okruženja, uključujući kontejnere, resurse u oblaku i lokalne sisteme kao što su prekidači i serveri. Osim toga, Checkmk je veoma jednostavan za postavljanje i korišćenje. Dolazi sa automatizovanim upozorenjima koja su zasnovana na bogatom IT iskustvu, kao i drugim pametnim funkcijama koje vam mogu uštedeti značajno vreme.

Ukoliko želite da koristite Checkmk besplatno, imate dve opcije. Prvo, možete odabrati Checkmk Raw Edition, koji je potpuno otvorenog koda i besplatan za upotrebu bez ikakvih ograničenja. Drugo, postoji Checkmk Enterprise probno izdanje koje uključuje sve dodatne funkcije Checkmk Enterprise Edition-a, ali nakon 30 dana broj hostova je ograničen na 25.

Kako Checkmk rešava problem?

Checkmk je sposoban da nadgleda aplikacije, servere, baze podataka, mreže, kontejnere, skladišta i još mnogo toga. Pruža obiman spisak od preko 2.000 dodataka za praćenje. Ovi dodaci omogućavaju Checkmk-u da se proširi i prati specifične tehnologije različitih proizvođača dostupnih na tržištu. Neki od popularnijih dodataka su za Docker, Kubernetes, Cisco, Nginx, VMware, Linux, Windows, AWS i Dell. Sa svojom bogatom bibliotekom od 2.000+ dodataka, Checkmk se nameće kao vrlo perspektivno rešenje za praćenje infrastrukture koje je trenutno na raspolaganju.

Za svako rešenje za praćenje, brzina i tačnost očitavanja metrike, kao i postavljanje pametnih upozorenja i obaveštenja, od suštinske su važnosti. Checkmk rešenje zadovoljava sve ove kriterijume. Sa svojom funkcijom automatskog otkrivanja, Checkmk može identifikovati više od 90% usluga i uređaja. U današnje vreme, većina preduzeća zahteva skalabilnost i automatizaciju. Sa Checkmk-om, lako možete skalirati kapacitet praćenja sa stotina na hiljade hostova i koristiti njegove agente za automatizaciju.

Instalacija Checkmk u Docker kontejner

U ovom delu članka, instaliraćemo Checkmk Raw Edition u Docker kontejner na Linux serveru sa Ubuntu 20.04. Možete preuzeti Checkmk Docker kontejner sa Dockerhub-a. Do sada je preuzet više od 5 miliona puta, što svedoči o popularnosti i širokoj upotrebi Checkmk-a.

Preuzmite Docker sliku sa najnovijom verzijom Checkmk-a i pokrenite je unutar kontejnera koristeći komandu `docker container run`.

docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v monitoring:/omd/sites --name monitoring -v /etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest

Kontejner će se zvati „monitoring“, veb server će slušati port 5000 i biće dostupan na portu 8080 host mašine. Kontejner će koristiti privremeni sistem datoteka i lokalnu vremensku zonu.

[email protected]:~$ sudo docker container run -dit -p 8080:5000 --tmpfs /opt/omd/sites/cmk/tmp:uid=1000,gid=1000 -v/omd/sites --name monitoring -v/etc/localtime:/etc/localtime:ro --restart always checkmk/check-mk-raw:2.0.0-latest
Unable to find image 'checkmk/check-mk-raw:2.0.0-latest' locally
2.0.0-latest: Pulling from checkmk/check-mk-raw
33847f680f63: Pull complete
474905f2790b: Pull complete
1804f0e63047: Pull complete
f36fe6334464: Pull complete
03c68dfa69cf: Pull complete
b60cfdb78e96: Pull complete
Digest: sha256:7788fa2e31c7270be201d75285c13ccc7a74f67f991872ea63ba0cfa6708cac6
Status: Downloaded newer image for checkmk/check-mk-raw:2.0.0-latest
9729e323a840a08b0e758cfa9e6dbf76ba5dab4b2ecc4eea5174b8ee1a5cfbcf

Možete proveriti da li je Docker slika preuzeta pokretanjem komande `docker images`.

[email protected]:~$ sudo docker images
REPOSITORY              TAG            IMAGE ID       CREATED        SIZE
bitnami/node-exporter   latest         ba0f519ca49b   34 hours ago   104MB
checkmk/check-mk-raw    2.0.0-latest   097319702432   13 days ago    1.03GB
hello-world             latest         feb5d9fea6a5   7 weeks ago    13.3kB

Pokrenite komandu `docker ps` da biste videli da li je Checkmk kontejner pokrenut.

[email protected]:~$ sudo docker ps
CONTAINER ID   IMAGE                               COMMAND                  CREATED              STATUS                             PORTS                                                 NAMES
9729e323a840   checkmk/check-mk-raw:2.0.0-latest   "/docker-entrypoint.…"   About a minute ago   Up 59 seconds (health: starting)   6557/tcp, 0.0.0.0:8080->5000/tcp, :::8080->5000/tcp   monitoring
3d3a95ed3c25   bitnami/node-exporter:latest        "/opt/bitnami/node-e…"   25 hours ago         Up 25 hours                        9100/tcp                                              node-exporter

Da biste dobili podatke za prijavu na Checkmk veb interfejs, prikažite logove kontejnera.

[email protected]:~$ sudo docker container logs 9729e323a840 
### CREATING SITE 'cmk'
Adding /opt/omd/sites/cmk/tmp to /etc/fstab.
Going to set TMPFS to off.
Temporary filesystem already mounted
Updating core configuration...
Generating configuration for core (type nagios)...Precompiling host checks...OK
OK
Executing post-create script "01_create-sample-config.py"...OK
Created new site cmk with version 2.0.0p15.cre.

  The site can be started with omd start cmk.
  The default web UI is available at http://9729e323a840/cmk/

  The admin user for the web applications is cmkadmin with password: ClFxBPre
  For command line administration of the site, log in with 'omd su cmk'.
  After logging in, you can change the password for cmkadmin with 'htpasswd etc/htpasswd cmkadmin'.

### STARTING XINETD
[ ok ] Starting internet superserver: xinetd.
### STARTING SITE
Temporary filesystem already mounted
Starting mkeventd...OK
Starting rrdcached...OK
Starting npcd...OK
Starting nagios...OK
Starting apache...OK
Starting redis...OK
Initializing Crontab...OK
### STARTING CRON
### CONTAINER STARTED

Checkmk Docker kontejner će se podrazumevano pokrenuti na `https://localhost:8080/cmk/check_mk`. Izlaz gornje komande nam govori da je korisničko ime `cmkadmin`, a lozinka, u ovom slučaju, `ClFxBPre`. Unesite adresu u veb pregledač i koristite svoje akreditive za prijavu.

Nakon što se prijavite, pojaviće se ‘Glavna kontrolna tabla’, koja će biti prazna jer još niste dodali nijedan host.

Praćenje Docker-a pomoću Checkmk-a

Uobičajeno, instalirali biste Checkmk agenta na mašinu koja hostuje vaše Docker kontejnere i zatim koristili Checkmk dodatak za Docker da nadgledate sve kontejnere. Ovaj dodatak (`mk_docker.py`) koristi Docker-ov Python API za praćenje Docker kontejnera i pružanje potpune vidljivosti njihovog statusa i performansi u realnom vremenu. Više detalja o Docker nadgledanju pomoću Checkmk-a možete pronaći na veb lokaciji Checkmk.

Pošto u mom Docker okruženju radi samo jedan Docker kontejner, moj Checkmk Docker kontejner, koristiću samo Checkmk agenta koji radi unutar Docker kontejnera, bez instaliranja Checkmk-a na moj Docker host. Agent je već instaliran u Checkmk kontejneru, pa je potrebno samo da dodam svoj Checkmk kontejner kao host.

Hajde da dobijemo IP adresu na kojoj radi Docker servis, koristeći `ifconfig` u terminalu.

[email protected]:~$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:59ff:fe8a:8ba8  prefixlen 64  scopeid 0x20<link>
        ether 02:42:59:8a:8b:a8  txqueuelen 0  (Ethernet)
        RX packets 5559  bytes 7230215 (7.2 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4164  bytes 614703 (614.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.108  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::144a:4682:35e7:bb2  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:91:82:82  txqueuelen 1000  (Ethernet)
        RX packets 699491  bytes 1044235622 (1.0 GB)
        RX errors 0  dropped 7  overruns 0  frame 0
        TX packets 101260  bytes 7555470 (7.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 20655  bytes 8446042 (8.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20655  bytes 8446042 (8.4 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth44ba5ce: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::145f:1fff:fee9:a7b0  prefixlen 64  scopeid 0x20<link>
        ether 16:5f:1f:e9:a7:b0  txqueuelen 0  (Ethernet)
        RX packets 5559  bytes 7308041 (7.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4173  bytes 616263 (616.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

vetha82ee43: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::585c:6fff:fe0a:a79b  prefixlen 64  scopeid 0x20<link>
        ether 5a:5c:6f:0a:a7:9b  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 92  bytes 9799 (9.7 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

U mom slučaju, Docker servis radi na 172.17.0.1. Sledeći korak je dodavanje Docker servisa kao hosta u Checkmk-u kako bi se mogao nadgledati.

  • Idite na Checkmk i kliknite na Podešavanje -> Hostovi.

  • Sada unesite ime hosta i IP adresu i kliknite na „Sačuvaj i idi na konfiguraciju usluge“.

  • Nakon toga, Checkmk će automatski pokrenuti otkrivanje usluge.

Pomerite se nadole da biste videli usluge nadgledanja koje rade pod Docker hostom. Možete videti da usluge trenutno nisu nadgledane. Ako želite da sve pratite, najjednostavnije rešenje je da kliknete na ‘Popravi sve’. Ako želite da konfigurišete koje usluge treba da se nadgledaju, možete i to detaljno da uradite. Kliknite na znak + ako želite da nadgledate uslugu.

Kada izaberete usluge koje želite da nadgledate, one će se pojaviti na kartici „Nadgledane usluge“. Dobićete sve detalje o statusu svake usluge koju nadgledate. Ako kliknete na znak ?, ta usluga će se prebaciti na listu neodlučnih usluga. Ako kliknete na znak X, usluga će se prebaciti na karticu „Onemogućene usluge“.

Onemogućio sam četiri usluge, tako da mogu da ih vidim na kartici za onemogućavanje usluga.

Kada završite sa dodavanjem usluga, potrebno je da aktivirate promene pre nego što se primene.

  • Kliknite na polje sa žutim uzvičnikom (!) u gornjem desnom uglu da biste videli promene koje čekaju.
  • Kliknite na Aktiviraj na izabranim sajtovima.

Uspešno ste nadgledali Docker usluge koristeći Checkmk!

Zaključak

Ovim smo završili pregled Checkmk-a, alata za praćenje infrastrukture. To je veoma jednostavan alat koji preporučujem da isprobate za praćenje vašeg produkcionog okruženja. Preporučujem da isprobate besplatno izdanje Checkmk-a da biste započeli sa praćenjem.