Linux系统安装部署ElasticSearch+Logstash+Kibana

2 篇文章 0 订阅
1 篇文章 0 订阅

最近再搭建项目日志收集,使用ELK+KAFKA完成日志收集。本编主要是讲如何搭建ELK。

下载安装ELK

1、下载ELK安装包,再导入到Linux系统中
https://www.elastic.co/cn/downloads/elasticsearch
在这里插入图片描述
选择下载,再选择下载的版本,例如Elasticsearch,我选择7.10.0版本,系统选择Linux_x86_64这版本,Kinbana和Logstash同理选择同一版本。
在这里插入图片描述
下载完毕后,上传到Linux系统,放在某个目录下,如:/home/elk
2、解压:
tar -zxvf elasticsearch-7.10.0-linux-x86_64.tar.gz
mv elasticsearch-7.10.0 /home/elk/elasticsearch

tar -zxvf logstash-7.10.0-linux-x86_64.tar.gz
mv logstash-7.10.0 /home/elk/logstash

tar -zxvf kibana-7.10.0-linux-x86_64.tar.gz
mv kibana-7.10.0 /home/elk/kibana
在这里插入图片描述
各解压完成后的文件夹如如。

启动ES

1、创建用户和用户组
groupadd elasticsearch
useradd elasticsearch -g elasticsearch

2、给 elasticsearch 用户分配权限
chown -R elasticsearch:elasticsearch /home/elk/elasticsearch

3、创建数据和日志文件夹
数据文件夹:var/log/elasticsearch/data/
日志文件夹:var/log/elasticsearch/log/
分配可访问权限:
chown -R elasticsearch:elasticsearch var/log/elasticsearch/data/
chown -R elasticsearch:elasticsearch var/log/elasticsearch/log/

4、修改elasticsearch配置文件
vim home/elk/elasticsearch/config/elasticsearch.yml
修改或添加以下配置:
数据文件夹:
path.data: /var/log/elasticsearch/data
日志文件夹:
path.logs: /var/log/elasticsearch/log
网络ip:
network.host: 安装elk的ip地址
(建议不要127.0.0.1或localhost或0.0.0.0,我使用上面三个时,加入ES-Head不在同一台机器,发现连接不上ES,原因未知)
端口:
http.port: 9200
tcp端口:
transport.tcp.port: 9300
设置为master节点:
node.master: true
master节点名称:
node.name: master
集群中的节点,就是master节点
cluster.initial_master_nodes: [“master”]
(为何要设置master节点,如果不设置,kinaba连接的时候,一直会提示找不到master节点,情况糟糕的会直接报错,起不来,或者连接不是ES,坑还是很多的ε=(´ο`*)))唉)
设置可跨域:
http.cors.enabled: true
http.cors.allow-origin: “*”
退出保存文件
5、启动ES
cd /home/elk/elasticsearch/bin
后台启动:./elasticsearch -d
6、查询是否启动成功,浏览器输入:http://ES安装的ip:9200/

{
  "name" : "master",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "FUFO2_KiSYaReuZphERXHQ",
  "version" : {
    "number" : "7.10.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "51e9d6f22758d0374a0f3f5c6e8f3a7997850f96",
    "build_date" : "2020-11-09T21:30:33.964949Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

或者使用ES-head连接
在这里插入图片描述

启动Kibana

1、修改kibana配置文件
vim home/elk/kibana/config/kibana.yml
修改或添加以下配置:
kibana的服务端口
server.port: 5601
kibana的服务ip
server.host: “0.0.0.0”
连接ES的地址:
elasticsearch.hosts: [“http://es的ip:9200”]
(建议还是用es安装的ip,不推荐用127.0.0.1或localhost或0.0.0.0,可能会连不上ES,同时也不推荐用:elasticsearch.url: [“http://es的ip:9200”]这样的配置,不一定能连上ES,原因没深入连接)
可以设置kibana的中文版:
默认:i18n.locale: “en”
中文:i18n.locale: “zh-CN”
2、启动
cd /home/elk/kibana/bin
后台启动:./kibana -d
或者后台启动:
nohup ./kibana >/dev/null &
3、查看是否启动成功:
http://kibana的ip:5601/
成功后
在这里插入图片描述

Logstash启动

1、新增logstash.conf配置文件
cd /home/elk/logstash/config
cp logstash-sample.conf logstash.conf 或 touch logstash.conf
vim logstash.conf
2、修改logstash.conf,添加以下配置

input {
#  stdin{}
   tcp {
    # host:port就是上面appender中的 destination,
    # 这里其实把logstash作为服务,开启9250端口接收logback发出的消息
    host => "logstash的ip" 
    port => 9250 
    mode => "server" 
    tags => ["tags"] 
    codec => json_lines
  }
}

filter {
#  mutate{
#    add_field => {
#      "@msg" => "%{msg}"
#    }
#  }
  json{
    source => "msg"
    skip_on_invalid_json => true
#    remove_field => ["msg"]
  }
}

output {
     elasticsearch {
        hosts => ["ES的ip:9200"]
       index => "zipkin-topic-%{+YYY.MM.dd}" #按日新建ES索引
     }
  }
  stdout { codec => rubydebug }
}

3、启动logstack
cd /home/elk/logstash/bin
后台启动:
nohup ./logstash -f /home/elk/logstash/config/logstash.conf >/dev/null &
到此ELK安装并启动完成:
因为我项目用途是使用ELK和KAFKa收集项目项目日志:
附上logstash连接kafka的配置文件内容如下:

input {
  kafka {
    bootstrap_servers => "10.47.3.238:9092"
    topics => ["zipkin"]
    codec => "json"
    auto_offset_reset => "earliest" #从最早的偏移量开始消费
    decorate_events => true    #此属性会将当前topic、offset、group、partition等信息也带到message中
    type => "zipkin" #所有插件通用属性,尤其在input里面配置多个数据源时很有用
  }
  kafka {
    bootstrap_servers => "10.47.3.238:9092"
    topics => ["my_log"]
    codec => "json"
    auto_offset_reset => "earliest" #从最早的偏移量开始消费
    decorate_events => true    #此属性会将当前topic、offset、group、partition等信息也带到message中
    type => "my_log" #所有插件通用属性,尤其在input里面配置多个数据源时很有用
  }

}
 
output {

   if [type] == "zipkin" {
        elasticsearch {
            hosts => ["10.47.3.243:9200"]
            index => "zipkin-topic-%{+YYY.MM.dd}"
        }
    }
   if [type] == "my_log" {
        elasticsearch {
            hosts => ["10.47.3.243:9200"]
            index => "kafka-log-%{+YYY.MM.dd}"
        }
    }
    stdout {
        codec => rubydebug {metadata => true}  #logstash控制台输出日志和@metadata信息
    }
}

不同的topic建立不用的索引。

希望这篇文章能帮到初次搭建ELK的小伙伴,如有问题,请多多交流,我的微信号为:441338280(QQ同号)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值