EFK基础架构:
将数据利用filebeat的代理传给kafka集群,kafka集群利用logstash传给es集群
ES服务器:两台es-1:[10.0.1.11]es-2:[10.0.1.12]
kibana程序在ES服务器其中一台上进行部署
kafka服务器:两台[10.0.1.13][10.0.1.14]
logstash程序在kafka服务器上部署
filebeat服务器:一台[10.0.1.14]
本次实验采集的为nginx服务的访问日志,nginx项目部署在filebeat服务器上
ES-1部署:
安装配置jdk环境:
下载jdk的包到本地并解压到/usr/local/下
>mv /usr/local/jdk解压后的包 /usr/local/java
给jdk改名,方便后续操作
>vim /etc/profile #编辑环境变量配置文件
在末行添加:
JAVA_HOME=/usr/local/java/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
保存退出
>source /etc/profile #使更改的环境变量生效
安装配置ES:
> useradd es #创建运行程序的普通用户
>echo “es” | passwd —stdin “es” #设置es用户的密码为es
将es包上传到服务器后解压到/usr/local下
>mv /usr/local/es包名 /usr/local/elasticsearch #改名,方便后续操作
>vim /usr/local/easticsearch/config/elasticsearch.yml #编辑es程序的配置文件
在末行添加:
cluster.name: bjbpe01-elk
node.name: elk01
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [“10.0.1.11”, “10.0.1.12”]
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: “*”
保存退出
JVM堆大小根据实际情况而定:
>sed -i ‘s/-Xms1g/-Xms2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
>sed -i ‘s/-Xmx1g/-Xmx2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
创建ES数据及日志存储目录:
>mkdir -p /data/elasticsearch/data
>mkdir -p /data/elasticsearch/logs
修改安装目录及存储目录所属者:
>chown -R es.es /data/elasticsearch
>chown -R es.es /usr/local/elasticsearch
系统优化:
>vim /etc/security/limits.conf
soft nofile 65536
hard nofile 131072
soft nproc 2048
hard nproc 4096
保存退出
增加最大内存映射数:
>”vm.max_map_count=262144” >> /etc/sysctl.conf
>sysctl -p #使修改生效
部署kibana:
将kibana包上传到服务器解压到/usr/local下
>mv /usr/local/kibana包 /usr/local/kibana
#给解压后的kibana程序目录改名,为方便后续操作
>vim /usr/local/kibana/config/kibana.yml #编辑kibana的配置文件
在末尾添加:
server.port: 5601
server.host: “10.0.1.11”
elasticsearch.url: “http://10.0.1.11:9200“
kibana.index: “.kibana”
启动es:
>su - es -c “/usr/local/elasticsearch && nohup bin/elasticsearch &”
ES-2部署:
与ES-1基本一致:
安装配置jdk环境:
下载jdk的包到本地并解压到/usr/local/下
>mv /usr/local/jdk解压后的包 /usr/local/java
给jdk改名,方便后续操作
>vim /etc/profile #编辑环境变量配置文件
在末行添加:
JAVA_HOME=/usr/local/java/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
保存退出
>source /etc/profile #使更改的环境变量生效
安装配置ES:
> useradd es #创建运行程序的普通用户
>echo “es” | passwd —stdin “es” #设置es用户的密码为es
将es包上传到服务器后解压到/usr/local下
>mv /usr/local/es包名 /usr/local/elasticsearch #改名,方便后续操作
>vim /usr/local/easticsearch/config/elasticsearch.yml #编辑es程序的配置文件
在末行添加:
cluster.name: bjbpe01-elk
node.name: elk02
node.master: true
node.data: true
path.data: /data/elasticsearch/data
path.logs: /data/elasticsearch/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: [“10.0.1.11”, “10.0.1.12”]
discovery.zen.ping_timeout: 150s
discovery.zen.fd.ping_retries: 10
client.transport.ping_timeout: 60s
http.cors.enabled: true
http.cors.allow-origin: “*”
保存退出
JVM堆大小根据实际情况而定:
>sed -i ‘s/-Xms1g/-Xms2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
>sed -i ‘s/-Xmx1g/-Xmx2g/‘ /usr/local/elasticsearch-6.5.4/config/jvm.options
创建ES数据及日志存储目录:
>mkdir -p /data/elasticsearch/data
>mkdir -p /data/elasticsearch/logs
修改安装目录及存储目录所属者:
>chown -R es.es /data/elasticsearch
>chown -R es.es /usr/local/elasticsearch
系统优化:
>vim /etc/security/limits.conf
soft nofile 65536
hard nofile 131072
soft nproc 2048
hard nproc 4096
保存退出
增加最大内存映射数:
>”vm.max_map_count=262144” >> /etc/sysctl.conf
>sysctl -p #使修改生效
启动es:
>su - es -c “/usr/local/elasticsearch && nohup bin/elasticsearch &”
kafka-1服务器部署:
安装配置jdk环境:
下载jdk的包到本地并解压到/usr/local/下
>mv /usr/local/jdk解压后的包 /usr/local/java
给jdk改名,方便后续操作
>vim /etc/profile #编辑环境变量配置文件
在末行添加:
JAVA_HOME=/usr/local/java/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
保存退出
>source /etc/profile #使更改的环境变量生效
Kafka运行依赖ZK,Kafka官网提供的tar包中,已经包含了ZK,这里不再额下载ZK程序
将kafka程序压缩包上传到服务器后解压到/usr/local下
>mv /usr/local/kafka包名称 /usr/local/kafka
将解压后的工作目录改名,方便后续操作
编辑zookeeper配置文件:
>sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
将zookeeper.properties文件内所有行注释掉
>vim /usr/local/kafka/config/zookeeper.properties #编辑配置文件
末尾添加:
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=10.0.1.13:2888:3888
server.2=10.0.1.14:2888:3888
保存退出
创建data、log目录
>mkdir -p /opt/data/zookeeper/{data,logs}
创建myid文件:
>echo 1 > /opt/data/zookeeper/data/myid
编辑kafka配置文件:
>sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka/config/server.properties
将server配置文件中所有行注释掉
>vim /usr/local/kafka/config/server.properties #编辑配置文件
在末尾添加:
broker.id=1
listeners=PLAINTEXT://10.0.1.13:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=10.0.1.13:2181,10.0.1.14:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
保存退出
kafka-2服务器部署:
与kafka-1基本一致:
安装配置jdk环境:
下载jdk的包到本地并解压到/usr/local/下
>mv /usr/local/jdk解压后的包 /usr/local/java
给jdk改名,方便后续操作
>vim /etc/profile #编辑环境变量配置文件
在末行添加:
JAVA_HOME=/usr/local/java/
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
保存退出
>source /etc/profile #使更改的环境变量生效
Kafka运行依赖ZK,Kafka官网提供的tar包中,已经包含了ZK,这里不再额下载ZK程序
将kafka程序压缩包上传到服务器后解压到/usr/local下
>mv /usr/local/kafka包名称 /usr/local/kafka
将解压后的工作目录改名,方便后续操作
编辑zookeeper配置文件:
>sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka_2.11-2.1.0/config/zookeeper.properties
将zookeeper.properties文件内所有行注释掉
>vim /usr/local/kafka/config/zookeeper.properties #编辑配置文件
末尾添加:
dataDir=/opt/data/zookeeper/data
dataLogDir=/opt/data/zookeeper/logs
clientPort=2181
tickTime=2000
initLimit=20
syncLimit=10
server.1=10.0.1.13:2888:3888
server.2=10.0.1.14:2888:3888
保存退出
创建data、log目录
>mkdir -p /opt/data/zookeeper/{data,logs}
创建myid文件:
>echo 2 > /opt/data/zookeeper/data/myid
编辑kafka配置文件:
>sed -i ‘s/^[^#]/#&/‘ /usr/local/kafka/config/server.properties
将server配置文件中所有行注释掉
>vim /usr/local/kafka/config/server.properties #编辑配置文件
在末尾添加:
broker.id=2
listeners=PLAINTEXT://10.0.1.14:9092
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/opt/data/kafka/logs
num.partitions=6
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=536870912
log.retention.check.interval.ms=300000
zookeeper.connect=10.0.1.13:2181,10.0.1.14:2181
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0
保存退出
kafka所有服务器部署结束后依次启动:
>cd /usr/local/kafka
>nohup bin/zookeeper-server-start.sh config/zookeeper.properties &
>nohup bin/zookeeper-server-start.sh config/server.properties &
>yum -y install nmap-ncat #下载验证工具
>echo conf | nc 127.0.0.1 2181
>echo start | nc 127.0.0.1 2181
kafka-1部署logstash:
将logstash包上传到服务器后解压到/usr/local下
>mv /usr/local/logstash包名称 /usr/local/logstash
将解压后的程序包改名,方便后续操作
>ln -s /usr/local/logstash/bin/logstash /bin/logstash #制作软链接
>cd && vim filebeat.conf 编辑采集转发配置
input {
kafka {
type => “kafka_log”
bootstrap_servers => “10.0.1.13:9092,10.0.1.14:9092”
group_id => “logstash”
auto_offset_reset => “earliest”
topics => “filebeat”
consumer_threads => 5
decorate_events => true
}
}
output {
elasticsearch {
index => ‘kafka-run-log-%{+YYYY.MM.dd}’
hosts => [“10.0.1.11:9200”]
}
}
保存退出
创建对应话题:
>cd /usr/local/kafka
>bin/kafka-topics.sh —create —zookeeper 10.0.1.13:2181 —replication-factor 1 —partitions 1 —topic filebeat
>bin/kafka-topics.sh —zookeeper 172.17.0.4:2181 —list #查看是否创建成功
filebeat服务器部署:
将filebeat程序的压缩包上传到服务器后解压到/usr/local下
>mv /usr/local/filebeat包名称 /usr/local/filebeat
改名,方便后续操作
>vim /usr/local/filebeat/filebeat.yml #编辑filebeat的配置文件
找到Filebeat inputs将对应内容修改为以下:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
找到Outputs添加以下内容在第一个注释行下添加以下内容:
output.kafka:
enabled: true
hosts: [“10.0.1.13:9092”,”10.0.1.14:9092”]
topic: ‘filebeat’
找到Elasticsearch output将里面的内容全部注释掉之后
保存退出
>yum -y install nginx #部署nginx
>systemctl start nginx
返回kafka服务器
>cd
>logstash -f filebeat.conf #加载采集转发配置文件
成功后回到filebeat服务器启动filebeat
>nohup /usr/local/filebeat/filebeat -c /usr/local/filebeat/filebeat.yml &
>cat nohup.out #查看启动状态 或使用jobs查看
访问filebeat上的nginx服务模拟日志的产生
使用浏览器插件es的head查看是否出现对应的索引即可
