linux-ELK日志组件的搭建

ELK(elasticsearch+logstash+kibana)是目前比较常用的日志分析系统,包括日志收集(logstash),日志存储搜索(elasticserarch),展示查询(kibana)三部分
ELK具体结构如下图所示:
 
基本日志数据流向:AppServer上报->logstash汇总分发->elasticsearch存储检索->kibana展示
 
安装流程:1、JDK1.8 2、 elasticsearch 3、logstah 4、kibana
 
环境要求: CentOS Linux release 7.4.1708 (Core)
软件版本: jdk-8u152
          elasticsearch-6.1.2
          kibana-6.1.2
          logstash-6.1.2
 
1、安装JDK
elasticsearch和logstash需要需要jdk,根据官方文档6.1.2必须jdk1.8,推荐使用jdk 1.8.0_131,这里使用的是jdk1.8.0_152
将jdk安装包上传到服务器上 并执行:
rpm -ivh jdk-8u152-linux-x64.rpm
配置环境变量:
vim /etc/profile
在最后追加
# set jdk
export JAVA_HOME=/usr/java/jdk1.8.0_152
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH
重置查看java环境
source /etc/profile
java -version
 
 
2、安装elasticsearch
下载elasticsearch地址
安装后的文件地址
/run/elasticsearch  进程存放的位置
/etc/sysconfig/elasticsearch  全局设置
/etc/rc.d/init.d/elasticsearch  启动命令
/etc/elasticsearch  配置文件地址
/var/lib/elasticsearch  数据文件
/var/log/elasticsearch  日志
/usr/share/elasticsearch 安装目录
/usr/share/elasticsearch/bin/elasticsearch 启动程序
 
设置 elasticsearch全局属性,配置JAVA_HOME, (此项可以不设置)
vim /etc/sysconfig/elasticsearch
JAVA_HOME=/usr/java/jdk1.8.0_152
 
设置 elasticsearch网络参数,打开  /etc/elasticsearch/ elasticsearch.yml  文件
vim /etc/elasticsearch/elasticsearch.yml
 
#设置绑定到一个特定的IP地址(IPv4或IPv6)
network.host:192.168.0.1
#设置自定义端口的HTTP
http.port:9200
设置jvm参数,打开  /etc/elasticsearch/jvm.options  文件
#jvm默认设置为1G,如果压力大,可将jvm的参数调大
-Xms1g
-Xmx1g
 
设置linux系统参数
修改/etc/security/limits.conf文件,添加或修改如下行:
vim /etc/security/limits.conf 
 
* hard nofile 65536
* soft nofile 65536
修改 /etc/sysctl.conf文件,添加 vm.max_map_count设置
vim /etc/sysctl.conf
 
vm.max_map_count=262144
输入 sysctl -a 使修改生效
sysctl -a   
启动elasticsearch
systemctl enable elasticsearch.service       #设置开机启动
systemctl disable elasticsearch.service      #取消开机启动
systemctl start elasticsearch.service        #启动elasticsearch服务
systemctl stop elasticsearch.service        #关闭elasticsearch服务
systemctl restart elasticsearch.service      #重启elasticsearch服务
systemctl status elasticsearch.service       #查看elasticsearch服务状态
设置防火墙端口
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
测试是否安装成功,在浏览器中输入 http://192.168.0.1:9200 当出现下面页面时表示安装成功
 
3、安装logstash
下载logstash
当提示红框中提示时,说明安装成功
安装后的文件地址
/etc/logstash  配置文件存放地址
/var/lib/logstash
/var/log/logstash 日志文件存放地址
/usr/share/logstash  安装地址
/usr/share/logstash/bin/logstash  启动文件地址
修改vim /etc/logstash/logstash.yml文件,设置监听端口
vim /etc/logstash/logstash.yml
 
# 这里设定绑定本机ip
http.host: "192.168.2.221"
# 用默认值,设置监控端口范围 9600-9700,默认会监听第一个9600
http.port: 9600-9700
 
默认会检测 /etc/logstash/conf.d/中以.conf结尾的配置文件,也可以修改为别的地址
 
新建logstash的输入、输出、过滤器规则
在/etc/logstash/conf.d/目录中新建 logstash.conf文件
input {
tcp {
    id => "web-log-1"
    host => "192.168.2.8"
    port => 9601
    mode => "server"
    ssl_enable => false
    codec => json { charset => "UTF-8" }
}
tcp {
    id => "service-log-1"
    host => "192.168.2.8"
    port => 9602
    mode => "server"
    ssl_enable => false
    codec => json { charset => "UTF-8" }
}
stdin { }
}
 
output {
elasticsearch {
hosts => "192.168.2.8:9200"
index => "%{[appname]}-%{+YYYYMMdd}"
codec => json { charset => "UTF-8" }
}
stdout {
codec => rubydebug {}
}
}
启动logstash
systemctl enable logstash.service     #设置为开机启动服务
systemctl disable logstash.service    # 取消开机启动
systemctl start logstash.service      #启动服务
systemctl stop logstash.service       #停止服务
systemctl restart logstash.service    #重启服务
systemctl status logstash.service     #查看服务状态
设置防火墙端口
firewall-cmd --zone=public --add-port=9600/tcp --add-port=9601/tcp --add-port=9602/tcp  --permanent
firewall-cmd --reload
测试 logstash是否可用
在win电脑上telnet连接一下logstash
可以正常进行到9600端口中,说明正常启动
 
4、安装kibana
下注kibana
安装后的文件地址
/etc/default/kibana          #默认配置
/etc/rc.d/init.d/kibana      #启动脚本
/etc/kibana                  #配置文件
/var/lib/kibana
/usr/share/kibana             #安装路劲
/usr/share/kibana/bin/kibana  #启动程序
修改配置文件,设置访问端口,和elasticsearch地址
vim /etc/kibana/kibana.yml
#设置默认访问端口
#设置服务绑定的ip
#设置elasticsearch地址
启动kibana
systemctl enable kibana.service     #设置为开机启动服务
systemctl disable kibana.service    # 取消开机启动
systemctl start kibana.service      #启动服务
systemctl stop kibana.service       #停止服务
systemctl restart kibana.service    #重启服务
systemctl status kibana.service     #查看服务状态
设置防火墙端口
firewall-cmd --zone=public --add-port=5601/tcp --permanent
firewall-cmd --reload
 
测试服务是否安装成功,在浏览器访问: http://192.168.2.221:5601,如果可以打开以下页面说明安装成功
 
5、配置AppServer将日志上传到logstash中
由于项目中是采用slf4j+logback作为日志输出,所以这里只讨论这种方式
需要新加 logback logstash 整合jar包 logstash-logback-encoder 和 jsonevent-layout,在pom.xml中配置
pom文件依赖的开源包文档 net.logstash.logback , 连接地址为:  https://github.com/logstash/logstash-logback-encoder
<!--logbacklogstash整合jar包  -->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.11</version>
</dependency>
<dependency>
    <groupId>net.logstash.log4j</groupId>
    <artifactId>jsonevent-layout</artifactId>
    <version>1.7</version>
</dependency>
在logback.xml中配置
     <!-- ELK日志 -->
    <appender name="LOGSTASH_APPENDER" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>192.168.2.221:9601</destination>
        <!-- encoder必须配置,有多种可选 -->
        <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
             <customFields>{"appname":"web-app"}</customFields><!-- app的名字 -->
        </encoder>
      <connectionStrategy>
          <roundRobin>
              <connectionTTL>5 minutes</connectionTTL>
          </roundRobin>
      </connectionStrategy>
    </appender>
 
     <root level="DEBUG">
           <appender-ref ref="LOGSTASH_APPENDER" />
     </root>
 
配置说明:
1、net.logstash.logback.appender.LogstashTcpSocketAppender 这是使用TCP协议将日志上传到logstash中,这种方式需要考虑一下网络性能
2、net.logstash.logback.encoder.LogstashEncoder 指定数据的编码格式,这个必须和logstash.conf中的 codec => json { charset => "UTF-8" }配置一致,否则会出现乱码情况,一般默认使用UTF-8
3、<customFields>{"appname":"web-app"}</customFields> 这是自定义的,在每条日志都会加上这个信息,为在展示的时候好进行索引,在logstash.conf中index => "%{[appname]}-%{+YYYYMMdd}"会通过这个将web-app读取出来,然后存储起来
4、<connectionStrategy>
     <roundRobin>
         <connectionTTL>5 minutes</connectionTTL>
     </roundRobin>
   </connectionStrategy
这块的配置是当连接多个logstash IP或者端口时,可以轮询负载各端口 ,多个地址是在 <destination>192.168.2.221:9601</destination> 中配置
 
然后启动程序在日志服务上用netstat -tnp 查看连接情况 
netstat -tnp
从上图中可以看到192.168.2.48 在连接到 192.168.2.221:9601端口,说明在发送日志
在kibana中创建日志索引,就可以看到我们的app日志了
 
6、配置kibana日志过滤器,查看日志
新增日志索引过滤器:
在Management中选择Index Patterns
 
设置索引规则
设置时间字段过滤
 
点击Discovery查看日志详情
 
7、参考文档
ELK博客
elastic官网    
Lostash最佳实践    
Lostas官网文档
Elasticsearch权威指南
Elasticsearch官网文档   
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值