Julen er næsten her, og du bruger et par timer på at spille Counter-Strike: Global Offensive (CSGO). Du kan endda gøre det på din egen dedikerede server. Hvis det er tilfældet, og du vil lære at overvåge dit spil, så fortsæt med at læse!
I denne artikel lærer du, hvordan du installerer en CSGO-server og overvåger den, sammen med den instans, den kører i.
Prometheus, selvfølgelig, men hvilke eksportører?
Sådan installeres CSGO-server, Prometheus og eksportørerne
Vi brugte en tom Ubuntu 20.04 LTS-instans i en EC2-instans til dette projekt og lancerede CSGO-serveren, Prometheus og eksportørerne ved at bruge Docker og Docker Compose.
Bemærk, at du skal installere Docker. I dette scenarie fulgte vi installationsinstruktionerne til Ubuntu.
Konfigurer og start containerne
Lad os først skrive konfigurationsfilen til Prometheus. Lave en prometheus
mappe med en prometheus.yaml
fil indeni. Dette er indholdet:
global: external_labels: origin: prometheus-ec2-csgo scrape_configs: - job_name: prometheus static_configs: - targets: - localhost:9090 - localhost:9100 - localhost:8080 - localhost:9137
Lad os derefter konfigurere CSGO-serveren ved at skabe en srcds.yaml
fil med følgende indhold:
options: connectTimeout: 60s cacheExpiration: 15s cacheCleanupInterval: 11s servers: csgo: address: localhost:27015 rconPassword: <CHANGE ME>
Her er vores docker-compose.yaml
:
version: "3.3" services: csgo: image: timche/csgo container_name: csgo-ds environment: CSGO_GSLT: <STEAM TOKEN> CSGO_HOSTNAME: CSGOSERVER CSGO_PW: <CHANGE ME> CSGO_RCON_PW: <CHANGE ME> CSGO_PORT: 27017 volumes: - type: bind source: /opt/csgo/csgo-data/ target: /opt/app/static network_mode: host restart: unless-stopped csgo-updater: image: timche/csgo-updater container_name: csgo-updater volumes: - type: bind source: /var/run/docker.sock target: /var/run/docker.sock prometheus: image: quay.io/prometheus/prometheus:v2.31.1 container_name: prometheus volumes: - ./prometheus/:/etc/prometheus/ - /opt/prometheus/prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yaml' - '--storage.tsdb.path=/prometheus' network_mode: host cadvisor: image: gcr.io/cadvisor/cadvisor volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro ports: - 8080:8080 restart: always deploy: mode: global node-exporter: image: prom/node-exporter volumes: - /proc:/host/proc:ro - /sys:/host/sys:ro - /:/rootfs:ro command: - '--path.procfs=/host/proc' - '--path.sysfs=/host/sys' - --collector.filesystem.ignored-mount-points - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)" ports: - 9100:9100 restart: always csgo-exporter: image: quay.io/galexrt/srcds_exporter:v0.0.1 container_name: csgo-exporter command: ["/bin/srcds_exporter", "--config.file","/tmp/csgo/srcds.yaml"] network_mode: host volumes: - type: bind source: /home/ubuntu/srcds.yaml target: /tmp/csgo/srcds.yaml
Husk at ændre adgangskoden og erstatte den <CHANGE ME>
strenge. Opret også et steam-token og placer det i <STEAM TOKEN>
slot i CSGO-serverkonfigurationen YAML.
Nu skal du bare starte alle beholderne med følgende:
docker-compose up -d
Du kan se, om alt er i orden ved at tjekke, hvilke containere der kører:
docker ps
Tjek Prometheus dashboard
Normalt bliver porte ikke eksponeret som standard, når vi opretter cloud-forekomster, og af sikkerhedsmæssige årsager vil vi ikke gøre det. Lad os bruge en port videre til vores lokale maskine for at få sikker adgang til Prometheus-dashboardet.
ssh -f -N -i "<Path of your PEM file>" -L 9090:localhost:9090 <instance user>@<instance ip>
Gå nu til din browser og skriv localhost:9090
… og voilà
CSGO Metrics
Du kan få antallet af menneskelige spillere i spillet ved at bruge srcds_playercount_humans
.
For at få antallet af bot-spillere i spillet, brug srcds_playercount_bots
.
Du kan også beregne procentdelen af brugen af din server med
srcds_playercount_humans{server=~$server}/ srcds_playercount_limit{server=~$server}
For at kontrollere det aktuelle kort, der afspilles, skal du blot bruge srcds_map
.
Forekomstmålinger
Overvågning af CSGO er nyttigt, men du skal også have et billede af, hvordan det fungerer i cloud-forekomsten.
Du kan få værdifuld viden fra disse målinger. For eksempel bruger du måske en mere kraftfuld maskine, end du egentlig har brug for. Så måske vil dette hjælpe dig med at spare nogle penge.
Hukommelse
Lad os først se, hvor meget hukommelse der bruges i instansen, i procent:
100 - ((node_memory_MemAvailable_bytes * 100) / node_memory_MemTotal_bytes)
En anden interessant metrik er den hukommelse, der bruges (i sekunder) af CSGO-servercontaineren.
container_memory_usage_bytes{name="csgo-ds"}
CPU
Lad os tjekke, hvad det samlede CPU-forbrug af beholderen er i procent. Eller med andre ord, hvor travlt er CPU’en:
(((count(count(node_cpu_seconds_total) by (cpu))) - avg(sum by (mode)(irate(node_cpu_seconds_total{mode="idle"}[5m])))) * 100) / count(count(node_cpu_seconds_total) by (cpu))
Tjek nu, hvor meget CPU CSGO-servercontaineren bruger:
rate(container_cpu_user_seconds_total{name="csgo-ds"}[5m])
Vente! Hvor er latensen?!
Vi målte ikke latensen, fordi klienten opretter forbindelse til serveren via UDP, så serveren kan ikke vide, hvad kommunikationens latens er.
Start kampen!
I denne artikel lærte du, hvordan du installerer CSGO-serveren i en cloud-instans, og hvordan du overvåger den med Prometheus sammen med instansen.
Du læser også listen over de mest interessante målinger for dette projekt. Start nu kampen med dine venner og nyd juleferien. Glædelig jul og godt nytår!!
Informationskilde : http://www.bing.com/news/apiclick.aspx?ref=FexRss&aid=&tid=6D2D525EDD2441B0AA66C422E59635D3&url=https%3A%2F%2Fsysdig.com%2Fblog%2Fmonitor-csgo%2F&c=1329074521948670819&mkt=fr-fr