实战elk搭建

实战elk搭建一 ELK 分析对于 ELK 主要是分为 ElasticSearc Logstash 和 Kibana 三部分 其中 Logstash 作为日志的汇聚 可以通过 input filter output 三部分 把日志收集 过滤 输出到 ElasticSearc 中 也可以输出到文件或其他载体 ElasticSearc 作为开源的分布式引擎 提供了搜集 分析 存储数据的功能 采用的是 restful 接口的风格 Kibana 则是作为 ElasticSearc 分析数据的页面展示 可以进行对日志的分析 汇总

一、ELK分析

二、ELK部署

Elasticsearch 官网elasticsearch-6.3.0.tar  

Kibana 官网kibana-6.3.0下载 linux64位

Logstash 官网logstash-6.3.0.tar

Elasticsearch安装

1.解压

tar -zxvf elasticsearch-6.3.0.tar.gz 

2.修改config目录下elasticsearch.yml文件

# 在elasticsearch-6.3.0目录下创建一个data文件存储数据 path.data: "此处填data目录,用pwd命令获取" # 填写elasticsearch-6.3.0目录下的logs目录,记录es日志 path.logs: "此处填logs文件全路径" # 端口号 http.port: 9200 # 建议改成服务器ip network.host: 192.168.246.110 

3.es不能使用root用户启动

#创建新用户及授权 groupadd es useradd es -g es -p elasticsearch chown -R es:es elasticsearch-6.3.0 

4.启动

#启动前先切换用户 su es # 后台启动 nohup ./bin/elasticsearch -d # 查看是否启动成功 ps -ef|grep elasticsearch # 输入此命令查看是否有json字符串 curl http://ip:9200

注意!!!7版本以上的es需要的jdk可能都是11或者以上的,而我们的项目大多数都是使用的jdk8,但是7版本以上的es自带了jdk,此时我们需要把es的启动环境jdk进行配置。

修改bin目录下的elasticsearch-env文件

 # 修改前 if [ ! -z "$JAVA_HOME" ]; then JAVA="$JAVA_HOME/bin/java" JAVA_TYPE="JAVA_HOME" else if [ "$(uname -s)" = "Darwin" ]; then # macOS has a different structure JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java" else JAVA="$ES_HOME/jdk/bin/java" fi JAVA_TYPE="bundled jdk" fi #修改后 if [ "$(uname -s)" = "Darwin" ]; then # macOS has a different structure JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java" else JAVA="$ES_HOME/jdk/bin/java" fi JAVA_TYPE="bundled jdk" 

Kibana安装

1.解压

tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz

2.修改配置config下的kibana.yml文件

# 端口号 server.port: 5601 # ip server.host: "服务器ip" # es连接 elasticsearch.url: "http://"es的ip地址":9200"

3.启动并检查

# 后台启动 nohup ./bin/kibana -d # 检查是否启动成功 ps -ef|grep kibana 

启动后到浏览器输入kibana的地址:   ip:5601 出现以下前端页面代表es与kibana建立连接成功,否则失败。

实战elk搭建

Logstash安装

1.解压

# 解压 tar -zxvf logstash-6.3.0.tar.gz

2.配置文件配置

# 在config目录下新建一个配置文件名为:logstash.conf,配置如下 input { tcp { port => 5400 type => "tcp_log" codec=> json_lines } } output{ if [type] == "tcp_log" { elasticsearch { hosts => ["ip:9200"] index => "tcplog-%{+YYYY.MM.dd}" } } }

3. 启动

# 在logstash.6.3.0目录下后台启动 nohup ./bin/logstash -f ./config/logstash.conf & # 检查是否成功 ps -ef|grep logstash

经过以上配置,elk基本就已经搭建完成了,能够满足正常的使用,但是企业中实战完全不够,因为安全性不够好,es与kibana默认都是没有密码的需要配置密码。

三、ES、Kibana、Logstash密码配置

Es

1.关于x-pack插件

x-pack是elasticsearch的一个扩展包,将安全,警告,监视,图形和报告功能捆绑在一个易于安装的软件包中,可以轻松的启用或者关闭一些功能。默认我们的elk部署后,可以直接就进入web管理界面,这样会带来极大的安全隐患。

es的密码配置需要借助x-pack插件,若是6.3.0之前的版本需要下载插件,6.3.0以后都不需要下载,如果需要下载则按一下进行操作:

# 在es的目录下进行下载 ./elasticsearch-plugin install x-pack

2. 在es的config目录下elasticsearch.yml中添加如下配置

# 开启集群中http传输,我搭建的为单机 xpack.security.transport.ssl.enabled: true # 开启xpack xpack.security.enabled: true # 是否支持跨域,默认为false http.cors.enabled: true # 当设置允许跨域,默认为*,表示支持所有域名,如果我们只是允许某些网站能访问,那么可以使用正则表达式。比如只允许本地地址。 /https?:\/\/localhost(:[0-9]+)?/ http.cors.allow-origin: "*" # 请求头设置,可有可无 http.cors.allow-headers: "Authorization"

3.启动es

#启动前先切换用户 su es # 后台启动 nohup ./bin/elasticsearch -d # 查看是否启动成功 ps -ef|grep elasticsearch # 输入此命令查看是否有json字符串 curl http://ip:9200

4.设置密码

# 在es的bin目录下以交互的方式设置密码 ./bin/elasticsearch-setup-passwords interactive

此时可能会出现错误,报错信息如下:

Unexpected response code [403] from calling GET http://10.10.1.10:9200/_xpack/security/_authenticate?pretty It doesn't look like the X-Pack security feature is available on this Elasticsearch node. Please check if you have installed a license that allows access to X-Pack Security feature. ERROR: X-Pack Security is not available. 

没有关系,你只需要等等等等,不出五分钟你会发现你去浏览器访问es的时候需要你输入密码

实战elk搭建

若是还是不需要密码即可访问es的界面,请参考以下博客:

CentOS7上安装配置激活成功教程Elasticsearch+Kibana 6.4.2-6.5.1全过程_WolfBolin的博客-CSDN博客

当出现可以需要密码访问es时候执行以下命令,进行密码配置:

./bin/elasticsearch-setup-passwords interactive

然后按照以下步骤配置密码es,kibana以及logstash密码

[root@sbox-tt bin]# ./elasticsearch-setup-passwords interactive Initiating the setup of passwords for reserved users elastic,kibana,logstash_system,beats_system. 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]: passwords must be at least [6] characters long Try again. 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 [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]: Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [elastic]

Kibana

由于es已经设置好了密码,此时如果kibana想要从es中获取数据就必须进行账号密码配置,在kibana的config目录下进行Kibana.yml配置如下

# 默认用户为elastic elasticsearch.username: "elastic" elasticsearch.password: "密码"

Logstash

logstash需要把收集来的数据传输到es,这个时候需把前面配置好的logstash.conf文件进行更改:

# tcp表示以tcp的方式进行日志传输,此方式更好与项目结合 input { tcp { port => 5400 type => "tcp_log" codec=> json_lines } tcp{ port => 5301 type => "tcp_data" codec=> json_lines } } output{ if [type] == "tcp_log" { elasticsearch { hosts => ["ip:9200"] index => "tcplog-%{+YYYY.MM.dd}" user => elastic password => 密码 } } if [type] == "tcp_data" { elasticsearch { hosts => ["ip:9200"] index => "%{[appname]}-%{+YYYY.MM.dd}" user => elastic password => 密码 } } }

登录Kibana,浏览器访问:ip:5601,出现以下界面:

实战elk搭建

Kibana的superuser的账号为:elastic  密码为前面设置好的密码。登录后,elk及搭建完成。

四、ELK与项目结合

1、SpringBoot与LogBack日志配置

SpringBoot项目中引入jar包,该jar包起到Socket通过TCP方式向Logstash进行日志传输。

 
   
   
     net.logstash.logback 
    
   
     logstash-logback-encoder 
    
   
     5.3 
    
  

接着增加logback-spring.xml配置文件如下:

 
   
   
    
    
     
     
       %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 
      
     
    
    
     
    
      ip:5301 
     
     
      
     
       {"appname": "pay_mode"} 
      
     
    
    
     
     
    
  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177351.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:43
下一篇 2026年3月26日 下午7:43


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号