Nginx日志统计展示

一、 效果展示

 

二、流程

 

三、 Nginx 配置

         nginx.conf,修改日志格式,指定需要收集的字段及字段分割

http{ ........     log_format  main  '$remote_addr - $remote_user [$time_local] $request '                       '$status $body_bytes_sent $http_referer '                       '$http_user_agent'; ........ }

 

四、 Filebeat 配置

         修改filebeat.yml

egrep -v ^#|^  #|^$ filebeat.yml

filebeat.inputs: - type: log enabled: true paths: - /var/log/nginx/xxx.log fields: file_type: nginx-log fields_under_root: true encoding: utf-8 filebeat.config.modules: path: ${path.config}/modules.d/*.yml reload.enabled: false setup.template.settings: index.number_of_shards: 1 setup.kibana: output.logstash: hosts: [xxx.xxx.xxx.xxx:xxxxx] processors: - add_host_metadata: ~ - add_cloud_metadata: ~ - add_docker_metadata: ~ - add_kubernetes_metadata: ~

 

五、 Logstash 配置

       安装geoip插件

./bin/logstash-plugin install logstash-filter-geoip

       修改logstash.conf

input {     beats {         host => '0.0.0.0'         port => xxxxx         codec => plain{ charset => GBK }     } }  filter {     if [file_type] == nginx-log{         grok {             match => [             'message', '%{IPORHOST:remote_addr} - %{NOTSPACE:remote_user} \[%{HTTPDATE:time_local}\] \%{WORD:method} %{NOTSPACE:request_uri} %{URIPROTO:proto}/%{NUMBER:httpversion}\ %{NUMBER:status} (?:%{NUMBER:size}|-) %{QS:referrer} %{QS:user_agent}'             ]         }         geoip {             source => remote_addr             fields => [location,country_name,city_name,region_name]         }         mutate {             remove_field => [host, agent]         }     } }  output {     if [file_type] == nginx-log{         elasticsearch {             hosts => [xxx.xxx.xxx.xxx:xxxxx]             index => %{file_type}-%{+YYYY.MM.dd}             user => 'xxxx'             password => 'xxxxxx'         }     } }

 

六、 Elasticsearch 配置

        没有需要特别配置的,保证运行正常就行

 

七、 Grafana 添加数据源

 

八、 Json导出(只展示panels)

panels: [     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: green,                 value: null               }             ]           },           unit: s         },         overrides: []       },       gridPos: {         h: 4,         w: 4,         x: 0,         y: 0       },       id: 12,       options: {         colorMode: none,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             last           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_uptime{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: 运行时间,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 2               }             ]           }         },         overrides: []       },       gridPos: {         h: 4,         w: 3,         x: 4,         y: 0       },       id: 20,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_variables_innodb_flush_log_at_trx_commit{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: Variables_innodb_flush_log_at_trx_commit,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 8388608               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 4,         w: 3,         x: 7,         y: 0       },       id: 18,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_variables_max_allowed_packet{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: Variables_max_allowed_packet,       type: stat     },     {       description: ,       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 2097152               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 4,         w: 3,         x: 10,         y: 0       },       id: 14,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_variables_sort_buffer_size{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: Variables_sort_buffer_size,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 2097152               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 4,         w: 3,         x: 13,         y: 0       },       id: 16,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_variables_join_buffer_size{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: Variables_join_buffer_size,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 536870912               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 4,         w: 4,         x: 16,         y: 0       },       id: 6,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_variables_innodb_buffer_pool_size{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: Variables_innodb_buffer_pool_size,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: red,                 value: null               },               {                 color: green,                 value: 0.95               }             ]           },           unit: percentunit         },         overrides: []       },       gridPos: {         h: 4,         w: 4,         x: 20,         y: 0       },       id: 22,       options: {         colorMode: value,         graphMode: none,         justifyMode: auto,         orientation: auto,         reduceOptions: {           calcs: [             lastNotNull           ],           fields: ,           values: false         },         textMode: auto       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: (mysql_innodb_buffer_pool_read_requests{ident=\$host\} - mysql_innodb_buffer_pool_reads{ident=\$host\}) / mysql_innodb_buffer_pool_read_requests{ident=\$host\},           interval: ,           legendFormat: ,           refId: A         }       ],       title: 缓存命中率,       type: stat     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 37,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 0,         y: 4       },       id: 32,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: procstat_memory_data{ident=\$host\,user=\mysql\},           interval: ,           legendFormat: memory_data,           refId: A         }       ],       title: 内存占用,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 32,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineStyle: {               fill: solid             },             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           }         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 8,         y: 4       },       id: 34,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: procstat_cpu_usage{ident=\$host\,user=\mysql\},           interval: ,           legendFormat: cpu_usage,           refId: A         }       ],       title: cpu使用,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 59,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-green,                 value: null               }             ]           },           unit: none         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 16,         y: 4       },       id: 8,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_process_list_threads_idle{ident=\$host\},           interval: ,           legendFormat: process_list,           refId: A         }       ],       title: 进程数,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 34,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineStyle: {               fill: solid             },             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           }         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 0,         y: 12       },       id: 26,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_threads_created{ident=\$host\},           interval: ,           legendFormat: threads_created,           refId: A         }       ],       title: 已创建线程,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 40,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           }         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 8,         y: 12       },       id: 28,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_threads_running{ident=\$host\},           interval: ,           legendFormat: threads_running,           refId: A         }       ],       title: 在运行线程,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 42,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           }         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 16,         y: 12       },       id: 30,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_threads_connected{ident=\$host\},           interval: ,           legendFormat: threads_connected,           refId: A         }       ],       title: 已连接线程,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds,             seriesBy: last           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 1,             drawStyle: line,             fillOpacity: 52,             gradientMode: hue,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: never,             spanNulls: true,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-blue,                 value: null               }             ]           },           unit: bytes         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 0,         y: 20       },       id: 10,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       pluginVersion: 8.4.5,       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_innodb_buffer_pool_bytes_data{ident=\$host\},           format: time_series,           interval: ,           intervalFactor: 1,           legendFormat: innodb_buffer_pool_bytes_data,           refId: A         }       ],       title: 缓存池数据大小,       type: timeseries     },     {       fieldConfig: {         defaults: {           color: {             mode: thresholds           },           custom: {             axisLabel: ,             axisPlacement: auto,             barAlignment: 0,             drawStyle: line,             fillOpacity: 50,             gradientMode: none,             hideFrom: {               legend: false,               tooltip: false,               viz: false             },             lineInterpolation: linear,             lineWidth: 1,             pointSize: 5,             scaleDistribution: {               type: linear             },             showPoints: auto,             spanNulls: false,             stacking: {               group: A,               mode: none             },             thresholdsStyle: {               mode: off             }           },           mappings: [],           thresholds: {             mode: absolute,             steps: [               {                 color: light-green,                 value: null               }             ]           }         },         overrides: []       },       gridPos: {         h: 8,         w: 8,         x: 8,         y: 20       },       id: 24,       options: {         legend: {           calcs: [],           displayMode: list,           placement: bottom         },         tooltip: {           mode: single,           sort: none         }       },       targets: [         {           datasource: {             type: prometheus,             uid: CHsKN4Unz           },           exemplar: true,           expr: mysql_slow_queries{ident=\$host\},           interval: ,           legendFormat: slow_queries,           refId: A         }       ],       title: 慢查询,       type: timeseries     }   ]