Graylog: Naudojimas su Python
Kaip siųsti žurnalus iš Python į Graylog
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Graylog cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įtrauktas neribotas ir dedikuotas SMTP el. pašto serveris.
- Lengvi atnaujinimai vienu paspaudimu.
- Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://logs.jusu-imone.com).
- Optimali veikla ir tvirta sauga, užtikrinta privačia ir dedikuota VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Graylog cloud hosting sprendimą!
Žurnalų siuntimas iš Python į Graylog yra paprastas procesas. Šiame vadove paaiškinsime, kaip naudoti graypy ir logging paketus, kad persiųstumėte žurnalus iš savo Python aplikacijos į Graylog instanciją.
Graylog paruošimas
Pirmiausia reikia sukonfigūruoti GELF TCP įvestį savo Graylog serveryje.
Atsidarykite Graylog administravimo panelę. Skiltyje "System" > "Inputs" sukurkite naują įvestį pasirinkdami "GELF TCP" tipą. Pažymėkite "global" langelį, įveskite "title" savo įvesčiai ir įsitikinkite, kad prievadas nustatytas į 12201.
NENAUDOKITE jokių TLS nustatymų čia. TLS šifravimą užtikrina atvirkštinis proxy, kuris yra įtrauktas į jūsų instanciją.
Įvesties konfigūracija
Paslaugos konfigūravimas Stackhero platformoje
Stackhero valdymo pulte pasirinkite savo Graylog paslaugą ir spauskite "Configure".
Įsitikinkite, kad TCP prievadas 12201 yra tinkamai sukonfigūruotas ir kad šiam prievadui įjungtas "TLS encryption". Išsaugokite pakeitimus, kad pritaikytumėte konfigūraciją.
Įvesties prievado konfigūracija
Patikrinkite savo paslaugos "Firewall" nustatymuose, ar bent jau jūsų IP adresas turi leidimą siųsti duomenis į TCP prievadą 12201. Testavimo tikslais gali būti paprasčiau leisti visas IP (0.0.0.0/0), tai yra numatytoji nuostata.
Pavyzdys: žurnalų siuntimas iš Python
Šiam pavyzdžiui galite naudoti graypy biblioteką. Norėdami pradėti, įdiekite ją su pip install graypy.
Tada sukurkite failą pavadinimu graylog-example.py ir pakeiskite <XXXXXX>.stackhero-network.com į savo serverio vardą. Štai pavyzdinis scenarijus, kurį galite išbandyti:
import logging
import graypy
my_logger = logging.getLogger('test_logger')
my_logger.setLevel(logging.DEBUG)
handler = graypy.GELFTLSHandler('<XXXXXX>.stackhero-network.com', 12201)
my_logger.addHandler(handler)
my_logger.debug('This is a test from a Python script!')
Norėdami peržiūrėti savo žurnalus, atidarykite Graylog administravimo panelę, eikite į "Search" skirtuką, paspauskite paleidimo ikoną ir nustatykite atnaujinimą kas sekundę. Paleiskite savo scenarijų su:
python graylog-example.py
Kai scenarijus bus paleistas, jūsų žinutė bus išsiųsta į Graylog ir turėtumėte ją matyti paieškos rezultatuose.
Pirmas žurnalas gautas Graylog
Paspaudę žinutę "This is a test from a Python script!" pamatysite naudingą informaciją, tokią kaip scenarijaus pavadinimas ir tiksli eilutė, kuri sugeneravo žurnalą.
Išsamus žurnalas
Klaidos žurnalų siuntimas
Graylog skirtas ne tik įprastoms žinučių žurnalams. Taip pat galite fiksuoti ir persiųsti klaidas, kad geriau stebėtumėte savo aplikacijos veikimą. Tai palengvina stebėseną ir leidžia gauti pranešimus apie problemas el. paštu, Slack ar Mattermost.
Štai pavyzdys, kuriame tyčia kviečiama neegzistuojanti funkcija, kad būtų sugeneruota klaida. Nepamirškite pakeisti "<XXXXXX>.stackhero-network.com" į savo instancijos vardą.
import logging
import graypy
my_logger = logging.getLogger('test_logger')
my_logger.setLevel(logging.DEBUG)
handler = graypy.GELFTLSHandler('<XXXXXX>.stackhero-network.com', 12201)
my_logger.addHandler(handler)
try:
unknown_function()
except NameError:
my_logger.debug('The "unknown_function" raised an error', exc_info=1)
Šį scenarijų galite paleisti taip pat kaip ir ankstesnį. Graylog administravimo panelėje matysite klaidos žinutę "NameError: name 'unknown_function' is not defined" kartu su pilna stack trace.
Klaidos žurnalo pavyzdys
Ryšio saugumo stiprinimas
Nors ankstesniuose pavyzdžiuose naudojamas TLS šifravimas, sertifikato validacija neatliekama. Tai tinkama testavimui, tačiau gamybinėje aplinkoje būtina patikrinti sertifikato galiojimą.
Sertifikato validaciją galite įjungti pridėdami validate ir ca_certs parametrus taip:
handler = graypy.GELFTLSHandler('<XXXXXX>.stackhero-network.com', 12201, validate=True, ca_certs='/etc/ssl/certs/ca-certificates.crt')
Įsitikinkite, kad failas /etc/ssl/certs/ca-certificates.crt egzistuoja jūsų sistemoje:
- Ubuntu/Debian sistemose įdiekite su
sudo apt install ca-certificates. - Alpine Linux naudokite
apk add ca-certificates. - macOS sistemoje jis įdiegtas pagal nutylėjimą, tačiau failas vadinasi
/etc/ssl/cert.pem.
Trikčių šalinimas
Jei nematote savo žurnalų Graylog, patikrinkite šiuos dalykus:
- Įsitikinkite, kad Graylog turi GELF TCP įvestį, kuri klausosi 12201 prievado, ir kad TLS nėra įjungtas šiai įvesčiai.
- Stackhero valdymo pulte, skiltyje "Configure", patikrinkite, ar 12201 prievadas nustatytas kaip TCP ir ar TLS įjungtas "Input ports" dalyje.
- Patikrinkite, ar Stackhero ugniasienės nustatymuose prievadas "12201/tcp" yra "ACCEPT", idealiu atveju pirmoje pozicijoje su šaltiniu 0.0.0.0/0 testavimui.
- Graylog administravimo panelėje, skiltyje "Search", įsitikinkite, kad matote paskutinės valandos žurnalus ir nustatykite vaizdą atsinaujinti kas sekundę, kad matytumėte naujas žinutes vos joms atsiradus.