Elasticsearch安装
版本:elasticsearch-7.8.0-linux-x86_64.tar.gz
官方下载:https://www.elastic.co/cn/products
国内加速:https://www.newbe.pro/Mirrors/Mirrors-Elasticsearch/
使用命令tar -zxvf解压
找到config目录下elasticsearch.yml文件,修改配置:
cluster.name: test-es-app
node.name: node-1
#对所有IP开放
network.host: 0.0.0.0
#HTTP端口号
http.port: 9200
#elasticsearch数据文件存放目录
path.data: /home/elk/elasticsearch-7.8.0/data
#elasticsearch日志文件存放目录
path.logs: /home/elk/elasticsearch-7.8.0/logs
#指定hosts
discovery.seed_hosts: ["127.0.0.1", "[::1]"]
#初始化主节点
cluster.initial_master_nodes: ["node-1"]
有些版本data和logs目录不存在,需要自己创建
配置完之后,因为ElasticSearch使用非root用户启动,所以创建一个用户
# 创建用户
useradd huhui
# 设置密码
passwd huhui
# 赋予用户权限
chown -R huhui:huhui /home/elk/elasticsearch-7.8.0
切换用户,启动(-d后台启动)
su huhui
./bin/elasticsearch -d
访问:http://x.x.x.x:9200/,看到如下信息表示启动成功:
在安装过程中大家可能会遇到以下几个问题:
- max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
-
解决方法:vi /etc/security/limits.conf
user hard nofile 65536
user soft nofile 65536
-
- max number of threads [1024] for user [apps] is too low, increase to at least [2048]
-
解决办法:vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
-
- max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
-
解决办法:vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:sysctl -p
-
Logstash安装
版本:logstash-7.8.0.tar.gz
使用命令tar -zxvf解压
找到/config目录下的logstash-sample.conf文件,修改配置
input {
file {
type => "log"
path => ["/home/app/service/logs/*.log"]
start_position => "beginning"
ignore_older => 0
codec=> multiline {
pattern => "^%{TIMESTAMP_ISO8601}"
negate => true
what => "previous"
}
}
beats {
port => 5044
}
}
output {
if [type] == "log" {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "log-%{+YYYY.MM.dd}"
#user => "xxx"
#password => "xxx"
}
}
stdout{
codec => rubydebug
}
}
后台启动:
nohup ./bin/logstash -f /home/elk/logstash-7.8.0/config/logstash-sample.conf >info.logstash.log 2>error.logstash.log &
查看日志是否启动成功
Kibana安装
版本:kibana-7.8.0-linux-x86_64.tar.gz
使用命令tar -zxvf解压
找到/config目录下的kibana.yml文件,修改配置
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://x.x.x.x:9200"]
不能使用root用户启动,需要创建一个用户
useradd kibana
passwd kibana
chown -R kibana:kibana /home/elk/kibana-7.8.0-linux-x86_64
切换用户,启动
su kibana
nohup ./bin/kibana >info.kibana.log 2>error.kibana.log &
根据Logstash输出到Elasticsearch的索引进行创建
进入Discover进行日志搜索
至此ELK安装部署完毕。注意在部署Elasticsearch和Logstach时,若是测试环境内存不足时,可以修改JVM参数配置(config/jvm.option),因为默认设值比较大,不修改启动可能会报错。
优化ELK架构
由于Logstash框架比较重,若需要添加插件,就全部服务的Logstash都要添加插件,扩展性差。所以就有了FileBeat,占用资源少,只负责采集日志,轻量级,然后再用Logstas做一些过滤处理。
FileBeat安装
版本:filebeat-7.8.0-linux-x86_64.tar.gz
使用命令tar -zxvf解压
filebeat.inputs:
- type: log
enabled: true
paths:
- /home/app/service/logs/*.log
#合并行
multiline.pattern: '^\[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
#输出,Logstash的服务器地址
output.logstash:
hosts: ["x.x.x.x:5044"]
#输出,如果直接输出到ElasticSearch则填写这个
#output.elasticsearch:
#hosts: ["localhost:9200"]
#protocol: "https"
然后Logstash的配置文件logstash-sample.conf,也要改一下
#删除file输入源,输入源改成beats
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://127.0.0.1:9200"]
index => "log-%{+YYYY.MM.dd}"
}
……
}
后台启动(-e启动,-c是指定配置文件启动)
nohup ./filebeat -e -c filebeat.yml >info.filebeat.log 2>&1 &
再启动Logstash