rexlManu / nginxproxymanager-traf

Read Nginx access-logs into InfluxDB

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

nginxproxymanager-traf

Build Status Docker Image

Log your access logs from nginxproxymanager traffic to influxdb for grafana.

Example usage case

Setup

Download the GeoLite2 databases from maxmind.com or via the script. Create a nginx folder in your current pwd with a nginx.conf file inside.

docker run -d --name nginxproxymanager-traf \
    -e INFLUXDB_URL=influxdb \
    -e INFLUXDB_TOKEN=influxdb \
    -e INFLUXDB_BUCKET=influxdb \
    -e INFLUXDB_ORG=influxdb \
    -v nginx-logs:/logs \
    -v $(pwd)/GeoLite2-City.mmdb:/app/GeoLite2-City.mmdb \
    -v $(pwd)/GeoLite2-ASN.mmdb:/app/GeoLite2-ASN.mmdb \
    -v $(pwd)/nginx/:/app/nginx/ \
    --restart=unless-stopped \
    rexlmanu/nginxproxymanager-traf

Point

// geo specific data will be empty if it's a local / internal IP
NewPoint("nginx_access_log", map[string]string{
    "target":      host,
    "client_ip":   remoteAddr,
    "city":        cityName,
    "state":       stateName,
    "country":     country,
    "latitude":    fmt.Sprintf("%f", latitude),
    "longitude":   fmt.Sprintf("%f", longitude),
    "postal_code": postalCode,
    "asn":         asn,
}, map[string]interface{}{
    "upstream_status": upstreamStatus,
    "status":          status,
    "method":          requestMethod,
    "scheme":          scheme,
    "target":          host,
    "uri":             requestUri,
    "client_ip":       remoteAddr,
    "body_bytes":      parseInt,
    "gzip_ratio":      gzipRation,
    "server":          server,
    "user_agent":      httpUserAgent,
    "referer":         httpReferer,
    "request_time":    timeString,
    "city":            cityName,
    "state":           stateName,
    "country":         country,
    "latitude":        latitude,
    "longitude":       longitude,
    "postal_code":     postalCode,
    "asn":             asn,
}, time)

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

About

Read Nginx access-logs into InfluxDB

License:MIT License


Languages

Language:Go 90.8%Language:Shell 4.7%Language:Dockerfile 4.5%