关于在linux中配置es
需要java环境。
Elastic官网:https://www.elastic.co/cn/
Elastic有一条完整的产品线及解决方案:Elasticsearch、Kibana、Logstash等,前面说的三个就是大家常说的ELK技术栈。
Elasticsearchhttps://www.elastic.co/cn/products/elasticsearch 是Elastic Stack 的核心技术。
安装
elasticsearch默认不允许以root账号运行。
下载
地址wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
解压并进入文件夹
|
配置文件
需要注意文件夹bin
、config
。
config
进入config文件夹cd config
jvm.option
编辑jvm.option
vim jvm.option
根据机器情况配置jvm内存-Xms512m
-Xmx512m
我根据自己的配置为512m
,如果机器内存大,则可以配置为1g
。
elasticsearch.yml
打开文件vim elasticsearch.yml
修改内容如下,这里需要注意这些配置都是注释掉了,只需要打开注释即可,主要配置的是path
、network
两个数据。node.name: node-1 #配置当前es节点名称(默认是被注释的,并且默认有一个节点名)
cluster.name: my-application #默认是被注释的,并且默认有一个集群名
path.data: /home/es/data # 数据目录位置
path.logs: /home/es/logs # 日志目录位置
network.host: 0.0.0.0 #绑定的ip:默认只允许本机访问,修改为0.0.0.0后则可以远程访问
cluster.initial_master_nodes: "node-1" #默认是被注释的 设置master节点列表 用逗号分隔
#cluster.initial_master_nodes: ["node-1", "node-2"]
data
和logs
两个文件夹路径可以自行配置。
elasticsearch.yml的其它可配置信息
属性名 | 说明 |
---|---|
cluster.name | 配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。 |
node.name | 节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理 |
path.conf | 设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch |
path.data | 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开 |
path.logs | 设置日志文件的存储路径,默认是es根目录下的logs文件夹 |
path.plugins | 设置插件的存放路径,默认是es根目录下的plugins文件夹 |
bootstrap.memory_lock | 设置为true可以锁住ES使用的内存,避免内存进行swap |
network.host | 设置bind_host和publish_host,设置为0.0.0.0允许外网访问 |
http.port | 设置对外服务的http端口,默认为9200。 |
transport.tcp.port | 集群结点之间通信端口 |
discovery.zen.ping.timeout | 设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些 |
discovery.zen.minimum_master_nodes | 主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2 |
etc文件夹
/etc/security/limits.conf
|
需要在最后添加:* soft nofile 65536
* hard nofile 65536
/etc/sysctl.conf
|
最后添加一行vm.max_map_count=655360
并在保存后运行命令:sysctl -p
,如果权限不够可以使用sudo
。
启动服务
进入es
文件夹的根目录。
运行下面的命令:nohup bin/elasticsearch
默认端口
- 9300:集群节点间通讯接口
- 9200:客户端访问接口
配置用户登录
准备工作
需要在配置文件中开启x-pack验证, 修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启es.xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
自动生成密码
运行下面的命令:./bin/elasticsearch-setup-passwords auto
注意这里的密码一定要记住,否则需要重制。
以交互的方式设置用户名和密码
运行下面的命令:./bin/elasticsearch-setup-passwords interactive
验证
运行下面的命令:curl -u elastic 'http://127.0.0.1:9200/_xpack/security/_authenticate?pretty'
关于在linux中配置kibana
下载
地址wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz
解压并进入文件夹
|
配置文件
kibana.yml
|
需要配置如下信息server.port: 5601 # 默认端口
server.host: "0.0.0.0" # 主机
elasticsearch.hosts: ["http://127.0.0.1:9200"] # elasticsearch所在的IP+端口
# 需要配置角色则需要配置下面的信息
elasticsearch.username: "elastic"
elasticsearch.password: "elastic2021"
启动服务
运行下面的命令:nohup ./bin/kibana
查看kibana是否启动成功
logstash
下载
|
解压并进入文件夹
|
配置文件
logstash-sample.conf
|
建议配置如下信息# 数据输入部分
input {
#filebeats方式
beats {
port => 5044
type => "beats_log"
}
#自定义端口,一个项目可对应一个自定义tcp端口接收数据
tcp {
mode => "server"
host => "192.168.X.X" #IP地址
port => 21022
codec => json
type => "application-log" #application一般为项目名称
}
}
# 数据处理部分
filter{
if[type] == "application-log"{
mutate {
rename => {"host" => "hostname"}
}
}
}
# 数据输出部分
output {
# beat监控信息
if [type] == "beats_log"{
elasticsearch {
hosts => ["192.168.X.X:9200"]
manage_template => false
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "elastic2021"
}
}
# 应用系统日志
if[type] == "application-log"{
elasticsearch {
hosts => ["192.168.X.X:9200"]
index => "application-log-%{+YYYY.MM.dd}"
user => "elastic"
password => "elastic2021"
}
}
}
启动服务
运行下面的命令:nohup ./bin/logstash -f config/logstash-sample.conf
配置logback环境
配置pom配置文件
|
配置logback-spring.xml
|
IK分词器
下载
|
移动到指定文件解压
如果没有ik文件夹,可以手动创建cd es/plugins/ik
unzip es-ik-xxx.zip
重启es服务并验证
|
注意
注意在运行两个服务的时候,由于es与kibana是基于java和node运行,因此占用内存较大,如果发生服务自动关闭,可能是内存占用较高导致。
需要调整es和kibana的内存占用,因为这两者在运行的时候后需要虚拟机的支持。
分别在他们的目录下的config
下的xx.option
去降低内存占用即可。