ELK离线安装和配置流程
一、介绍
ELK是一个开源的数据分析和可视化工具,由三个开源项目组成:Elasticsearch、Logstash和Kibana。Elasticsearch是一个基于Lucene库的分布式搜索和分析引擎;Logstash是一个用于收集、处理和转换数据的数据管道,它可以从各种来源读取数据,包括日志文件、系统事件、网络流量等;Kibana则是一个数据可视化平台,可以对从Elasticsearch中检索到的数据进行查询、分析和可视化。ELK常用于日志数据分析和监控,也被广泛用于业务数据分析和实时数据处理。
二、目的
本次安装ELK环境是搭建项目的日志平台,部署成功后程序员可以通过Kibana可视化界面查看服务日志,而不是遇到问题就需要往机房跑,大大提高排查问题的效率。
三、环境
- 系统环境: Linux
- 软件版本:
- elasticsearch-8.6.2-linux-x86_64.tar.gz 下载Elasticsearch-8.6-2
- logstash-8.6.2-linux-x86_64.tar.gz 下载Kibana-8.6-2
- kibana-8.6.2-linux-x86_64.tar.gz 下载Logstash-8.6.2
本次是离线安装,所以需要先下载好安装包,下载方式可以自己到elastic官网下载,也可以直接通过上面3个链接下载8.6.2版本的安装包。
四、安装
4.1、准备工作
- 因为是离线安装,所i需要先将安装包上传到linux服务器,我这里是上传到/home目录下
- ELK安装后,要求非root用户启动,所以需要新建用户es
adduser es
4.2、Elasticsearch安装配置
4.2.1、安装
## 解压安装包
tar -xvf elasticsearch-8.6.2-linux-x86_64.tar.gz
## 将elasticsearch移动到/usr/local路径下,并重命名为elasticsearch
mv elasticsearch-8.6.2 /usr/local/elasticsearch
## 赋予用户es目录权限
chown -R es /usr/local/elasticsearch
4.2.2、配置
- 修改elasticsearch.yml配置文件,只贴修改部分配置
vi /usr/local/elasticsearch/config/elasticsearch.yml
# 解除注释并修改访问IP,如果全部网卡均开放访问则设置为0.0.0.0
network.host: 服务器ip
# 修改访问端口
http.port: 9200
# 开启Xpack授权认证(开启Xpack认证后,访问elasticsearch需要用户名、密码)
xpack.security.enabled: true
# 关闭SSL协议
xpack.security.http.ssl:
enabled: false
- elasticsearch服务配置,执行命令:
vi /usr/lib/systemd/system/elasticsearch.service
,文件内容如下:【也可以使用“/usr/local/elasticsearch/bin/elasticsearch -d”命令直接启动,配置服务主要是为了方便,比如不用进入到elasticsearch也可以启动,另外想停止的时候也不需要lsof和kill来停止经常,更重要的是可以设置开启自启】
[Unit]
Description=elasticsearch service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/elasticsearch/bin/elasticsearch -d
User=es
[Install]
WantedBy=default.target
4.2.3、服务启停命令
## 启动服务
systemctl start elasticsearch.service
## 停止服务
systemctl stop elasticsearch.service
## 设置开机自启
systemctl enable elasticsearch.service
4.2.4、设置密码(需启动服务后操作)
## 进入到elasticsearch的bin目录下
cd /usr/local/elasticsearch/bin
## 设置密码
elasticsearch-setup-passwords interactive
## 执行设置密码命令后是如下命令提示,设置全部账号的密码
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y
Enter password for [elastic]:
Reenter password for [elastic]:
Passwords do not match.
Try again.
Enter password for [elastic]:
Reenter password for [elastic]:
Enter password for [apm_system]:
Reenter password for [apm_system]:
Enter password for [kibana]:
Reenter password for [kibana]:
Enter password for [logstash_system]:
Reenter password for [logstash_system]:
Enter password for [beats_system]:
Reenter password for [beats_system]:
Enter password for [remote_monitoring_user]:
Reenter password for [remote_monitoring_user]:
Changed password for user [apm_system] 以下四个均为账号
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
4.2.5、验证服务是否安装成功
验证elasticsearch是否安装成功,可通过浏览器访问:http://服务器ip:9200,当弹窗提示输入用户名、密码即表示安装成功了
4.3、Logstash安装和配置
4.3.1、安装
## 解压安装包
tar -xvf logstash-8.6.2-linux-x86_64.tar.gz
## 将logstash移动到/usr/local路径下,并重命名为logstash
mv logstash-8.6.2 /usr/local/logstash
## 赋予用户es目录权限
chown -R es /usr/local/logstash
## 防火墙开放logstash端口4560
firewall-cmd --zone=public --add-port=4560/tcp
4.3.2、配置
- 添加logstash-elasticsearch.conf配置文件,执行命令:
vi /usr/local/logstash/config/logstash-elasticsearch.conf
,然后添加如下内容(这里日志收集方式是通过tcp方式收集,项目中日志可以直接通过4560端口输入到logstash,然后logstash帮忙输出到elasticserach,索引为“logstash-spring-当天的日期”,如果是其他收集方式可以修改input标签内的配置)
input {
tcp {
mode => "server"
host => "0.0.0.0"
port => 4560
codec => json_lines
}
}
output {
elasticsearch {
hosts => '服务器ip:9200'
user => "elastic"
password => "elastic用户密码"
index => "logstash-spring-%{+YYYY.MM.dd}"
}
}
- 服务配置
1、配置logstash.service,执行命令:vi /usr/lib/systemd/system/logstash.service
,文件内容如下:
[Unit]
Description=logstash service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=sh /usr/local/logstash/logstash.sh
User=es
[Install]
WantedBy=default.target
2、配置logstash.sh,执行命令:vi /usr/local/logstash/logstash.sh
,文件内容如下:
#!/bin/bash
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/logstash-elasticsearch.conf &
echo 'logstash start success'
4.3.3、服务启停命令
## 启动服务
systemctl start logstash.service
## 停止服务
systemctl stop logstash.service
## 设置开机自启
systemctl enable logstash.service
4.4、Kibana安装和配置
4.4.1、安装
## 解压安装包
tar -xvf kibana-8.6.2-linux-x86_64.tar.gz
## 将kibana移动到/usr/local路径下,并重命名为kibana
mv logstash-8.6.2 /usr/local/kibana
## 赋予用户es目录权限
chown -R es /usr/local/kibana
## 防火墙开放kibana端口5601
firewall-cmd --zone=public --add-port=5601/tcp
4.4.2、配置
- 修改kibana.yml配置
## 端口
server.port: 5601
## 访问IP
server.host: "服务器ip"
## 汉化访问界面
i18n.locale: "zh-CN"
## Elasticsearch请求地址
elasticsearch.hosts: ["http://服务器ip:9200"]
## Elasticsearch用户、密码(这里不能使用elastic用户,否则启动会出现启动不成功)
elasticsearch.username: "kibana"
elasticsearch.password: "42BldhAm8SsBJssUBGl4"
## 开启xpack授权认证所需配置,下面两个值可以随意修改,长度满足要求即可
xpack.reporting.encryptionKey: “123456”
xpack.security.encryptionKey: “abcdefg1234567890abcdefg1234567890abcdefg1234567890”
- 服务配置
1、配置kibana.service,执行新建服务文件命令:vi /usr/lib/systemd/system/kibana.service
,文件内容如下:
[Unit]
Description=kibana service
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=sh /usr/local/kibana/bin/kibana.sh
User=es
[Install]
WantedBy=default.target
2、配置kibana.sh,执行新建文件命令:vi /usr/local/kibana/bin/kibana.sh
,文件内容如下:
#!/bin/bash
nohup /usr/local/kibana/bin/kibana &
echo 'kibana run success'
4.4.3、服务启停命令
## 启动服务
systemctl start logstash.service
## 停止服务
systemctl stop logstash.service
## 设置开机自启
systemctl enable logstash.service
4.4.4、验证
浏览器请求:http://服务器ip:5601
首次登录使用elastic用户密码登录,因为kibana用户权限有限,登录成功后可以自行再新增用户、配置角色等相关操作。