03/12/2023
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.

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ø.
- Hvad er Metricbeat? En Kraftfuld Metrikindsamler
- Forudsætninger for Installation af Metricbeat
- Metricbeat's Konfigurationsfil: metricbeat.yml
- Aktivering af Moduler og Metriske Sæt
- Opsætning af Udgangspunkt for Data (Output Configuration)
- Generelle Indstillinger for Metricbeat
- Logning af Metricbeat
- Sammenligningstabel: Aktivering af Moduler
- Ofte Stillede Spørgsmål (FAQ)
- Hvordan sender jeg data fra flere Metricbeat-instanser til den samme Elasticsearch-klynge?
- Hvordan sikrer jeg, at data fra forskellige servere kan identificeres i Elasticsearch?
- Hvad hvis min Elasticsearch-klynge er sikret med brugernavn og adgangskode?
- Kan jeg sende Metricbeat-data til flere destinationssteder samtidigt?
- Hvordan fejlfinder jeg Metricbeat, hvis det ikke sender data?
- Konklusion
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 ufwAktiver 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 brugesSørg også for at opdatere dine systempakker og repositories for at få de seneste sikkerhedsopdateringer og programrettelser:
sudo apt-get updateMetricbeat'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 listFor at aktivere et eller flere moduler, skal du bruge modules enable-kommandoen:
./metricbeat modules enable redis mongodbDette 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 mongodbEfter 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: passFor 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: 20sDette 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.

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: falseAlternativt 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: trueKonsol 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: trueGenerelle 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: 2Ved 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: 10level: Angiver logningsniveauet (f.eks.debug,info,warning,error).debuger nyttigt under fejlfinding.to_files: Sæt tiltruefor at skrive al logningsoutput til filer. Disse filer er underlagt filrotation.to_syslog: Sæt tiltruefor 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:
| Funktion | Aktivering via modules.d mappe | Aktivering direkte i metricbeat.yml |
|---|---|---|
| Filplacering | Separate .yml filer i modules.d/ | Direkte i hovedfilen metricbeat.yml |
| Kommandoer til aktivering | metricbeat modules enable/disable | Ingen specifik kommando, manuel redigering |
| Dynamisk genindlæsning | Understøttet via reload.enabled | Kræver genstart af Metricbeat ved ændringer |
| Oversigt over moduler | Brug metricbeat modules list | Kræver manuel gennemgang af metricbeat.yml |
| Anbefalet til større opsætninger | Ja, for bedre organisering og automatisering | Mindre 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.
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.
