一、部署准备
1、准备三台服务器
- OS:Centos7.9
- 规格为:4C 8G 100G disk
- IP为:10.20.3.94 ,10.20.3.95 ,10.20.3.96
- 账号 elk 密码 Sti…
服务器ip | 节点名 | 软件列表 |
---|---|---|
10.20.3.94 | node-1 | ElasticSearch、Kibana、Logstash |
10.20.3.95 | node-2 | ElasticSearch、Logstash |
10.20.3.96 | node-3 | ElasticSearch、Logstash |
注:
- 节点名自定义
- Kibana此处为单机部署
2、创建文件夹和上传安装包
(1) 三台服务器都执行一遍该命令
mkdir -p /elk
cd /elk
mkdir -p /usr/local/es/
mkdir -p /var/data/es/{节点名}/
mkdir -p /var/log/es/{节点名}/
# 创建数据文件夹
mkdir -p /var/data/es/{节点名}/
注:
- {节点名}为上图,每台服务器自定义的节点名
(2)开放文件夹权限(没有操作权限启动es会报错)
chmod u+x /elk/elasticsearch-7.16.1/bin
chown -R elk /usr/local/es/
# 将ES数据存储文件夹权限授权给elk用户
chown -R elk /var/data/es/{节点名}/
chown -R elk /var/log/es/{节点名}/
chown -R elk /var/data/es/{节点名}/
(3) 上传文件
使用ftp或sftp工具将elasticsearch、logstash分别上传到三台服务的/elk目录下
将kibana上传到10.20.3.94服务器/elk目录下
二、安装ES
1、解压安装包
三台服务器都执行
# 进入文件夹
cd /elk
# 解压es
tar -zxvf elasticsearch-7.16.1-linux-x86_64.tar.gz;
2、es配置JDK
(1)三台服务器分别执行以下命令
#进入es目录
cd /elk/elasticsearch-7.16.1/bin
#编辑配置文件
vim elasticsearch
(2)添加以下内容
#配置为elasticsearch自带jdk
export JAVA_HOME=/elk/elasticsearch-7.16.1/jdk
export PATH=$JAVA_HOME/bin:$PATH
#添加jdk判断
if [ -x "$JAVA_HOME/bin/java" ]; then
JAVA="/elk/elasticsearch-7.16.1/jdk/bin/java"
else
JAVA=`which java`
fi
3、生成证书
# 进入es安装目录
cd /elk/elasticsearch-7.16.1
# 调用程序
./bin/elasticsearch-certutil ca
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
cd /elk/elasticsearch-7.16.1/config
# 复制文件到新创建的文件夹
cp /elk/elasticsearch-7.16.1/elastic-certificates.p12 /elk/elasticsearch-7.16.1/config/certs
注: 将生成的证书存到三台服务同样的路径下
三台服务器都执行一遍
# 创建文件夹
mkdir certs
# 修改目录权限给当前用户
sudo chown -R elk /elk/*
4、修改es配置文件
(1) 打开配置文件
#进入elasticsearch的config配置目录
cd /elk/elasticsearch-7.16.1/config/;
#修改配置文件
vim elasticsearch.yml;
(2) 修改配置文件为以下内容
三台服务器的es除了节点名不同之外,其他信息都相同
#配置文件
## 集群名称
cluster.name: my-application
## 集群节点名称
node.name: {节点名}
## ES默认 只允许本地 127.0.0.1 和[::1] 访问
## 也可以设置成0.0.0.0 允许所有IP主机访问
## 如果不配置就默认认为是开发者模式,如果配置不正确会写入警告但是能正确运行
## 如果配置了就会认为进入了生产环境, 如果配置不正确就会升级为异常,ES无法正确启动。
network.host: 0.0.0.0
## 默认ES节点端口9200,如果是伪集群(在一台服务器上搭建集群),需要修改。
http.port: 9200
## 设置数据存放路径,建议修改这个路径到ES的安装文件夹外面,避免ES升级误删掉这个文件夹
path.data: /var/data/es/{节点名}/
## 设置日志存放路径,建议修改这个路径到ES的安装文件夹外面,避免ES升级误删掉这个文件夹
path.logs: /var/log/es/{节点名}/
## 发现其他节点主机配置 这里配置的是ES所在服务器的公网IP地址
discovery.seed_hosts: ["10.20.3.94:9300","10.20.3.95:9300","10.20.3.96:9300"]
## 哪些节点可以被选举为主节点配置
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,X-Requested-With,Contet-Length,Content-Type
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /elk/elasticsearch-7.16.1/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /elk/elasticsearch-7.16.1/config/certs/elastic-certificates.p12
注:
- {节点名}为上图,每台服务器自定义的节点名
5、开放服务器端口
(1)、三台服务器依次执行开放端口命令
firewall-cmd --zone=public --add-port=9200/tcp --permanent;
firewall-cmd --zone=public --add-port=9300/tcp --permanent;
firewall-cmd --reload;
(2)、查看端口开放情况(可跳过)
firewall-cmd --list-all;
6、测试启动
(1) 启动观察
cd /elk/elasticsearch-7.16.1
./bin/elasticsearch
(2) 设置访问密码(需三台es都运行中)
任一服务器执行一次,根据控制台提示依次输入密码
./bin/elasticsearch-setup-passwords interactive
如果启动正常则改为后台运行启动
8、后台运行
nohup ./bin/elasticsearch > /elk/elasticsearch-7.16.1/elasticsearch.log 2>&1 &
如果要查看运行日志执行以下命令
tail -f /elk/elasticsearch-7.16.1/elasticsearch.log
三、安装Kibana
1、解压安装包
在服务器10.20.3.94执行
# 进入文件夹
cd /elk
# 可视化界面可单机部署
tar -zxvf kibana-7.16.1-linux-x86_64.tar.gz;
2、打开Kibana配置文件
#进入配置文件目录
cd /elk/kibana-7.16.1-linux-x86_64/config;
#编辑配置文件
vim kibana.yml;
3、修改配置文件
将配置文件修改为一下内容
i18n.locale: "zh-CN"
# Kibana 默认监听端口5601,如果需要改变就修改这个配置
server.port: 5601
# # Kibana 部署服务器IP,如果是单网卡配置0.0.0.0即可,如果是多网卡需要配置IP
server.host: 10.20.3.94
# # 配置服务器的名称,可自定义
server.name: rs-kibana
# # 配置ES的集群节点地址
elasticsearch.hosts: ["http://10.20.3.94:9200","http://10.20.3.95:9200","http://10.20.3.96:9200"]
# # 创建一个kibana索引
kibana.index: ".kibana"
elasticsearch.username: "elastic"
# 在上文自己配置的密码
elasticsearch.password: "Sti..."
xpack.encryptedSavedObjects:
encryptionKey: "min-32-byte-long-strong-encryption-key"
4、开启10.20.3.94服务器端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent;
firewall-cmd --reload;
5、查看端口开放情况(可跳过)
firewall-cmd --list-all;
6、测试启动
# 进入kibana文件夹
cd /elk/kibana-7.16.1-linux-x86_64/
# 执行程序
./bin/kibana
测试访问http://10.20.3.94:5601,查看是否正常访问
7、后台运行
如果启动正常修改为后台运行,10.20.3.94服务器执行以下命令
# 进入kibana文件夹
cd /elk/kibana-7.16.1-linux-x86_64/
nohup ./bin/kibana > /elk/kibana-7.16.1-linux-x86_64/kibana.log 2>&1 &
四、安装Logstash
三台服务器依次执行以下步骤
1、解压安装包
# 进入文件夹
cd /elk
# 解压logstash
tar -zxvf logstash-7.16.2-linux-x86_64.tar.gz;
2、打开配置文件
#进入logstash安装目录
cd /elk/logstash-7.16.2/config
#新建一个配置文件 logstash-simple.conf
vim logstash-simple.conf
3、将配置文件修改为以下内容
input {
beats {
port => 5044
}
}
filter {
# 自定义序列化内容
grok {
match => { "message" => "\s*%{TIMESTAMP_ISO8601:time}\s*\[(?<threadName>([\s\S]*))\]\s*%{LOGLEVEL:level}\s*%{JAVAFILE:class}\s*\:\s*%{NUMBER:lineNumber}\s*\-\s*(?<info>([\s\S]*))" }
}
date {
match => [ "timestamp" , "yyyy-MM-dd HH:mm:ss" ]
}
}
output {
# log_type为下文FileBeat传递过来的自定义参数
if[fields][log_type]{
elasticsearch {
hosts => ["10.20.3.94:9200","10.20.3.95:9200","10.20.3.96:9200"]
index => "%{[fields][log_type]}-%{+YYYY.MM.dd}"
user => elastic
password => "Sti@123456"
}
}else{
elasticsearch {
hosts => ["10.20.3.94:9200","10.20.3.95:9200","10.20.3.96:9200"]
user => elastic
password => "Sti@123456"
}
}
stdout { codec => rubydebug }
}
4、开放Logstash端口
firewall-cmd --zone=public --add-port=5044/tcp --permanent;
firewall-cmd --reload;
5、查看端口开放情况(可跳过)
firewall-cmd --list-all;
6、测试启动
./elk/logstash-7.16.2/bin/logstash -f ./elk/logstash-7.16.2/config/logstash-simple.conf
观察日志看是否正常运行
7、后台运行
如果正常运行,修改运行方式为后台运行
执行以下命令
cd /
nohup ./elk/logstash-7.16.2/bin/logstash -f ./elk/logstash-7.16.2/config/logstash-simple.conf > /elk/logstash-7.16.2/logstash.log 2>&1 &
8、查看实时运行日志(可跳过)
tail -f /elk/logstash-7.16.2/logstash.log
Window安装FileBeat
注: 此处用本机电脑来模拟服务器项目日志采集
1、下载window版本filebeat-7.16.1
2、修改配置文件为以下内容
文件: filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
#- /var/log/*.log
- E:\rs_business\logs\*
fields:
# 自定义业务参数
log_type: dc_test
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: falsechanges
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["10.20.3.94:5044","10.20.3.95:5044","10.20.3.96:5044"]
loadbalance: true
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
3、测试启动
filebeat -e -c filebeat.yml
Linux安装FileBeat
1、上传安装包到服务器
2、解压安装包
tar -zxvf filebeat-7.16.1-linux-x86_64.tar.gz;
3、打开配置文件
cd /elk/filebeat-7.16.1-linux-x86_64/
vim filebeat.yml
4、将配置文件修改为以下内容
filebeat.inputs:
- type: log
enabled: true
paths:
# 要采集的日志目录
- /var/log/*.log
fields:
# 自定义业务参数
log_type: dc_test
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: falsechanges
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["10.20.3.94:5044","10.20.3.95:5044","10.20.3.96:5044"]
loadbalance: true
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
- add_cloud_metadata: ~
- add_docker_metadata: ~
- add_kubernetes_metadata: ~
5、测试启动
cd /elk/filebeat-7.16.1-linux-x86_64/
./filebeat -e -c filebeat.yml
查看日志是否运行正常,运行正常修改为后台运行
6、后台运行
cd /
nohup ./elk/filebeat-7.16.1-linux-x86_64/filebeat -e -c /elk/filebeat-7.16.1-linux-x86_64/filebeat.yml /elk/filebeat-7.16.1-linux-x86_64/filebeat.log 2>&1 &
7、查看实时运行日志(可跳过)
tail -f /elk/filebeat-7.16.1-linux-x86_64/filebeat.log