ELK安装和使用

如果安装ELK只是为了玩玩,可以单机搭建没问题,但是真实业务运行时,必须考虑实用和效率问题。
ES client节点: 作为ES节点的任务协调节点,所有来自kibana的请求,全部到client节点,它会智能的负载均衡到其他的ES data节点(Mapper阶段),每个Data节点执行请求后,将结果返回给Client节点,Client节点聚合(Reduce阶段)后将结果返回给Kibana。
脑裂: 假设集群包含两个可参与master选举的节点,当着两个节点之间的网络通信断开时,每个节点都认为只有自己是可竞选的节点,当minimum_master_nodes也设置为1时,每个节点都选举自己成为master(认为另外一个节点是死的),这样就会导致出现了两个cluster,也称脑裂。

准备工作
安装ELK之前,需要明确下面几点:

  • 组网方式。集群有几个节点,每个节点上搭建哪些服务。
  • 数据源。
  • 兼容性。

组网方式

  • kibana安装在ES client节点(不要安装在master或者Data节点上),因为client节点有reduce阶段,所以该节点尽量内存和CPU充足些。
  • 默认情况下,ES节点既是master节点也是data节点。但是集群规模增大时,需考虑将master节点和data节点分离
  • minimum_master_nodes需要设置为(master_eligible_nodes / 2)+1 用来防止脑裂情况,兼顾高可用,master_eligible_nodes 最小值为3的奇数,minimum_master_nodes最小值为2。
  • logstash一般安装至少两个节点,用来保证高可用。

数据源
数据从哪里获取,这个能决定你选择哪个版本的ELK。比如:若你的kafka集群是0.9.x的版本,你安装了最新6.x的ELK,那么不好意思,该版本的logstash是无法从kafka获取到数据的。

兼容性
Elasticsearch, Logstash, Kibana不同的版本之间,兼容性需考虑清楚。建议ELK选择同一个版本安装。

下面以安装ELK6.2.4版本为例(Linux环境)
软件下载:https://www.elastic.co/cn/products 根据平台版本下载对应的安装包
环境要求: java版本是8或以上

组网方式


ELK安装和使用_第1张图片
image.png

Elasticsearch

  • 解压:tar -zxvf elasticsearch-6.2.4.tar.gz
  • 修改配置:
    --1. jvm.options文件,主要修改下-Xms和-Xmx,建议都设置为内存的50%左右
    --2. elasticsearch.yml,主要修改
cluster.name: wm-es
node.name: bi1
path.data: /srv/nbs/0/elasticsearch/data
path.logs: /srv/nbs/0/elasticsearch/logs
network.host: esIp
http.port: 9200
discovery.zen.ping.unicast.hosts: ["es1_ip", "es2_ip", "es3_ip"]
discovery.zen.minimum_master_nodes: 2
bootstrap.system_call_filter: false
  • 启动ES ./bin/elasticsearch -d
  • 查看集群状态 GET /_cat/health?pretty GET /_cat/nodes?pretty
    如果启动ES过程中报错:vm.max_map_count 65530 is too low等问题,请root权限修改vm.max_map_count并重启即可。
    搭建ES-client节点,需要在elasticsearch.yml中增加如下配置:
node.master: false
node.data: false
node.ingest: false
search.remote.connect: false

Logstash

  • 解压:tar -zxvf logstash-2.4.0.tar.gz
  • 修改配置,新建kafka-pipeline.conf
input {
     kafka {
        bootstrap_servers => "10.194.xxx.yyy:9094,10.194.xxx.yyy:9094,10.194.xxx.yyy:9094"
        auto_offset_reset => "latest"
        group_id => "fenzhan"
    id => "8.0.6"
        client_id => "logstash-1"
        check_crcs => "false"
    topics => ["fenzhan.exception.online"]
        }
}
filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}"}
    }
    geoip {
        source => "clientip"
    }
}
output {
      elasticsearch {
                hosts => ["10.172.xxx.yyy:9200","10.172.xxx.yyy:9200","10.172.xxx.yyy:9200"]
                index => "logstash-%{+YYYY.MM.dd}"
        template_overwrite => true
        } 
}

  • 检查Logstash的配置
    ./bin/logstash -f kafka-pipeline.conf --config.test_and_exit
  • 检查通过后,重载配置并启动:
    ./bin/logstash -f kafka-pipeline.conf --config.reload.automatic
  • 查看进程是否启动 jps/ ps -ef |grep logstash

Kibana

  • 解压:tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz
  • 修改kibana.yml配置
server.port: 5601 
server.host: "10.171.xxx.yyy"   //这个是外部浏览器访问的地址
elasticsearch.url: "http://esIp:9200" //这个是集群内部通信的
  • 启动Kibana
    ./bin/kibana 会提示是否启动成功,URL是啥

所有节点安装完成,并启动成功之后,进入Kibana的页面,点击Dev Tools进入Console,就可以通过REST API 来查询ES的数据。


ELK安装和使用_第2张图片
image.png

安装过程中,有任何问题,请留言!!!

参考资料:

  • ELK权威指南
  • kibana真实环境的应用
  • Coordinating节点介绍
  • logstash和Kafka兼容性
  • ES重要配置
  • ELK中文社区
  • ELK 性能调优
  • ELK 官方网站。
  • Elasticsearch 官方文档。
  • Elasticsearch 源代码。
  • Logstash 官方文档。
  • Logstash 源代码。
  • Kibana 官方文档。

你可能感兴趣的:(ELK安装和使用)