Grafana+InfluxDB监控NGINX

25 年 7 月 8 日 星期二 (已编辑)
229 字
2 分钟
Pasted image 20250707194718.png

1、需要使用带 GEOIP 2 模块的 NGINX,可以自行编译或使用 DOCKER 容器部署 2、通过gilbn/geoip2influx 解析 NGINX 日志,并向 InfluxDB 推送 3、Grafana 读取 InfluxDB 数据

需要自行输出 MAXMIND 账号,并获取 MAXMINDDB_LICENSE_KEY 和MAXMINDDB_USER_ID

NGINX

配置log_format

nginx

    geoip2 /var/lib/GeoIP/GeoLite2-City.mmdb {
        auto_reload 60m;
        
        # 国家信息(City数据库包含)
        $geoip2_data_country_code default=XX source=$remote_addr country iso_code;
        $geoip2_data_country_name default=Unknown country names en;
        $geoip2_data_continent_code continent code;
        $geoip2_data_continent_name continent names en;
        
        # 城市信息
        $geoip2_data_city_name default=Unknown city names en;
        $geoip2_data_latitude default=0 location latitude;
        $geoip2_data_longitude default=0 location longitude;
        $geoip2_data_postal_code postal code;
        $geoip2_data_subdivision_name subdivisions 0 names en;
        $geoip2_data_subdivision_code subdivisions 0 iso_code;
    }

    
    log_format geoip2influx '$remote_addr - $remote_user [$time_local]'
           '"$request" $status $body_bytes_sent'
           '"$http_referer" $host "$http_user_agent"'
           '"$request_time" "$upstream_connect_time"'
           '"$geoip2_data_city_name" "$geoip2_data_country_code"';


    access_log /var/log/nginx/access.log geoip2influx;

NGINX + geoip2influx

yaml
services:
  nginx:
    image: anroe/nginx-geoip2:1.19.2-alpine-geoip2-3.3
    container_name: nginx
    restart: unless-stopped
    network_mode: host
    volumes:
      - ./config/nginx.conf:/etc/nginx/nginx.conf:ro
      - /etc/ssl/violet/certs:/etc/ssl/violet/certs
      - /etc/ssl/violet/private:/etc/ssl/violet/private
      - ./data/geoip:/var/lib/GeoIP:ro
      - ./log/nginx:/var/log/nginx
      - /etc/nginx/.htpasswd:/etc/nginx/.htpasswd
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - geoip2influx
    deploy:
      restart_policy:
        condition: on-failure
        delay: 60s
        max_attempts: 3

  geoip2influx:
    image: ghcr.io/gilbn/geoip2influx
    container_name: geoip2influx
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - INFLUXDB_V2_URL=<InfluxDB URL>
      - INFLUXDB_V2_TOKEN=<InfluxDB Token>
      - USE_INFLUXDB_V2=true
      - MAXMINDDB_LICENSE_KEY=<>
      - MAXMINDDB_USER_ID=<>
    volumes:
      - ./config:/config
      - ./log:/config/log
      - ./data/geoip:/config/geoip2db/
    restart: unless-stopped

Grafana

导导入此面板 https://grafana.com/grafana/dashboards/12268-nginx-logs-geo-map/ DASHBOARD ID:12268

文章标题:Grafana+InfluxDB监控NGINX

文章作者:violet

文章链接:https://www.vio.vin/posts/grafana-influxdb-jian-kong-nginx[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。