Linux环境安装7.9.3版本elasticsearch
1. 下载及解压
将elasticsearch-7.9.3-linux-x86_64.tar.gz放在myfiles中解压
2. 修改es相应的配置
cd /myfiles/elasticsearch-7.9.3/config
vi elasticsearch.yml
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
http.cors.enabled: true
http.cors.allow-origin: "*"
//允许自动建立索引,否则filebeat到logstash到es报错
action.auto_create_index: true
//修改jvm
vi jvm.options
-Xms256m
-Xmx256m
//添加系统设置参数
vi /etc/sysctl.conf
vm.max_map_count=262144
//执行生效
sysctl -p
3. es高版本对于root用户无法启动。我们这里创建普通用户
adduser elk
passwd elasticsearch
//赋予权限
groupadd elk
useradd elk
chown -R elk:elk /myfiles
su elk
4. 启动
守护线程启动 -d
./myfiles/elasticsearch-7.9.3/bin/elasticsearch -d
5.关闭防火墙
/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT
报错问题解决:
由于每个进程最大同事打开文件数太小
修改/etc/security/limits.conf , 修改最大65535,修改最小4096
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
安装Head插件
1.安装node
//解压
tar -zxvf node-v10.10.0-linux-x64.tar.gz
//查看版本
./bin/node -v
//设置软连接
ln -s /myfiles/node-v10.10.0-linux-x64/bin/npm /usr/local/bin/
ln -s /myfiles/node-v10.10.0-linux-x64/bin/node /usr/local/bin/
配置环境变量
export NODE_HOME=/myfiles/node-v10.10.0-linux-x64/
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules
//安装node插件
npm install -g grunt-cli
2. 安装phantomjs
yum install -y bzip2
解压phantomjs-2.1.1-linux-x86_64.tar.bz2
tar -xjf phantomjs-2.1.1-linux-x86_64.tar.bz2
设置环境变量
export PATH=$PATH:/myfiles/phantomjs-2.1.1-linux-x86_64/bin
如果报错:
phantomjs报phantomjs: error while loading shared libraries: libfontconfig.so.1: cannot open
执行
yum -y install fontconfig-devel
3. 安装head
//解压head
unzip elasticsearch-head-master.zip
vi elasticsearch-head-master/Gruntfile.js
查找connect添加hostname
connect: {
server: {
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '*'
}
}
}
//修改es连接地址
vi elasticsearch-head-master/_site/app.js
输入“http://localhost:9200”进行查找
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.100.9:9200";
4.运行head。
在elasticsearch-head-master目录执行npm install ,将项目需要的依赖打包
如果遇到
EACCES: permission denied, link '/tmp/phantomjs/phantomjs-2.1.1-linux-x86_64.tar.bz2-extract-1605260201806/phantomjs-2.1.1-linux-x86_64' -> '/myfiles/elasticsearch-head-master/node_modules/phantomjs-prebuilt/lib/phantom'
首先移除项目中的rm -rf node_modules
然后 npm install --unsafe-perm
之后执行grunt server启动
// 后台运行 nohup npm run start &
/sbin/iptables -I INPUT -p tcp --dport 9100 -j ACCEPT
然后访问192.168.100.9:9100即可
Linux环境安装7.9.3版本logstash
动态将来自不同数据源的数据统一起来。并将数据标准化到目的地。
将logstash-7.9.3.tar.gz放在myfiles中解压
在目录
/myfiles/logstash-7.9.3/config创建转换规则配置文件
vi es_log.conf
input{
file{
path =>"/myfiles/log/protalTodoLog.20201111_114.log"
}
beats {
port => 5044
codec => "json"
}
}
filter{
mutate{
remove_field => "@version"
remove_field => "offset"
remove_field => "input_type"
remove_field => "beat"
remove_field => "tags"
}
ruby{
code => "event.timestamp.time.localtime"
}
}
output {
elasticsearch {
hosts => ["192.168.100.9:9200"]
index => "portal_todo"
}
}
filebeat携带额外的信息到,标志来自哪台机器,通过fields携带(如下,携带的key是name,value是server1)
filebeat.inputs:
- type: log
enabled: true
fields:
name: server1
logstash获取filebeat携带的额外的信息,,%{[fields][name]}
es的index必须小写
由于项目中存在多个日志并分隔日志,例如:protal_2020.12.1.log,protal_todo_2020.12.1.log........
input {
beats {
port => 5044
//json会解析成对象,我这里只想要字符串,监听tomcat这里为空
codec => "json"
}
}
filter {
date{
match=>["timestamp","dd/MMM/yyyy:HH:mm:ss Z"]
target=>"@timestamp"
}
grok {
match => ["message", "%{COMMONAPACHELOG}"]
}
ruby {
code => "
event.set('timestamp', event.get('@timestamp').time.localtime + 8*60*60)
path = event.get('log')['file']['path']
puts format('path = %<path>s', path: path)
if (!path.nil?) && (!path.empty?)
event.set('filename', (path.split('/')[-1]).downcase)
end
"
}
}
output{
elasticsearch {
hosts => ["192.168.100.9:9200"]
index => "%{[fields][name]}_%{filename}"
}
}
启动
./logstash -f /myfiles/logstash-7.9.3/config/es_log.conf
Linux环境安装7.9.3版本filebeat
ELK框架使用logstash收集、解析日志,但是logstash对内存、cpu、io资源消耗比较高。而Beats所占系统的资源几乎可以忽略不计。
监听指定文件日志或者位置。收集,转发到elasticsearch或发送给logstash解析。
Beats包括6种工具。
packetbeat:网络数据,收集网络流量数据
metricbeat:指标,收集系统、进程和文件系统级别的CPU和内存使用情况
filebeat:日志文件,手机文件数据
winlogbeat:windows事件日志
auditbeat:审计数据
heartbeat:运行时间监控
解压对应目录
修改配置文件
cd /myfiles/filebeat-7.9.3-linux-x86_64
vi filebeat.yml
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /myfiles/log/*.log
fields:
name: 113
默认传输到es注释
我们传输到logstash
output.logstash:
enabled: true
hosts: ["192.168.100.9:5044"]
./filebeat -e -c filebeat.yml
启动 nohup ./filebeat -e -c filebeat.yml >$log 2>&1 &
Linux环境安装7.9.3版本kibana
解压对应的安装包
修改配置文件
/myfiles/kibana-7.9.3/config
vi kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
i18n.locale: "zh-CN"
在kibana-7.9.3目录启动
首先不能是root用户。
./bin/kibana
设置elk用户可以访问该目录
nohup /myfiles/kibana-7.9.3/bin/kibana &