elk在linux上简单安装

关于在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

解压并进入文件夹

tar -zxvf elasticsearch
cd elasticsearch

配置文件

需要注意文件夹binconfig

config

进入config文件夹

cd config

jvm.option

编辑jvm.option

vim jvm.option

根据机器情况配置jvm内存

-Xms512m
-Xmx512m

我根据自己的配置为512m,如果机器内存大,则可以配置为1g

elasticsearch.yml

打开文件

vim elasticsearch.yml

修改内容如下,这里需要注意这些配置都是注释掉了,只需要打开注释即可,主要配置的是pathnetwork两个数据。

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"]

datalogs两个文件夹路径可以自行配置。

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

vim /etc/security/limits.conf

需要在最后添加:

* soft nofile 65536
* hard nofile 65536

/etc/sysctl.conf

vim /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

解压并进入文件夹

tar -zxvf kibana
cd kibana

配置文件

kibana.yml

vim config/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是否启动成功

http://127.0.0.1:5601

logstash

下载

wget https://artifacts.elastic.co/downloads/logstash/logstash-7.9.3.tar.gz

解压并进入文件夹

tar -zxvf logstash
cd logstash

配置文件

logstash-sample.conf

vim config/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配置文件

<!-- logstash 7.9 -->
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>7.9</version>
</dependency>

配置logback-spring.xml

<?xml version="1.0" encoding="UTF-8" ?>
<configuration debug="false">
<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash_dev"
class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.X.X:21021</destination>
<!-- 日志输出编码 -->
<encoder
class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level",
"service": "${APP_NAME:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"parent": "%X{X-B3-ParentSpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger",
"rest": "%message"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>


<!-- 开发环境 -->
<springProfile name="develop">
<!--设置根日志级别-->
<root level="INFO">
<appender-ref ref="logstash_dev"/>
</root>
</springProfile>


</configuration>

IK分词器

下载

wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip

移动到指定文件解压

如果没有ik文件夹,可以手动创建

cd es/plugins/ik
unzip es-ik-xxx.zip

重启es服务并验证

POST _analyze
{
"analyzer": "ik_smart",
"text": "我爱我的钱"
}

注意

注意在运行两个服务的时候,由于es与kibana是基于java和node运行,因此占用内存较大,如果发生服务自动关闭,可能是内存占用较高导致。
需要调整es和kibana的内存占用,因为这两者在运行的时候后需要虚拟机的支持。
分别在他们的目录下的config下的xx.option去降低内存占用即可。