Linux结合ELK与Grafana可视化监控分析Nginx日志

前提需要安装好 ELK 集群和 Grafana,ELK 安装可以参考Linux 搭建 ELK+Filebeat+Nginx+Redis 分布式日志管理平台

一、配置 Nginx 日志输出格式

# 编辑 nginx.conf,内容如下

[root@master ~]# vim /usr/local/nginx/conf/nginx.conf

log_format json ‘{“@timestamp”:”$time_iso8601″,’
       ‘”host”:”$server_addr”,’

       ‘”ip”:”$remote_addr”,’

       ‘”clientip”:”$remote_addr”,’

       ‘”remote_user”:”$remote_user”,’

       ‘”request”:”$request”,’

       ‘”http_user_agent”:”$http_user_agent”,’

       ‘”size”:$body_bytes_sent,’

       ‘”responsetime”:$request_time,’

       ‘”upstreamtime”:”$upstream_response_time”,’

       ‘”upstreamhost”:”$upstream_addr”,’

       ‘”http_host”:”$host”,’

       ‘”requesturi”:”$request_uri”,’

       ‘”url”:”$uri”,’

       ‘”domain”:”$host”,’

       ‘”xff”:”$http_x_forwarded_for”,’

       ‘”referer”:”$http_referer”,’

       ‘”status”:”$status”}’;

access_log logs/access.log json;

注意:这里的Nginx 配置所有访问日志,统一在/usr/local/nginx/logs/access.log。

如果你的环境,单独为每一个虚拟主机分配了 access 日志,那么就需要在对应的虚拟主机配置文件,应用格式 json 即可。

二、配置 Logstash

注意:本文采Filebeat+Logstash 采集 nginx 日志,并发送给 Elasticsearch。

[root@master ~]# cat /etc/logstash/conf.d/nginx.conf

input {
   redis {

     host => “172.27.5.51”

    port => “6379”

    db => “0”

    password => “Aa123456”

    data_type => “list”

    key => “nginx-access-log”

    codec => “json”

  }

}

 

filter {

   if [fields][logtype] == “nginx-access-log” {

     json {

        source => “message”

    }

 

    mutate {

      convert => [ “status”,”integer” ]

      convert => [ “size”,”integer” ]

      convert => [ “upstreamtime”,”float” ]

      convert => [ “[geoip][coordinates]”,”float” ]

      remove_field => “geoip.continent_code”

      remove_field => “geoip.country_code2”

      remove_field => “geoip.country_code3”

     }

 

    date {

       match => [ “timestamp” ,”dd/MMM/YYYY:HH:mm:ss Z” ]

    }

 

    geoip {

     source => “ip”

     target => “geoip”

     database =>”/usr/share/logstash/GeoLite2-City_20221206/GeoLite2-City.mmdb”

     add_field => [ “[geoip][coordinates]”, “%{[geoip][longitude]}” ]

     add_field => [ “[geoip][coordinates]”, “%{[geoip][latitude]}”  ]

     }

 

    mutate {

     remove_field => “timestamp”

    }

 }

}

output {

  if [fields][logtype] == “nginx-access-log” {

    elasticsearch {

    hosts => [“172.27.5.51:9200”]

    user => “elastic”

    password => “www.yangxingzhen.com”

    action => “index”

    index => “nginx-access-log-%{+YYYY.MM.dd}”

    }

  }

}

注意:/usr/share/logstash/GeoLite2-City_20221206/GeoLite2-City.mmdb,这个是地图数据文件。

GeoLite2-City.mmdb 是 IP 信息解析和地理定位的。官方下载地址: ​https://www.maxmind.com​

下载文件完成后,将此文件上传到/usr/share/logstash/GeoLite2-City_20221206目录。

三、配置 Grafana

1、访问 Grafana,配置 Elasticsearch 数据源

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

 

 

2、配置 ES 相关信息

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

注意:如果 elasticsearch 需要认证,在下面的 Auth 设置中,Basic auth 开启,输入用户名和密码。

3、配置 ES 索引信息

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

 

4、Grafana 安装插件

[root@master ~]# grafana-cli plugins install grafana-piechart-panel

[root@master ~]# grafana-cli plugins install grafana-worldmap-panel

 

# 安装完成后,重启 Grafana 生效。

[root@master ~]# systemctl restart grafana-server

 

5、配置展示模板

1)输入模板 ID,然后点击 Load

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

 

 

2)模板效果展示

 

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

 

Linux 结合 ELK 与 Grafana 可视化监控分析 Nginx 日志

至此,ELK+Grafana 分析 Nginx 日志配置完成。

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...