1.版本选择
elastic下载官方网址
稳定版 7.17.0、7.17.1
1.1 注意事项
- 所有组件都依赖jdk1.8+
- Elasticsearch、Logstash、Kibana 版本需保持一致 (这里演示版本 version: 7.17.0)
- ELK需部署在和被监控的服务同一套内网环境下。如有防火墙,需将ELK各个组件所用到的端口号一一加到防火墙安全策略中
1.2 版本下载
例如选择7.17.0版本下载:
- elasticsearch: elasticsearch-7.17.0.tar.gz
- logstash:logstash-7.17.0-linux-x86_64.tar.gz
- kibana:kibana-7.17.0-linux-x86_64.tar.gz
2.linux安装部署
2.1 解压所有文件
上传文件到 /opt 目录下,进入一下步骤解压所有文件
cd /opt
tar -xzf elasticsearch-7.17.0-linux-x86_64.tar.gz
tar -xzf kibana-7.17.0-linux-x86_64.tar.gz
tar -xzf logstash-7.17.0-linux-x86_64.tar.gz
2.2 创建新用户
由于es不能直接使用root用户启动,这里创建新用户,并且进行分组。给予密码123456
1. groupadd elk
2. useradd elk -g elk -p 123456
2.3 安装Elasticsearch(单节点es)
2.3.1 给es文件目录赋予用户、用户组都是elk权限
chown -R elk:elk /opt/elasticsearch-7.17.0
2.3.2 切换elk用户登录
su elk
2.3.3 进入 elasticsearch目录下
cd /opt/elasticsearch-7.17.0
2.3.4 修改配置文件
vim ./conf/elasticsearch.yml【需要安装vim】
# 指定节点名称,每个节点名字唯一
node.name: es-node-1
# 绑定ip,开启远程访问,可以配置0.0.0.0
network.host: 0.0.0.0
# elasticsearch服务端口,可更改,默认就是9200
http.port: 9200
# 数据目录路径
path.data: /opt/elk/elasticsearch-7.17.0/data/
# 日志文件路径
path.logs: /opt/elk/elasticsearch-7.17.0/logs/
# 解决跨域问题
http.cors.enabled: true
http.cors.allow-origin: "*"
2.3.5 启动 elasticsearch
# 显示进程启动,可以查看启动是否异常
./bin/elasticsearch
# 没问题后-后台启动
./bin/elasticsearch -d
2.3.6 测试是否成功
- curl http://localhost:9200
访问显示如下表示启动正常
宿主机访问内部需要开放端口
#firewalld防火墙开放命令:
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重启刷新。如果没启动就不需要了
systemctl restart firewalld
常见问题说明
- vm.max_map_count 数量太小
切换到root用户,修改配置文件sysctl.conf:vi /etc/sysctl.conf,在末尾行添加内容:
vm.max_map_count=262144
#使配置生效
sysctl -p
执行完毕后切换elk用户执行启动命令
- bootstrap checks failed 问题
切换到root用户,修改配置文件limits.conf:vi /etc/security/limits.conf,在末尾行添加内容:
* soft nofile 65536
* hard nofile 131072
执行完毕后切换elk用户执行启动命令
2.4 安装 Logstash
2.4.1 编辑配置文件
进入logstash主目录
cd /opt/logstash-7.17.0
复制原本文件
cp ./config/logstash-sample.conf ./config/logstash-es.conf
编辑文件
vi ./config/logstash-es.conf
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
file {
path => "/opt/app/web/logs/tomcat-web-*.log"
start_position => "end"
type => "tomcat-web"
codec => "plain"
}
file {
path => "/opt/app/system/logs/tomcat-system-*.log"
start_position => "end"
type => "tomcat-system"
codec => "plain"
}
}
output {
if [type] == "tomcat-web" {
elasticsearch {
hosts => ["http://192.168.192.128:9200"]
index => "tomcat-web"
codec => json
}
}
if [type] == "tomcat-system" {
elasticsearch {
hosts => ["http://192.168.192.128:9200"]
index => "tomcat-app"
}
}
elasticsearch {
hosts => ["http://192.168.192.128:9200"]
index => "elk-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
文件说明input
字段名称 | 字段说明 |
---|---|
input | logstash的数据收集源 |
file | 定义数据来源为文件 |
file-path | 文件路径地址 |
file-start_position | 开始收集的位置为文件末尾 |
file-type | 主要用来区分收集后的数据发送到哪 |
file-codec | 收集的数据格式 |
文件说明output
字段名称 | 字段说明 |
---|---|
output | logstash的数据输出方式 |
if | 对数据进行判断逻辑处理 |
elasticsearch | 设置将收集后的日志输出到 es |
elasticsearch-hosts | 输出es的host地址,可以填写多个 |
elasticsearch-index | es的索引方式 |
elasticsearch-codec | 输出json格式 |
elasticsearch-user | es的账号(有就填写) |
elasticsearch-password | es的密码(有就填写) |
启动logstash
# 显示启动
[elk@localhost logstash-7.17.0]$ ./bin/logstash -f ./config/logstash-es.conf
启动没有问题后,使用 nohup进入后台启动,最好可以设置成 service 启动
[elk@localhost logstash-7.17.0]$ nohup ./bin/logstash -f config/config.conf > logs/logstash.log 2>&1 &
2.5 安装 Kibana
2.5.1 编写配置文件
进入logstash主目录
cd /opt/kibana-7.17.0-linux-x86_64
编辑文件
vi ./config/kibana.yml
kibana.yml修改以下内容
server.port: 5601
server.host: "0.0.0.0"
server.name: "elk-kibana"
i18n.locale: "zh-CN"
elasticsearch.hosts: ["http://localhost:9200"]
2.5.2 启动Kibana
# 显示启动,默认使用 config/kibana.yml 配置文件
[elk@localhost kibana-7.17.0-linux-x86_64]$ ./bin/kibana --allow-root
启动没有问题后,使用 nohup进入后台启动,最好可以设置成 service 启动
[elk@localhost kibana-7.17.0-linux-x86_64]$ nohup ./bin/kibana --allow-root > logs/kibana.log 2>&1 &
出现[info][status] Kibana is now available (was degraded) 表示启动成功
2.5.3 外部访问一样需要开通防火墙端口权限,例如firewalld
[elk@localhost ~]$ firewall-cmd --zone=public --add-port=5601/tcp --permanent
[elk@localhost ~]$ systemctl restart firewalld
# 可以查看已经开启的端口
[elk@localhost ~]$ firewall-cmd --list-ports
3.整体联调互通
手动创建收集文件
[elk@localhost ~]$ cd /opt/app/web/logs
[elk@localhost logs]$ echo "hello-es-2023.12.26" > tomcat-web-2023-12-26.log
Kinbana创建索引模式查看
- 访问http://host:5601
- 创建索引,选择 tomcat-web索引
查看数据是否能够展示