ELK日志集中采集部署手册
目录
一、部署基础说明
1.部署在非root用户下
注意:/home/elk用户下文件的权限问题
2.要求JDK版本1.8以上
3.服务器防火墙处于关闭状态
防火墙:
systemctl status firewalld
systemctl stop firewalld
systemctl start firewalld
4.部署组件清单
组件名称 | 组件版本 | 备注 |
elasticsearch | elasticsearch-7.8.0-linux-x86_64.tar.gz | |
logstash | logstash-7.8.0.tar.gz | |
kibana | kibana-7.8.0-linux-x86_64.tar.gz | |
filebeat | filebeat-7.8.0-linux-x86_64.tar.gz | |
redis | redis-6.2.14.tar.gz | redis最好是3.0版本以上 |
jdk | jdk1.8.0_201.tar.gz | jdk版本需要1.8及以上 |
二、系统环境优化
1.设置内核参数
目的:确保系统有足够的资源启动ES
路径:vi /etc/sysctl.conf
配置:#增加以下参数
vm.max_map_count=655360
fs.file-max=655360
vm.swappiness=0
确保配置生效
sysctl -p
备注:swappiness参数值可设置范围在0到100之间。低参数值 会让内核尽量少用交换,更高参数值会使内核更多的去使用交换空间。
2.设置资源参数
目的:修改最大文件打开数量
路径:vi /etc/security/limits.conf
配置:#增加以下参数
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 131072
* soft memlock unlimited
* hard memlock unlimited
3.设置进程数
目的:修改进程数
路径:vi /etc/security/limits.d/20-nproc.conf
配置:#设置elk用户参数 (本地线程数)
elk soft nproc 65536
4.重启服务器
命令:reboot
三、部署ELK服务
1.创建elk用户
创建elk用户和组
useradd elk #创建用户elk
groupadd elk #创建组elk
useradd -d /home/elk elk -g elk #将用户添加到组
2.部署jdk服务
2.1.上传jdk安装包
将jdk1.8.0_201.tar.gz上传到/home/elk用户下
2.2.解压jdk安装包
命令:tar zxvf jdk1.8.0_201.tar.gz
2.3.添加jdk环境变量
命令:vi /home/elk/.bashrc
添加如下参数:
export JAVA_HOME=/home/elk/jdk1.8.0_201
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
使环境变量生效:source ~/.bashrc
2.4.检查jdk环境
命令:java -version
出现如下提示,则代表安装成功
3.部署Elasticsearch服务
3.1.上传ES安装包
将elasticsearch-7.8.0-linux-x86_64.tar.gz上传到/home/elk用户下
3.2.解压ES安装包
命令:tar zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz
3.3.创建es相关目录
mkdir /home/elk/es
mkdir /home/elk/es/data
mkdir /home/elk/es/logs
3.4.修改elasticsearch配置文件
命令:vi elasticsearch-7.8.0/config/elasticsearch.yml
# 修改的内容
cluster.name: elasticsearch
node.name: node-1
node.master: true
node.data: true
cluster.initial_master_nodes: ["node-1"]
path.data: /home/elk/es/data
path.logs: /home/elk/es/logs
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 10.62.196.19
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.62.196.19"]
http.cors.enabled: true
http.cors.allow-origin:"*"
3.5.修改JVM堆大小
备注:此处修改可以根据服务器cpu内存来按需分配
命令:vim /home/elk/elasticsearch-7.8.0/config/jvm.options
-Xms1g ----修改成 -Xms2g
-Xmx1g ----修改成 -Xmx2g
3.6.启动elasticsearch服务
命令:cd /home/elk/elasticsearch-7.8.0/bin
后台启动:./elasticsearch -d
查看elasticsearch进程: ps -ef | grep elastic
关闭elasticsearch进程:kill -9 pid
3.7.访问ES服务
浏览器输入:http://10.62.196.19:9200
显示如下截图则代表启动成功
4.部署Logstash服务
4.1.上传logstash安装包
将logstash-7.8.0.tar.gz上传到/home/elk用户下
4.2.解压logstash安装包
命令:tar zxvf logstash-7.8.0.tar.gz
4.3.创建logstash相关目录
mkdir /home/elk/logstash
mkdir /home/elk/logstash/data
mkdir /home/elk/logstash/logs
4.4.修改logstash配置
命令:vi /home/elk/logstash-7.8.0/config/logstash.yml
#新增如下内容
path.data: /home/elk/logstash/data
path.logs: /home/elk/logstash/logs
4.5.创建input-fitel-output.conf 文件
备注:本文以filebeat-mall.conf文件为例
路径:/home/elk/logstash-7.8.0/config
创建filebeat-mall.conf文件,内容如下:
##########从redis中取日志输入到ES#############
input{
redis {
host => "10.8.192.103"
port => "6379"
db => "10"
key => "filebeat"
data_type => "list"
password => "123456"
}
redis {
host => "10.8.192.103"
port => "6379"
db => "10"
key => "filebeat-provider"
data_type => "list"
password => "123456"
}
}
output {
if "tomcat-config" in [tags] {
elasticsearch {
hosts => "10.8.192.103:9200"
index => "tomcat-config-%{+YYYY.MM.dd}"
}
}
if "tomcat-mall-api" in [tags] {
elasticsearch {
hosts => "10.8.192.103:9200"
index => "tomcat-mall-api-%{+YYYY.MM.dd}"
}
}
if "tomcat-mall-backend" in [tags] {
elasticsearch {
hosts => "10.8.192.103:9200"
index => "tomcat-mall-backend-%{+YYYY.MM.dd}"
}
}
if "tomcat-provider" in [tags] {
elasticsearch {
hosts => "10.8.192.103:9200"
index => "tomcat-provider-%{+YYYY.MM.dd}"
}
}
}
检查文件是否正确:cd /home/elk/logstash-7.8.0/bin
命令:./logstash -f ../config/logstash-mall.conf -t
出现Configuration OK 则代表文件格式正确。
4.6.启动logstash服务
启动logstash:cd /home/elk/logstash-7.8.0/bin
./logstash -f ../config/pdr-business.conf &
4.7.查询logstash进程
命令: ps -ef | grep logstash
5.部署kibana服务
5.1.上传kibana安装包
将kibana-7.8.0-linux-x86_64.tar.gz上传到/home/elk用户下
5.2.解压kibana安装包
命令:tar zxvf kibana-7.8.0-linux-x86_64.tar.gz
5.3.修改kibana.yml文件
路径:/home/elk/kibana-7.8.0-linux-x86_64/config
命令:vi kibana.yml
#修改如下内容
i18n.locale: "zh-CN"
server.port: 5601
server.host: "10.62.196.19" #kibana本机的地址
elasticsearch.hosts: "http://10.62.196.19:9200" #ES主节点地址+端口
kibana.index: ".kibana"
5.4.启动kibana服务
路径:cd /home/elk/kibana-7.8.0-linux-x86_64/bin
前台启动: ./kibana
后台启动: ./kibana &
查询kibana进程,kibana是node服务,需要根据进程号来查询服务。
命令:netstat -lntp | grep 5601 && ps -ef | grep 3085
5.5.访问kibana服务
浏览器输入:http://10.62.196.19:5601/
四、部署组件服务
1.部署filebeat服务
1.1.上传filebeat安装包
将filebeat-7.8.0-linux-x86_64.tar.gz上传到/usr/local用户下
1.2.解压filebeat安装包
命令:tar xzvf filebeat-7.8.0-linux-x86_64.tar.gz
1.3.创建filebeat-mall.yml文件
路径:cd /usr/local/filebeat-7.8.0-linux-x86_64
创建filebeat-mall.yml文件,内容如下:
##########tomcat日志输入到redis#############
filebeat.inputs:
- type: log
enabled: true
paths:
- /usr/local/2-tomcat/1-tomcat-config/logs/catalina.out
tags: ["tomcat-config"]
exclude_lines: ['^T2LOG']
multiline.pattern: '^\\d{4}-\\d{2}-\\d{2}'
multiline.negate: true
multiline.match: after
- type: log
enabled: true
paths:
- /usr/local/2-tomcat/9-tomcat-mall-api/logs/catalina.out
tags: ["tomcat-mall-api"]
exclude_lines: ['^T2LOG']
multiline.pattern: '^\\d{4}-\\d{2}-\\d{2}'
multiline.negate: true
multiline.match: after
- type: log
enabled: true
paths:
- /usr/local/2-tomcat/10-tomcat-mall-backend/logs/catalina.out
tags: ["tomcat-mall-backend"]
exclude_lines: ['^T2LOG']
multiline.pattern: '^\\d{4}-\\d{2}-\\d{2}'
multiline.negate: true
multiline.match: after
output.redis:
hosts: ["10.62.196.19:6379"]
key: "filebeatmall"
password: "123456"
db: 10
备注:缩进是2个空格
检查文件是否正确:cd /usr/local/filebeat-7.8.0-linux-x86_64
命令:./filebeat test config -c filebeat-mall.yml
出现Config OK 则代表文件格式正确。
1.4.启动filebeat服务
命令:./filebeat -e -c filebeat-mall.yml &
2.部署redis服务
2.1.上传redis安装包
将redis-6.2.14.tar.gz上传到/home/elk用户下
2.2.解压redis安装包
命令:tar xzvf redis-6.2.14.tar.gz
2.3.编译与安装redis
路径:cd /home/elk/redis-6.2.14
编译命令:make
初始化命令:cd /home/elk/redis-6.2.14/src/ && sudo make install
备注:需要将elk用户先假如到/etc/sudoer下。
切换到root用户下:ll /etc/sudoers
赋权:chmod u+w /etc/sudoers
编辑: vi /etc/sudoers
root ALL=(ALL) ALL
elk ALL=(ALL) ALL
截图如下:
赋权:chmod 440 /etc/sudoers
2.4.修改redis.conf配置
命令:vi redis-6.2.14/redis.conf
修改如下内容:
daemonize yes
bind 0.0.0.0
requirepass 123456
2.5.启动redis服务
五、部署问题
1.ES问题
问题1:
问题描述:启动./elasticsearch 服务报错,报错日志如下:
future versions of Elasticsearch will require Java 11; your Java version from [/usr/java/jdk1.8.0_201/jre] does not meet this requirement
问题原因:系统环境jdk1.8版本低于es要求的版本jdk1.11
解决办法:编辑/home/elk/elasticsearch-7.8.0/bin/elasticsearch-env文件, 屏蔽红色框中内容。
2.Logstash问题
问题1:
问题描述:pdr-business.conf文件中索引 "pdr-business-%{+YYYY.MM.dd}" 无法在ES中自动创建。
问题原因:因为第一次启动logstash之后,会默认创建一个logstash的索引在/home/elk/logstash/data/plugins/inputs/file文件夹中有隐藏的文 件(红色框中的文件),如下图所示
解决办法:需要将file文件删除,重新创建file文件,重新启动logstash。
3.Kibana问题
问题1:
问题描述:
4.Filebeat问题
问题1:
问题描述:执行./filebeat test config -c filebeat-mall.yml 时报错。报错信 息如下:Exiting: error loading config file: config file ("filebeat-mall.yml") can only be writable by the owner but the permissions are "-rwxrwxrwx" (to fix the permissions use: 'chmod go-w /usr/local/filebeat-7.8.0-linux-x86_64/filebeat-mall.yml')
问题原因:filebeat-mall.yml文件权限有其他用户写的权限。
解决办法:chmod 755 filebeat-mall.yml
六、知识详解
1.filebeat服务
1.1.filebeat.yml配置参数说明