EFK收集nginx日志

准备三台centos7的服务器 两核两G的

关闭防火墙和SELinux

systemctl stop firewalld

setenforce 0

1.每一台都安装jdk

rpm -ivh jdk-8u131-linux-x64_.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:jdk1.8.0_131-2000:1.8.0_131-fcs  ################################# [100%]
Unpacking JAR files...
    tools.jar...
    plugin.jar...
    javaws.jar...
    deploy.jar...
    rt.jar...
    jsse.jar...
    charsets.jar...
    localedata.jar...

 java -version  //执行这条命令可以看到jdk的版本 就是jdk环境配置成功
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

2. 因为我装的是无图形化界面的centos  每一台虚拟机都需要

yum -y install wget
cd /usr/local/src
##这个下载的是zookeeper
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
##这个下载的是kafka
wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.2.0/kafka_2.11-2.2.0.tgz

3. 解压zookeeper 然后移动到/usr/local/zookeeper  kafka做同样的操作  kafka移动到/usr/local/kafka

tar -zxf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14 /usr/local/zookeeper
tar -zxf kafka_2.11-2.2.0.tgz
mv kafka_2.11-2.2.0 /usr/local/kafka

4.在 /usr/local/zookeeper创建两个目录 zkdatalog zkdata

cd /usr/local/zookeeper
mkdir {zkdatalog,zkdata}

5.进入/usr/loca/zookeeper/conf 复制一个配置文件 修改复制出来的配置文件

cd /usr/local/zookeeper/conf
cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
*******************************
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/zkdata
datalogDir=/usr/local/zookeeper/zkdatalog
clientPort=2181
server.1=192.168.18.140:2888:3888
server.2=192.168.18.141:2888:3888
server.3=192.168.18.142:2888:3888
*******************************

6.  每一台的操作都不一样

第一台
echo ‘1‘ > /usr/local/zookeeper/zkdata/myid
第二台
echo ‘2‘ > /usr/local/zookeeper/zkdata/myid
第三胎
echo ‘3‘ > /usr/local/zookeeper/zkdata/myid

7.启动服务  启动的时候按顺序开启 第一台 第二台  第三台

cd /usr/local/zookeeper/bin
./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

8.查看是否开启 zookpeer 的状态

第一台 显示这个状态表示成功
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

第二台
./zkServer.sh  status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

第三台
./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

搭建kafka

第一台
cd /usr/local/kafka/config
vim server.properties
*********************
broker.id=1
advertised.listeners=PLAINTEXT://kafka01:9092
zookeeper.connect=192.168.18.140:2181,192.168.18.141:2181,192.168.18.142:2181  (三台服务器的IP地址)

第2台
cd /usr/local/kafka/config
vim server.properties
*********************
broker.id=2
advertised.listeners=PLAINTEXT://kafka02:9092
zookeeper.connect=192.168.18.140:2181,192.168.18.141:2181,192.168.18.142:2181  (三台服务器的IP地址)

第3台
cd /usr/local/kafka/config
vim server.properties
*********************
broker.id=3
advertised.listeners=PLAINTEXT://kafka03:9092
zookeeper.connect=192.168.18.140:2181,192.168.18.141:2181,192.168.18.142:2181  (三台服务器的IP地址)

10.vim /etc/hosts

添加以下内容在每一台服务器上
192.168.18.140 kafka01
192.168.18.141 kafka02
192.168.18.142 kafka03

11.启动kafka的命令 每一台都启动kafka

cd /usr/local/kafka/bin
./kafka-server-start.sh -daemon ../config/server.properties

启动之后可以查看端口9092

ss -ntlp | grep 9092

12.创建主题 topics

cd /usr/local/kafka/bin
./kafka-topics.sh --create --zookeeper 192.168.18.140:2181(这个ip地址随便写三台服务器中的一个就可以)--replication-factor 2 --partitions 3 --topic wg007

查看主题 如果可以显示刚刚创建的就是成功了

cd /usr/local/kafka/bin
./kafka-topics.sh --list --zookeeper 192.168.18.140:2181

模拟生产者  执行代码后就会有一个小的 >

cd /usr/local/kafka/bin
./kafka-console-producer.sh --broker-list 192.168.18.140:9092 --topic wg007
>

在第二台服务器上模拟消费者

/usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic wg007 --from-beginning

测试模拟生产者和消费者是否成功

在模拟生产者的服务器上写一些东西  可以在模拟消费者的服务器上可以看到表示成功如下所示

写一个脚本用来创建kafka的topic

cd /usr/local/kafka/bin
vim kafka-create-topics.sh
#################################
#!/bin/bash
read -p "请输入一个你想要创建的topic:" topic
cd /usr/local/kafka/bin
./kafka-topics.sh --create --zookeeper 192.168.18.140:2181 --replication-factor 2 --partitions 3 --topic ${topic}

创建一个新的yum源

vim /etc/yum.repo.d/filebeat.repo
***加入以下内容
[filebeat-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

安装

yum -y install filebeat

编辑filebeat的配置文件

cd /etc/filebeat
vim filebeat.yml
修改以下内容

enabled: true

paths:
    - /var/log/nginx/*.log  //写这个路径的前提是安装nginx

output.kafka:
  enabled: true
  # Array of hosts to connect to.
  hosts: ["192.168.18.140:9092","192.168.18.141:9092","192.168.18.142:9092"]
  topic: nginx5 //写这个nginx_log1 的前提是有nginx_log1的topic   上面有生产者的脚本

安装nginx

yum -y install epel*
yum -y install nginx

启动nginx和filebeat

systemctl start filebeat
systemctl enable filebeat
systemctl start nginx

可以给ningx生产一些数据

yum -y install httpd-tools
 ab -n1000 -c 200 http://127.0.0.1/cccc   //这条命令可以多执行几次

可以在安装filebeat的服务器上测试一下nginx的服务

curl -I 192.168.18.140:80

在模拟消费者的服务器上 如果可以显示一下内容 表示成功了

cd /usr/local/kafka/bin

./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic nginx5(这里的topic的名字一定要和filebeat的配置文件里的一致) --from-beginning

如图所示

现在开始收集多个日志 system  nginx  secure 和日志 编辑filebeat的配置文件

#讲filebeat的input改成下面的样子

filebeat.inputs:
#这个是收集nginx的日志
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log  //nginx的日志文件
  fields:
        log_topics: nginx5  //这个是收集nginx的topic

#这个是收集system的日志
- type: log
  enabled: true
  paths:
    - /var/log/messages   //system的日志文件目录
  fields:
        log_topics: messages  //这个是收集system的topic

#收集secure的日志
- type: log
  enabled: true
  paths:
    - /var/log/secure  //secure的日志文件
  fields:
        log_topics: secure  //这个是收集secure的topic

output.kafka:
  enabled: true
  hosts: ["192.168.18.140:9092","192.168.18.141:9092","192.168.18.142:9092"]
  topic: ‘%{[fields][log_topics]}‘

  注意:一点更要创建三个topic 就是上面的配置文件提到的topic  可以使用上面的脚本创建topic   重启filebeat

  systemctl restart filebeat

  我是用了三台服务器来做EFK集群

接下来在第二胎安装logstash   在第三胎安装ES集群(就是elasticsearch和kibana)

安装

安装logstash在第二台
rpm -ivh logstash-6.6.0.rpm
安装 kibana 和elasticsearch
rpm -ivh elasticsearch-6.6.2.rpm
rpm -ivh kibana-6.6.2-x86_64.rpm

编辑elasticsearch的配置文件

vim /etc/elasticsearch/elasticsearch.yml
############################
network.host: 192.168.18.142
http.port: 9200

启动elasticsearch

systemctl restart elasticsearch

编辑kibana的配置文件

vim /etc/kibana/kibana.yml
######################
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.18.142:9200"]

然后启动kibana
systemctl restart kibana

 现在开始 编写logstash的三个配置文件

cd  /etc/logstash/conf.d

现在是messages的  vim messages.conf

input {
        kafka {
        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]
        group_id => "logstash"
        topics => "messages"
         consumer_threads => 5
        }
}
output {
        elasticsearch {
                hosts => "192.168.18.142:9200"
                index => "messages-%{+YYYY.MM.dd}"
        }
}

现在是nginx的  vim nginx.conf

input {
        kafka {
        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]
        group_id => "logstash"
        topics => "nginx5"
         consumer_threads => 5
        }
}
filter {
    grok {
        match => { "message" => "%{NGINXACCESS}" }
    }
}
output {
        elasticsearch {
                hosts => "192.168.18.142:9200"
                index => "nginx1_log-%{+YYYY.MM.dd}"
       }
}

现在是secure的   vim secure.conf

input {
        kafka {
        bootstrap_servers => ["192.168.18.140:9092,192.168.18.141:9092,192.168.18.142:9092"]
        group_id => "logstash"
        topics => "secure"
         consumer_threads => 5
        }
}
output {
        elasticsearch {
                hosts => "192.168.18.142:9200"
                index => "secure-%{+YYYY.MM.dd}"

        }
}

添加管道

vim /etc/logstash/pipelines.yml

- pipeline.id: messages
  path.config: "/etc/logstash/conf.d/messages.conf"
- pipeline.id: nginx
  path.config: "/etc/logstash/conf.d/nginx.conf"
- pipeline.id: secure
  path.config: "/etc/logstash/conf.d/secure.conf"

正则匹配

cd /usr/share/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns

vim nginx_access

URIPARAM1 [A-Za-z0-9$.+!*‘|(){},[email protected]#%&/=:;_?\-\[\]]*
NGINXACCESS %{IPORHOST:client_ip} (%{USER:ident}|- ) (%{USER:auth}|-) \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} (%{NOTSPACE:request}|-)(?: HTTP/%{NUMBER:http_version})?|-)" %{NUMBER:status} (?:%{NUMBER:bytes}|-) "(?:%{URI:referrer}|-)" "%{GREEDYDATA:agent}"

 重启logstash                  systemctl restart logstash

可以在第二台机器上查看模拟消费者的状态  messages的

执行下面的命令可以显示出日志内容就是成功

cd /usr/local/kafak/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic messages --from-beginning<br><br> 

可以在第二台机器上查看模拟消费者的状态  secure的

执行下面的命令可以显示出日志内容就是成功

cd /usr/local/kafak/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic secure --from-beginning

  

可以在第二台机器上查看模拟消费者的状态  nginx的   nginx的可以生产一些日志文件 创建一些访问记录

执行下面的命令可以显示出日志内容就是成功

cd /usr/local/kafak/bin
./kafka-console-consumer.sh --bootstrap-server 192.168.18.141:9092 --topic nginx5  --from-beginning

原文地址:https://www.cnblogs.com/Zrecret/p/12071669.html

时间: 2024-07-30 09:43:08

EFK收集nginx日志的相关文章

centos6.5下安装配置ELK及收集nginx日志

Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等. Logstash 是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索) kibana 也是一个开源和免费的工具,他Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总.分析和搜索重要数据日志. 环境:192.168.50.119

ELK使用filter收集nginx日志-07

修改nginx日志格式 log_format hanye '$proxy_add_x_forwarded_for $remote_user [$time_local] "$request" $http_host' '[$body_bytes_sent] $request_body "$http_referer" "$http_user_agent" [$ssl_protocol] [$ssl_cipher]' '[$request_time] [

ELK 二进制安装并收集nginx日志

对于日志来说,最常见的需求就是收集.存储.查询.展示,开源社区正好有相对应的开源项目:logstash(收集).elasticsearch(存储+搜索).kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch(java).Logstash(jruby).Kibana技术栈的结合, ELK5.X搭建并收集Nginx日志 ELK ELK5.X搭建并收集Nginx日志一.基础环境配置及软件包下载 二.安装Elasticsearch

elk系统搭建并收集nginx日志-主要步骤

一)简介 elk系统是一套目前较为流行的日志收集分析系统,主要由elasticserch,logstash,kibana三部分组成,其中elasticsearch负责数据的存储,logstash负责日志的收集过滤,kibana负责日志的可视化部分.整个工作流程为logstash收集日志,过滤后输出并保存到elasticsearch中,最后用户通过kibana从elasticsearch中读取数据并处理.本文中日志收集引入filebeat收集日志,logstash监听在5000端口并接受fileb

ELK日志服务器的快速搭建并收集nginx日志

今天给大家带来的是开源实时日志分析 ELK , ELK 由 ElasticSearch . Logstash 和 Kiabana 三个开源工具组成.官方网站:https://www.elastic.co 其中的3个软件是: Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等. Logstash 是一个完全开源的工具,他可以对你的日志进行收集.分析,并将其存储供以后使用(如,搜索

rsyslog收集nginx日志配置

rsyslog日志收集配置 rsyslog服务器收集各服务器的日志,并汇总,再由logstash处理 请查看上一篇文章 http://bbotte.blog.51cto.com/6205307/1613571 客户端/发送端  web服务器 # yum install rsyslog -y # vim /etc/rsyslog.conf *.* @192.168.10.1:514 # vim /etc/bashrc                              #收集其他服务器的操作

ELK集群部署及收集nginx日志

一.ELK说明 二.架构图 三.规划说明 四.安装部署nginx+logstash 五.安装部署redis 六.安装部署logstash server 七.安装部署elasticsearch集群 八.安装kibana 一.ELK说明 ELK Stack 是 Elasticsearch.Logstash.Kibana 三个开源软件的组合.在实时数据检索和分析场合,三者通常是配合共用,而且又都先后归于 Elastic.co 公司名下,故有此简称. ELK Stack 在最近两年迅速崛起,成为机器数据

ELK收集nginx日志并用高德地图展示出IP

(一)测试的环境 agentd:192.168.180.22 ES:192.168.180.23 kibana:192.168.180.23 采用的拓扑:logstash -->ES-->kibana (二)实施步骤: (1)logstsh具体配置: 1,配置nginx日志格式,采用log_format格式: log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '          

Logstash收集nginx日志之使用grok过滤插件解析日志

grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'; logst