版本使用的6.2.3, elasticsearch, logstash, kibana版本最好要统一,本次版本全是6.2.3
由于是单机搭建, 并且logstash收集日志是使用的logback日志框架通过tcp发送日志到logstash, 所以ELK全部搭建在一台服务器上便可.
安装elasticsearch
wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/6.x/yum/6.2.3/elasticsearch-6.2.3.rpm
rpm -ivh elasticsearch-6.2.3.rpm
elasticsearch安装后的路径
/etc/elasticsearch/
/user/share/elasticsearch/
修改配置文件elasticsearch.yml
/etc/elasticsearch/elasticsearch.yml
cluster.name: st1-log
node.name: st1-log1st
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
启动和关闭es
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
systemctl stop elasticsearch.service
浏览器访问 http://192.168.106.18:9200/
安装elasticsearch-head
安装node.js
wget https://nodejs.org/dist/v8.11.1/node-v8.11.1-linux-x64.tar.xz
解压包
xz -d node-v8.11.1-linux-x64.tar.xz
tar -xf node-v8.11.1-linux-x64.tar
部署bin文件
ln -s ~/node-v8.11.1-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v8.11.1-linux-x64/bin/npm /usr/bin/npm
安装elasticsearch-head
首先下载下来
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
解压
unzip master.zip
进入elasticsearch-head-master文件夹,执行
#忽略脚本继续进行安装
npm install phantomjs-prebuilt@2.1.14 --ignore-scripts
npm install
修改Head主目录下的Gruntfile.js
connect: {
server: {
options: {
port: 9100,
base: '.',
keepalive: true,
hostname: '*'
}
}
}
修改elasticsearch 的启动配置文件
vim elasticsearch.yml
#在文件末尾添加即可
http.cors.enabled: true
http.cors.allow-origin: "*"
启动head插件:
npm run start
浏览器访问 http://192.168.106.18:9100/
安装logstash
wget -c https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.rpm
rpm -ivh logstash-6.2.3.rpm
修改/etc/logstash/logstash.yml
node.name: st1-log1st
path.data: /var/lib/logstash
path.config: /etc/logstash/conf.d
path.logs: /var/log/logstash
配置日志管道文件vim /etc/logstash/conf.d/logstash.conf
本次是使用logback直接发送tcp到logstash,所以需要这样配置, 当然log4j也是支持的
input {
tcp {
##host:port就是上面appender中的 destination,这里其实把logstash作为服务,开启9250端口接收logback发出的消息
host => "127.0.0.1"
port => 9250
mode => "server"
tags => ["tags"]
codec => json_lines
}
}
output {
#这里是es的地址
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "%{[appname]}"
}
stdout {
codec => rubydebug
}
}
启动日志收集,后台运行,如果前台运行,不小心中断,则日志不再收集。
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf &
这里说下logback是怎么配置的
首先引进maven依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.11</version>
</dependency>
在logback.xml配置 appender
<!-- 发送日志到logstash -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<!-- 这里是logstash服务地址和监听的端口 -->
<destination>192.168.106.18:9250</destination>
<!-- encoder必须配置,有多种可选 -->
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>
{
"appname":"appname"
}
</customFields>
</encoder>
<connectionStrategy>
<roundRobin>
<connectionTTL>5 minutes</connectionTTL>
</roundRobin>
</connectionStrategy>
</appender>
<root level="INFO">
<appender-ref ref="LOGSTASH" />
</root>
启动后就能看到日志了
登录es上查看就能有数据了
安装kibana
wget -c https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-x86_64.rpm
rpm -ivh kibana-6.2.3-x86_64.rpm
修改配置文件 /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://localhost:9200"
启动和关闭
systemctl enable kibana
systemctl start kibana
systemctl stop kibana
浏览器访问 http://192.168.106.18:5601
这就搭建完成了, 具体用法自行百度,本人也不太会
安装X-pack
X-pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,也是官方推荐的
这是一个收费的,
在ES 安装x-pack,ES停用状态下执行
在ES目录下
./bin/elasticsearch-plugin install x-pack
授权
chown -R elasticsearch.elasticsearch *
启动ES, 访问连接
修改密码
bin/x-pack/setup-passwords interactive
在kibana 目录下安装x-pack,ES停用状态下执行
在kibana目录下
./bin/kibana-plugin install x-pack
这个过程需要很长, 看个人网速
修改kibana.yml
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
启动kibana
查看x-pack到期时间
可以看出只有一个月的时间
破解X-pack
参考:https://blog.csdn.net/qq_20641565/article/details/78286894
替换jar 目录 /usr/share/elasticsearch/plugins/x-pack/x-pack-core/
申请一个免费license(https://license.elastic.co/registration) 注册后可以下载文件,下载后修改,例如:
主要修改:type改为platinum表示可以使用所有功能 ; expiry_date_in_millis
license.json
{
"license": {
"uid": "aa",
"type": "platinum",
"issue_date_in_millis": 1536796800000,
"expiry_date_in_millis": 2524579200999,
"max_nodes": 100,
"issued_to": "aa",
"issuer": "Web Form",
"signature": "aa",
"start_date_in_millis": 1536796800000
}
}
有了权限需要密码登录,所以logstash.conf也需要改下
output {
#这里是es的地址
elasticsearch {
action => "index"
hosts => "localhost:9200"
index => "%{[appname]}"
user => "elastic"
password => "123456"
}
stdout {
codec => rubydebug
}
}
启动即可 , 都这里就结束了