ELK源码安装
1. 环境参数
1
2
3
4
5
6
7
8
9
10
11
操作系统: Centos 7.5 64位
ES: 6.3.2
kibana: 6.3.2
logstash: 6.3.2
jdk: 1.8
ES用户: elk
节点:
192.168.11.132 master + node-01
192.168.11.133 node-02
2.下载
1
2
3
4
5
cd /opt
ES: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
kibana: wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-linux-x86_64.tar.gz
logstash: wget https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.tar.gz
3. jdk环境
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
## 2台机器都要安装此环境
cd /opt
# 将文件上传至本目录: /opt/jdk1.8.0_181.tar.gz
tar -zxvf jdk1.8.0_181.tar.gz
mv jdk1.8.0_181 /usr/local/jdk1.8
chmod -R 755 /usr/local/jdk1.8
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
java -version
4. 配置+启动: ES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
******* 配 置 ********
# 启动elk需要非root用户,所以创建elk用户,elk组
useradd elk (centos7 默认会创建elk组)
cd /opt
tar -zxvf elasticsearch-6.3.2.tar.gz
mv elasticsearch-6.3.2 /usr/local/elastic-6.3.2
chown -R elk:elk /usr/local/elastic-6.3.2
# 在根目录 /data 分别创建data目录和logs目录,用来存放索引数据和日志数据
mkdir -p /data/elastic/data /data/elastic/logs
chown -R elk:elk /data/elastic
cd /usr/local/elastic-6.3.2/config
vim jvm.options
# 修改 jvm.options: 在es解压之后的config目录中
# 默认只需要调整HEAP大小,最好不超过内存的50%, 内存为4G
-Xms2g
-Xmx2g
mv elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml
elasticsearch.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
master:
# 集群名字,相同集群名字的节点会放到同一个集群下
cluster.name: muker_elk
# 节点名字
node.name: node-01
node.master: true
node.data: true
path.data: /data/elastic/data
path.logs: /data/elastic/logs
#elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
# 监听访问地址为任意网段
network.host: 192.168.11.132
http.port: 9400
#discovery.zen.ping.multicast.enabled: false
#指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。
discovery.zen.ping.unicast.hosts: ["192.168.11.132", "192.168.11.133"]
#指定集群中的节点中有几个有master资格的节点,对于大集群可以写3个以上。
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
#线程最大不能超过cpu核数
thread_pool.bulk.size: 2
thread_pool.bulk.queue_size: 1000
node:
# 集群名字,相同集群名字的节点会放到同一个集群下
cluster.name: muker_elk
# 节点名字
node.name: node-02
node.master: false
node.data: true
path.data: /data/elastic/data
path.logs: /data/elastic/logs
#elasticsearch官网建议生产环境需要设置bootstrap.memory_lock: true
bootstrap.memory_lock: true
bootstrap.system_call_filter: false
# 监听访问地址为任意网段
network.host: 192.168.11.133
http.port: 9400
#discovery.zen.ping.multicast.enabled: false
#指明集群中其它可能为master的节点ip,以防es启动后发现不了集群中的其他节点。
discovery.zen.ping.unicast.hosts: ["192.168.11.132", "192.168.11.133"]
#指定集群中的节点中有几个有master资格的节点,对于大集群可以写3个以上。
discovery.zen.minimum_master_nodes: 1
http.cors.enabled: true
http.cors.allow-origin: "*"
#线程最大不能超过cpu核数
thread_pool.bulk.size: 2
thread_pool.bulk.queue_size: 1000
增加系统内存配置
1
2
3
4
5
6
# 使用中可能会因为系统内存等问题导致启动失败
vim /etc/sysctl.conf
# 增加以下参数
vm.max_map_count=655360
# 执行以下命令,确保生效配置生效:
sysctl -p
设置资源参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 131072
elk soft memlock unlimited
elk hard memlock unlimited
#设置用户资源参数
vim /etc/security/limits.d/20-nproc.conf
# 设置elk用户参数
elk soft nproc 65536
# 关闭防火墙, 或者使节点与master之间开放端口可以互相访问
systemctl stop firewalld
systemctl status firewalld
systemctl disable firewalld
启动服务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
******* 启 动 ********
su elk
cd /usr/local/elastic-6.3.2/bin
./elasticsearch
# 也可以使用 -d 进入后台
./elasticsearch -d
# 遇到问题:
[2020-11-11T20:14:39,984][WARN ][o.e.b.JNANatives ] Unable to lock JVM Memory: error=12, reason=无法分配内存
[2020-11-11T20:14:39,988][WARN ][o.e.b.JNANatives ] This can result in part of the JVM being swapped out.
[2020-11-11T20:14:39,989][WARN ][o.e.b.JNANatives ] Increase RLIMIT_MEMLOCK, soft limit: 65536, hard limit: 65536
[2020-11-11T20:14:39,989][WARN ][o.e.b.JNANatives ] These can be adjusted by modifying /etc/security/limits.conf, for example:
# allow user 'elk' mlockall
elk soft memlock unlimited
elk hard memlock unlimited
解决:
使用elk用户登录
5. 配置+启动: kibana
解压+安装
1
2
3
4
5
6
7
cd /opt
tar -zxvf kibana-6.3.2-linux-x86_64.tar.gz
mv kibana-6.3.2-linux-x86_64 /usr/local/kibana-6.3.2
cd /usr/local/kibana-6.3.2/config
cp kibana.yml kibana.yml.bak
vim kibana.yml
kibana.yml
1
2
3
4
5
修改以下参数:
server.port: 5601 #开启默认端口5601,本文修改默认端口为5601,如果是使用外网访问设置为: 0.0.0.0
server.host: “192.168.11.132” #站点地址
elasticsearch.url: http://192.168.11.132:9400 #指向elasticsearch服务的ip地址
kibana.index: “.kibana”
启动服务
1
2
3
4
5
6
7
8
9
10
11
# ******** 启 动 ********
/usr/local/kibana-6.3.2/bin/kibana
#访问
192.168.11.132:5061
# ******** 后 台 启 动 ********
nohup /usr/local/kibana-6.3.2/bin/kibana &
#额外:
# 在kibana里安装marvel插件
# bin/kibana plugin --install elasticsearch/marvel/latest
6. 配置+启动: logstash
解压+安装
1
2
3
4
cd /opt
tar -zxvf logstash-6.3.2.tar.gz
mv logstash-6.3.2 /usr/local/
cd /usr/local/logstash-6.3.2/config/
jvm.options
1
2
3
4
vim jvm.options
# 默认只需要调整HEAP大小,最好不超过内存的50%, 内存为4G
-Xms2g
-Xmx2g
logstash.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 新加一个配置文件 为: 过滤日志用, eg: logstash.conf
# vim logstash.conf
input{
file {
#加载的日志路径
path => "/data/elastic/logs/*"
start_position => beginning
}
}
output {
stdout { codec=> rubydebug }
# es的端口
elasticsearch {
hosts => "192.168.11.132:9400"
index => "logstash-%{+YYYY-MM-dd}"
}
}
启动服务
1
2
3
# ****** 启 动 ******
/usr/local/logstash-6.3.2/bin/logstash -f /usr/local/logstash-6.3.2/config/logstash.conf
复杂配置文件使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 配置文件:
# 加载多个配置文件:
方法一:
vim /usr/local/logstash-6.3.2/config/pipelines.yml
#末尾添加
- pipeline.id: fscloude
pipeline.workers: 1
pipeline.batch.size: 1
path.config: "/usr/local/logstash-6.3.2/config/conf.d/fscloude_log.conf"
- pipeline.id: elastic
queue.type: persisted
path.config: "/usr/local/logstash-6.3.2/config/conf.d/elastic.conf"
加载 /usr/local/logstash-6.3.2/config/conf.d/ 此目录下的两个配置文件
fscloude_log.conf
elastic.conf
按照正常写即可,不需要做if判断类型
启动: 加载目录 不用使用 * , 直接加载此目录下的多余 .conf 文件
/usr/local/logstash-6.3.2/bin/logstash -f /usr/local/logstash-6.3.2/config/conf.d/
方法二:
/usr/local/logstash-6.3.2/config/pipelines.yml 此目录下的文件不做修改,可全屏蔽
/usr/local/logstash-6.3.2/config/conf.d/ 此目录下的两个配置文件 需要做判断,否则日志内容会重复
在过滤种加
if [type] == "fscloude_log"
{
mutate {
add_tag => [ "fscloude_log" ]
}
}
7. kibana配置
filebeat或者logstrath起来之后 添加索引
找到索引
![[00-attach/5641710344286_.pic.jpg]]
创建索引规则
![[00-attach/5651710344293_.pic.jpg]]
8. 查看日志内容
![[00-attach/5661710344300_.pic.jpg]]
9. 日志处理
1
rsyslog日志设置:
本文由作者按照
CC BY 4.0
进行授权