How do I send metrics from multiple metricbeat instances to Elasticsearch?

Send Metricbeat-data fra Flere Instanser til Elasticsearch

03/12/2023

Rating: 4.75 (7700 votes)

I nutidens komplekse IT-landskaber er det mere kritisk end nogensinde at have et klart overblik over dine servere og tjenester. At overvåge ydeevne, identificere flaskehalse og reagere proaktivt på potentielle problemer er afgørende for at opretholde systemets stabilitet og effektivitet. Her kommer Metricbeat ind i billedet som et uundværligt værktøj. Metricbeat er en del af Elastic Stack og er designet til at indsamle en bred vifte af system- og servicemetrikker, hvilket giver dig dybdegående indsigt i din infrastrukturs sundhed.

How do I send metrics from multiple metricbeat instances to Elasticsearch?
Metrics from multiple Metricbeat instances will be combined on the Elasticsearch server. Follow the command below to download and install Metricbeat so you can send the metrics to Elasticsearch. sudo dpkg -i metricbeat-8.9.2-amd64.deb Enable and configure data collection modules. Identify the modules that you need to enable.

Udfordringen opstår ofte, når man skal håndtere data fra flere servere eller applikationer. Hvordan sender man metrikker fra adskillige Metricbeat-instanser til en enkelt Elasticsearch-klynge på en organiseret og effektiv måde? Denne artikel vil guide dig gennem installation, konfiguration og bedste praksis for at opnå netop dette, så du kan centralisere din overvågningsdata og få et samlet billede af dit IT-miljø.

Indholdsfortegnelse

Hvad er Metricbeat? En Kraftfuld Metrikindsamler

Metricbeat er et letvægtsdata-shipper, der fungerer som en bro mellem dine systemer og din Elastic Stack. Dets primære formål er at indsamle driftsmålinger fra dine servere og de applikationer, der kører på dem. Dette inkluderer alt fra CPU- og hukommelsesbrug, netværkstrafik og diskstatistik til mere specifikke metrikker fra databaser som MongoDB og MySQL, webservere som Apache, og cache-systemer som Redis.

En af de store fordele ved Metricbeat er dets modulære design. Det kommer med foruddefinerede moduler til en række populære tjenester og systemer. Disse moduler forenkler konfigurationen og sikrer, at du indsamler relevante metrikker uden at skulle starte fra bunden. Den indsamlede data sendes derefter typisk til Elasticsearch, hvor den kan indekseres, søges og visualiseres i Kibana.

Forudsætninger for Installation af Metricbeat

Før vi dykker ned i installation og konfiguration, er der et par forudsætninger, der skal være opfyldt for at sikre en gnidningsfri proces. Denne guide antager, at du arbejder med et Ubuntu Server 20.04 LTS-miljø, men principperne kan overføres til andre Linux-distributioner med mindre justeringer.

  • Ubuntu Server 20.04 LTS: Din server skal køre denne specifikke version af Ubuntu.
  • Elastic Stack Installeret: En fungerende Elastic Stack (Elasticsearch og Kibana) er nødvendig for at modtage og visualisere Metricbeat-data. Hvis du ikke allerede har dette installeret, findes der mange ressourcer, der kan guide dig igennem installationen af Elastic Stack på Ubuntu 20.04 LTS.
  • Ressourcekrav: Minimum 2 CPU-kerner og 4 GB RAM anbefales for en stabil drift af Metricbeat og de tjenester, det overvåger.
  • Åbne porte: For at Metricbeat kan kommunikere med Elasticsearch og Kibana, skal visse porte være åbne. Typisk er dette port 9200 (Elasticsearch) og 5601 (Kibana). Hvis du sender via Logstash, skal port 5044 også være åben.

Det er vigtigt at bemærke, at selvom Ubuntu ofte har alle porte åbne som standard, anbefales det stærkt at aktivere en firewall som UFW (Uncomplicated Firewall) og kun åbne de nødvendige porte for at forbedre sikkerheden. Hvis UFW ikke er installeret, kan du installere det med:

sudo apt install ufw

Aktiver derefter UFW og åbn de nødvendige porte:

sudo ufw enable
sudo ufw allow 9200
sudo ufw allow 5601
sudo ufw allow 5044 # Hvis Logstash bruges

Sørg også for at opdatere dine systempakker og repositories for at få de seneste sikkerhedsopdateringer og programrettelser:

sudo apt-get update

Metricbeat's Konfigurationsfil: metricbeat.yml

Kernestyringen af Metricbeat sker gennem dens konfigurationsfil, metricbeat.yml. Denne fil bruger YAML-syntaks og indeholder alle de indstillinger, der definerer, hvordan Metricbeat opfører sig, hvilke metrikker det indsamler, og hvor det sender dem hen. At forstå strukturen af denne fil er afgørende for en vellykket implementering.

De vigtigste sektioner i metricbeat.yml inkluderer:

  • Modulkonfiguration (Module configuration): Definerer hvilke moduler der er aktiveret, og hvilke metriske sæt de skal indsamle.
  • Generelle indstillinger (General settings): Indeholder globale indstillinger som navnet på shipperen og tags.
  • Udgangskonfiguration (Output configuration): Angiver destinationen for de indsamlede metrikker (f.eks. Elasticsearch, Logstash, Kafka).
  • Processor-konfiguration (Processor configuration): Mulighed for at transformere data, før de sendes.
  • Sti-konfiguration (Path configuration): Definerer stier til konfigurationsfiler, data og logs.
  • Dashboard-konfiguration (Dashboard configuration): Indstillinger relateret til Kibana-dashboards.
  • Logningskonfiguration (Logging configuration): Kontrollerer, hvordan Metricbeat logger sin aktivitet.

Lad os udforske de mest relevante sektioner for at opnå vores mål om at sende data fra flere instanser.

Aktivering af Moduler og Metriske Sæt

Metricbeat kommer med en række forudkonfigurerede moduler, der gør det nemt at indsamle metrikker fra specifikke systemer og applikationer. Disse moduler indeholder metricsets, som er de faktiske samlinger af metrikker (f.eks. CPU, hukommelse, netværk for systemmodulet). Der er to primære måder at aktivere disse moduler på:

1. Aktivering via modules.d-mappen

Metricbeat's installationsmappe indeholder en modules.d-mappe, som indeholder standardkonfigurationer for alle tilgængelige moduler. Hvert modul har sin egen .yml-fil (f.eks. mysql.yml for MySQL-modulet). Som standard er alle moduler (undtagen systemmodulet) deaktiveret.

For at se en liste over tilgængelige moduler og deres status (aktiveret/deaktiveret), kan du køre følgende kommando:

./metricbeat modules list

For at aktivere et eller flere moduler, skal du bruge modules enable-kommandoen:

./metricbeat modules enable redis mongodb

Dette vil oprette et symbolsk link fra modulfilen i modules.d til en aktiveret konfiguration. Tilsvarende kan du deaktivere moduler med modules disable:

./metricbeat modules disable redis mongodb

Efter aktivering skal du muligvis redigere den specifikke modulfil (f.eks. mongodb.yml i modules.d) for at tilpasse indstillinger som hosts, username og password. Et grundlæggende eksempel for MongoDB kunne se således ud:

- module: mongodb
metricsets: ["dbstats", "status"]
period: 10s
hosts: ["localhost:27017"]
username: user
password: pass

For at Metricbeat automatisk kan genindlæse konfigurationsændringer uden at genstarte, skal du aktivere dynamisk genindlæsning i metricbeat.yml:

metricbeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: true
reload.period: 20s

Dette fortæller Metricbeat at scanne modules.d-mappen hvert 20. sekund for ændringer.

2. Aktivering direkte i metricbeat.yml-filen

Hvis du foretrækker en mere centraliseret konfiguration, eller hvis du er vant til ældre versioner af Metricbeat, kan du definere moduler og metriske sæt direkte i metricbeat.yml under metricbeat.modules-listen. Hver indgang starter med et bindestreg (-) efterfulgt af modulets indstillinger. Dette er især nyttigt for mindre opsætninger eller specifikke, unikke konfigurationer.

Eksempel:

metricbeat.modules:
#------------------ Memcached Modul -----------------------------
- module: memcached
metricsets: ["stats"]
period: 10s
hosts: ["localhost:11211"]

#------------------- MongoDB Modul ------------------------------
- module: mongodb
metricsets: ["dbstats", "status"]
period: 5s
hosts: ["localhost:27017"]

Du kan endda specificere det samme modul flere gange med forskellige perioder eller metriske sæt:

- module: couchbase
metricsets: ["bucket"]
period: 15s
hosts: ["localhost:8091"]
- module: couchbase
metricsets: ["cluster", "node"]
period: 30s
hosts: ["localhost:8091"]

Opsætning af Udgangspunkt for Data (Output Configuration)

Denne sektion er hjertet i at sende dine metrikker fra Metricbeat-instanser til din destination. Du kan sende begivenheder til en enkelt eller flere destinationer samtidigt. De mest almindelige udgange er Elasticsearch og Logstash.

Elasticsearch som Destination

At sende data direkte til Elasticsearch er den mest ligefremme metode. Konfigurationsmulighederne er omfattende og giver stor fleksibilitet.

output.elasticsearch:
enabled: true
hosts: ["localhost:9200"]

hosts-indstillingen accepterer en eller flere Elasticsearch-knudepunkter. Hvis du har flere knudepunkter i din Elasticsearch-klynge, kan du liste dem her. Metricbeat vil distribuere begivenhederne i en round-robin-rækkefølge til disse knudepunkter, hvilket giver en vis grad af belastningsfordeling og failover. Dette er vigtigt for en enkelt Metricbeat-instans, der sender data robust til en klynge.

For at sende metrikker fra flere Metricbeat-instanser til den samme Elasticsearch-klynge, skal hver enkelt Metricbeat-instans blot konfigureres med den samme output.elasticsearch.hosts-liste, der peger på din centrale Elasticsearch-klynge. Hver instans vil derefter uafhængigt sende sine metrikker til klyngen.

How do I enable modules & metricsets in metricbeat?
Metricbeat provides two ways of enabling modules and metricsets: The modules.d directory contains default configurations for all the modules available in Metricbeat. The configuration specific to a module is stored in a .yml file with the name of the file being the name of the module.

Hvis din Elasticsearch-klynge er sikret, kan du inkludere legitimationsoplysninger:

output.elasticsearch:
enabled: true
hosts: ["localhost:9200"]
username: "elasticuser"
password: "password"

Du kan også sende begivenheder til en Elasticsearch ingest node pipeline for forudbehandling, før de gemmes:

output.elasticsearch:
enabled: true
hosts: ["localhost:9200"]
pipeline: "nginx_log_pipeline"

Standardindekset, som data skrives til, er i formatet metricbeat-%{[beat.version]}-%{+yyyy.MM.dd}, hvilket opretter et nyt indeks hver dag. Du kan overskrive indeksnavnet eller mønsteret ved hjælp af index-indstillingen, f.eks. for at oprette et nyt indeks hver måned:

output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "metricbeat-%{[beat.version]}-%{+yyyy.MM}"

En avanceret funktion er indices-indstillingen, som giver dig mulighed for betinget at placere begivenheder i specifikke indekser baseret på indholdet af begivenheden. Dette er utrolig nyttigt for at organisere data:

output.elasticsearch:
hosts: ["http://localhost:9200"]
index: "logs-%{+yyyy.MM.dd}"
indices:
- index: "debug-%{+yyyy.MM.dd}"
when.contains:
message: "DEBUG"
- index: "error-%{+yyyy.MM.dd}"
when.contains:
message: "ERR"

Hvis du overskriver standardindeksparameteren, skal du deaktivere standardtemplates og dashboards for at undgå fejl:

setup.dashboards.enabled: false
setup.template.enabled: false

Alternativt kan du angive setup.template.name og setup.template.pattern i metricbeat.yml.

Logstash som Mellemled

Hvis du har brug for yderligere databehandling eller berigelse, før metrikkerne når Elasticsearch, kan du sende dem til Logstash. Logstash skal konfigureres med Beats input-plugin for at modtage Metricbeat-begivenheder.

output.logstash:
enabled: true
hosts: ["localhost:5044"]

Ligesom med Elasticsearch kan du angive flere Logstash-servere for failover. For at aktivere belastningsfordeling af begivenheder på tværs af Logstash-serverne, skal du sætte loadbalance-flaget til true:

output.logstash:
hosts: ["localhost:5045", "localhost:5046"]
loadbalance: true

Konsol Output til Fejlfinding

Under fejlfinding eller test er det ofte nyttigt at se de indsamlede begivenheder direkte. Konsoludgangen skriver begivenhederne til standard output i JSON-format:

output.console:
enabled: true
pretty: true

Generelle Indstillinger for Metricbeat

Udover modul- og output-konfigurationen indeholder metricbeat.yml også generelle indstillinger, der styrer Metricbeats adfærd. Disse er særligt vigtige, når du administrerer flere instanser.

  • name: Navnet på den shipper, der udgiver data. Som standard bruges værtsnavnet. Det er stærkt anbefalet at give hver Metricbeat-instans et unikt og beskrivende navn (f.eks. "dc1-webserver-01", "app-db-server-02"). Dette gør det meget lettere at identificere kilden til metrikkerne i Elasticsearch og Kibana.
  • name: "produktionsserver-web-01"
  • tags: En liste over tags, der vil blive inkluderet i tags-feltet for hver begivenhed, Metricbeat sender. Tags er uvurderlige til at gruppere servere efter logiske egenskaber (f.eks. miljø, rolle, datacenter). Dette hjælper enormt med filtrering og organisering af data i Kibana. For eksempel, hvis du har flere webservere i et 'staging'-miljø, kan du tagge dem med ["staging", "web-tier"].
  • tags: ["staging", "web-tier", "datacenter-kbh"]
  • max_procs: Det maksimale antal CPU'er, der kan udføres samtidigt. Standard er antallet af logiske CPU'er på systemet. Du kan justere dette for at begrænse Metricbeats ressourceforbrug, hvis nødvendigt.
  • max_procs: 2

Ved at udnytte name og tags konsekvent på tværs af dine Metricbeat-instanser, skaber du et robust grundlag for at analysere og filtrere dine metrikker i Elasticsearch, uanset hvor mange servere du overvåger.

Logning af Metricbeat

Korrekt logning er essentiel for fejlfinding og overvågning af Metricbeats egen drift. Du kan konfigurere logningsoutputtet til at skrive til filer eller syslog. Standard er filoutput på Windows og syslog på Linux/OS X, hvis ikke eksplicit konfigureret.

logging.level: debug
logging.to_files: true
logging.files:
path: /var/log/metricbeat
name: metricbeat.log
keepfiles: 10
  • level: Angiver logningsniveauet (f.eks. debug, info, warning, error). debug er nyttigt under fejlfinding.
  • to_files: Sæt til true for at skrive al logningsoutput til filer. Disse filer er underlagt filrotation.
  • to_syslog: Sæt til true for at skrive logningsoutput til syslog.
  • files.path, files.name, files.keepfiles: Bruges til at specificere mappestien, filnavnet og antallet af logfiler, der skal beholdes.

At have Metricbeat-logs let tilgængelige er afgørende, når du skal diagnosticere problemer med dataindsamling eller -afsendelse.

Sammenligningstabel: Aktivering af Moduler

For at give et klarere overblik over de to metoder til modulaktivering, se tabellen nedenfor:

FunktionAktivering via modules.d mappeAktivering direkte i metricbeat.yml
FilplaceringSeparate .yml filer i modules.d/Direkte i hovedfilen metricbeat.yml
Kommandoer til aktiveringmetricbeat modules enable/disableIngen specifik kommando, manuel redigering
Dynamisk genindlæsningUnderstøttet via reload.enabledKræver genstart af Metricbeat ved ændringer
Oversigt over modulerBrug metricbeat modules listKræver manuel gennemgang af metricbeat.yml
Anbefalet til større opsætningerJa, for bedre organisering og automatiseringMindre opsætninger eller ældre versioner

Ofte Stillede Spørgsmål (FAQ)

Hvordan sender jeg data fra flere Metricbeat-instanser til den samme Elasticsearch-klynge?

Hver Metricbeat-instans skal konfigureres med den samme output.elasticsearch.hosts-liste, der peger på din centrale Elasticsearch-klynge. Det er afgørende, at hver Metricbeat-instans også har en unik name-indstilling i dens metricbeat.yml-fil, og du bør overveje at tilføje relevante tags. Dette sikrer, at selvom alle data ender i den samme klynge, kan du nemt skelne mellem, hvilken server eller applikation dataene kommer fra.

Hvordan sikrer jeg, at data fra forskellige servere kan identificeres i Elasticsearch?

Brug name- og tags-indstillingerne i hver Metricbeat-instans' metricbeat.yml-fil. Indstil name til en unik identifikator for serveren (f.eks. dens værtsnavn eller en beskrivende label som "webserver-prod-01"). Brug tags til at gruppere servere efter rolle (f.eks. "web-tier", "database"), miljø (f.eks. "produktion", "staging") eller placering (f.eks. "datacenter-kbh"). Disse felter vil automatisk blive tilføjet til hver metrikbegivenhed, hvilket gør filtrering og visualisering i Kibana meget effektiv.

Hvad hvis min Elasticsearch-klynge er sikret med brugernavn og adgangskode?

Du skal angive username og password under output.elasticsearch-sektionen i metricbeat.yml. For eksempel:

output.elasticsearch:
hosts: ["localhost:9200"]
username: "minbruger"
password: "mithemmeligeord"

Sørg for at bruge sikre metoder til at håndtere legitimationsoplysninger, som f.eks. Elastic Stack's keystore til produktionsmiljøer.

Kan jeg sende Metricbeat-data til flere destinationssteder samtidigt?

Ja, Metricbeat understøtter afsendelse til flere outputs samtidigt. Du kan f.eks. konfigurere det til at sende data til både Elasticsearch og en Logstash-instans. Du skal blot konfigurere flere output-sektioner i din metricbeat.yml-fil og sikre, at enabled: true er sat for hver af dem.

Hvordan fejlfinder jeg Metricbeat, hvis det ikke sender data?

Start med at tjekke Metricbeats logs. Konfigurer logging.level: debug i metricbeat.yml for at få detaljerede oplysninger. Du kan også køre Metricbeat i forgrunden med -e (for at logge til stderr) og -d "*" (for debug output for alle komponenter) for at se realtidsoutput:

sudo ./metricbeat -e -d "*"

Kontroller også din output-konfiguration for korrekte hosts, portnumre, brugernavne og adgangskoder. Sørg for, at firewallen tillader trafik på de nødvendige porte.

Konklusion

Med denne omfattende guide er du nu udstyret med den viden, der er nødvendig for at installere, konfigurere og effektivt administrere Metricbeat-instanser, der sender deres vitale overvågningsdata til en central Elasticsearch-klynge. Ved at udnytte Metricbeats modulære design, fleksible konfigurationsindstillinger og de kraftfulde output-funktioner kan du opnå et detaljeret og samlet overblik over din infrastruktur.

Husk vigtigheden af at give hver Metricbeat-instans et unikt navn og anvende relevante tags for at muliggøre nem identifikation og filtrering af data i Kibana. Uanset om du overvåger en enkelt server eller et distribueret system med hundredvis af instanser, giver Metricbeat dig de nødvendige værktøjer til at holde din IT-infrastruktur sund og velfungerende. Fortsæt med at udforske Elastic Stack's muligheder for at optimere din datahåndtering og analyse yderligere.

Hvis du vil læse andre artikler, der ligner Send Metricbeat-data fra Flere Instanser til Elasticsearch, kan du besøge kategorien Teknologi.

Go up