ELK收集nginx日志并在grafanna展示

实战

Posted by dbstack on December 6, 2019

ELK收集nginx日志并在grafanna展示

一、官方网站下载

(1)安装JDK

yum install -y java-1.8.0-openjdk-devel  # 安装1.8或1.8以上版本

(2)下载elasticsearchhttps://www.elastic.co/cn/downloads/elasticsearch,是ELasticsearch的官方站点,如果需要下载最新的版本,进入官网下载即可。可以下载到本地电脑然后再导入CentOS中,也可以直接在CentOS中下载。

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.rpm

(3)安装elasticsearch

rpm -ivh elasticsearch-6.5.4.rpm

(4)配置目录 安装完毕后会生成很多文件,包括配置文件日志文件等等,下面几个是最主要的配置文件路径

/etc/elasticsearch/elasticsearch.yml                            # els的配置文件
/etc/elasticsearch/jvm.options                                  # JVM相关的配置,内存大小等等
/etc/elasticsearch/log4j2.properties                            # 日志系统定义

/usr/share/elasticsearch                                        # elasticsearch 默认安装目录
/var/lib/elasticsearch                                          # 数据的默认存放位置

(5)创建用于存放数据与日志的目录

mkdir -p /opt/elasticsearch/data
mkdir -p /opt/elasticsearch/log
chown -R elasticsearch.elasticsearch /opt/elasticsearch/*

(6)集群配置

vim /etc/elasticsearch/elasticsearch.yml

cluster.name: imysql-els                               # 集群名称
node.name: els-node1                               # 节点名称,仅仅是描述名称,用于在日志中区分

path.data: /data/elasticsearch/data                 # 数据的默认存放路径
path.logs: /data/elasticsearch/log                  # 日志的默认存放路径

network.host: 172.18.1.10                        # 当前节点的IP地址
http.port: 9200                                    # 对外提供服务的端口,9300为集群服务的端口
#添加如下内容
#culster transport port
transport.tcp.port: 9300
transport.tcp.compress: true

discovery.zen.ping.unicast.hosts: ["172.18.1.10", "172.18.1.11","172.18.1.12"]       
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析

discovery.zen.minimum_master_nodes: 2              # 为了避免脑裂,集群节点数最少为 半数+1

(7)授权并启动elasticsearch

chown -R   elasticsearch.     /data/elasticsearch
systemctl start  elasticsearch
systemctl enable  elasticsearch

curl -i "http://172.18.1.10:9200"

二、 配置收集nginx日志

(1)修改nginx日志格式

log_format  main  '{"@timestamp":"$time_iso8601",'
                  '"@source":"$server_addr",'
                  '"hostname":"$hostname",'
                  '"ip":"$remote_addr",'
                  '"client":"$remote_addr",'
                  '"request_method":"$request_method",'
                  '"scheme":"$scheme",'
                  '"domain":"$server_name",'
                  '"referer":"$http_referer",'
                  '"request":"$request_uri",'
                  '"args":"$args",'
                  '"size":$body_bytes_sent,'
                  '"status": $status,'
                  '"responsetime":$request_time,'
                  '"upstreamtime":"$upstream_response_time",'
                  '"upstreamaddr":"$upstream_addr",'
                  '"http_user_agent":"$http_user_agent",'
                  '"https":"$https"'
                  '}';


logstash  

cat logstash.conf
input {
    file {
        path => [ "/data/tengine/*.log" ]
        ignore_older => 0
    codec => json
    }
}

filter {
    mutate {
      convert => [ "status","integer" ]
      convert => [ "size","integer" ]
      convert => [ "upstreatime","float" ]
      remove_field => "message"
    }
    geoip {
        source => "ip"
    }


}
output {
    elasticsearch {
        hosts => ["http://172.18.1.10:9200"]
        index => "prod-nginx-172.18.1.66-%{+YYYY-MM-dd}"
    }
#    stdout {codec => rubydebug}
}




(2) 安装grafanna

wget https://dl.grafana.com/oss/release/grafana-6.5.1-1.x86_64.rpm
yum localinstall grafana-6.5.1-1.x86_64.rpm

systemcrl start grafana-server

systemcrl enable grafana-server

(2)安装grafanna 展示nginx日志插件

grafana-cli plugins install grafana-piechart-panel
grafana-cli plugins install  grafana-worldmap-panel
systemcrl restart grafana-server

(3)修改地图展示js

cd /var/lib/grafana/plugins/grafana-worldmap-panel
grafana-worldmap-panel\src\worldmap.ts 
grafana-worldmap-panel\dist\module.js 
grafana-worldmap-panel\dist\module.js.map 
将:https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png
替换成:http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png

将:https://cartodb-basemaps-{s}.global.ssl.fastly.net/dark_all/{z}/{x}/{y}.png 
替换成:http://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png 

systemcrl restart grafana-server

(4)grafanna增加nginx数据源

完毕