首页 > 系统相关 >ELK部署-实现Nginx日志收集

ELK部署-实现Nginx日志收集

时间:2022-10-29 22:33:25浏览次数:57  
标签:ELK http log Nginx nginx elasticsearch 日志 logstash

一、部署ES

1、创建网络下载镜像

docker network create elastic
docker pull elasticsearch:7.17.6

2、目录准备

mkdir /opt/ELK/elastic/{data,config} -p
chmod 777 /opt/ELK/elastic/data

cat >> /opt/ELK/elastic/config/elasticsearch.yml <<EOF
cluster.name: "ELK"
network.host: 0.0.0.0
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
EOF

3、启动单节点es

docker run -itd --name elasticsearch --network elastic -p 9200:9200 -p 9300:9300 -v /opt/ELK/elastic/data:/usr/share/elasticsearch/data -v /opt/ELK/elastic/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "node.name=es1" -e "discovery.seed_hosts=es1"  -e "cluster.initial_master_nodes=es1" -e "http.host=0.0.0.0" --privileged --restart=always elasticsearch:7.17.6

4、验证es正确性

http://IP:Port/_cat/health

含义说明:

  • 前两项表示启动时间
  • 第三项表示集群名称
  • 第四项表示集群健康状态
  • 后面标识ES节点,分片等数量

ES健康状态

  • green:集群所有数据处在正常状态
  • yellow:集群所有数据都可以访问,但一些数据的副本还没有分配
  • red:集群部分数据不可访问

二、部署Logstash

logstash需要部署到所有需要收集日志的服务器上面,所以说使用docker方式部署会有一定的局限性,所以这里采用tar包部署

1、部署安装

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.17.0-linux-x86_64.tar.gz
tar zxf logstash-7.17.0-linux-x86_64.tar.gz
cd logstash-7.17.0/

2、测试可用性

./logstash -e 'input { stdin { } } output { stdout {} }'

我们输入的时候 会显示出来

解释:

@timestamp:标记时间发生的时间

host:事件发生的主机

@version:标记事件唯一类型

3、编写logstash配置文件 收集Nginx日志信息

cd /root/logstash-7.17.0/config
cp logstash-sample.conf nginxlog.conf

收集Nginx日志到终端 测试是否可以正常输出内容

input {
    file {
        path => "/var/log/nginx/*.log"
        exclude => "error.log"
        start_position => "beginning"
        tags => ["web","nginx"]
        type => "access"
        add_field => {
	    "project" => "nginx-access-log"
             "app" => "nginx"
		}
	}
  }

filter {
}

output {
    stdout{
    }
}

如果可以正常输出Nginx日志到终端 表示配置没问题

接下来修改Nginx日志使用json格式

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

添加通过 message 字段过滤

cat nginxlog.conf 
input {
    file {
        path => "/var/log/nginx/*.log"
        exclude => "error.log"
        start_position => "beginning"
        tags => ["web","nginx"]
        type => "access"
        add_field => {
	    "project" => "nginx-access-log"
             "app" => "nginx"
		}
	}
  }

filter {
    json {
    source => "message"
    skip_on_invalid_json => "true"
  }
}

output {
    stdout{
    }
}

4、将Nginx日志输出到ES中

input {
    file {
        path => "/var/log/nginx/*.log"
        exclude => "error.log"
        start_position => "beginning"
        tags => ["web","nginx"]
        type => "access"
        add_field => {
	    "project" => "nginx-access-log"
             "app" => "nginx"
		}
	}
  }

filter {
    json {
    source => "message"
    skip_on_invalid_json => "true"
  }
}

output {
    elasticsearch {
	hosts => ["10.0.24.5"]
	index => "nginx-access-log-%{+YYYY.MM.dd}"

	}
}

三、Kibana部署

1、部署

docker run -itd --name kibana --network elastic -p 5601:5601 -e "I18N_LOCALE=zh-CN" -e "ELASTICSEARCH_HOST=http://elasticsearch:9200" kibana:7.17.6

浏览器访问:http://IP:5601

2、创建Nginx索引

Discover > 创建

3、创建可视化

根据需求选择创建 饼状体、数据图等

根据索引筛选过滤信息 如:Nginx xxx -xxxx 时间段访问记录

标签:ELK,http,log,Nginx,nginx,elasticsearch,日志,logstash
From: https://www.cnblogs.com/qinziteng/p/16840065.html

相关文章

  • 用shell脚本巧解日志文件塞满磁盘导致系统挂起的困惑
    作者:田逸(formyz​)出事了,十万火急​一帮可爱的程序员,写的程序没有规划,程序、代码与日志一锅粥,而且都在某云的系统盘,不光生成的文件多,而且不做处理。有一天,来了个十万火急的求......
  • phpstudy出现乱码导致Apache或者Nginx无法启动
    今天在使用Phpstudy的时候,突然无法创建新站点了(好久没用过了)。错误提示如下:(注意截图位置,端口和时间都是乱码)    经过查阅大量资料,原来是软件的编码格式导致......
  • Nginx代理后端Tomcat
    拉取镜像并运行dockerpullnginx:1.23dockerpulltomcat:8dockerrun-dnginx:1.23dockerrun-dtomcat:8进入nginx容器安装vim命令并备份安装vim命令apt-get......
  • 日志包含Getshell
    题目来自CTFSHOWWEB81第一步,将携带有webshell的语句插入到UA当中,并访问主页<?phpsystem('ls');?>第二步,包含日志可以看到已经执行了命令。......
  • nginx01
    http->httpslearning.flask.comif($host='learning.flask.com'){rewrite^/(.*)$https://learning.flask.com/$1permanent;}域名指向404页面fi......
  • keepalived实现nginx高可用
    1、环境准备 IP主机名服务10.0.0.101keepalive1keepalived+nginx10.0.0.102keepalive2keepalived+nginx10.0.0.18web01nginx作为后端web服务10.......
  • CentOS 7.6 Nginx安装
    目录一键执行安装分步骤安装1.安装依赖项,和必要组件2.下载Nginx3.解压4.编译配置5.创建全局命令一键执行安装一键执行安装nginxyuminstall-ymakecmakegccgcc......
  • nginx负载均衡的原理以及过程(4)
    负载均衡的策略:  这是nginx默认最基础的策略。使用keepalive提高上游服务质量 ......
  • nginx端口复用
    文档说明:只记录关键地方;nginx端口例子使用$ssl_preread_protocol$ssl_preread_server_name$ssl_preread_alpn_protocols三个变量的组合,来区分不同的服务stream......
  • nginx解决跨域关键点
    文档说明:只记录关键地方;目标:使用CORS和jsonp解决跨域问题一:nginx使用CORS解决跨域涉及到nginx配置也就这些add_headerAccess-Control-Allow-Origin$cors_ori......