elk安装配置步骤

一、es
1、创建es用户 :useradd es
2、更改elasticsearch目录的归属: chown es:es elk/ -R
3、解压elasticsearch安装包
4、修改elasticsearch.yml配置文件中:
    node.name: master    节点名称
    network.host: 192.168.100.3    访问ip
    discovery.seed_hosts: ["192.168.100.3"]    节点ip
    cluster.initial_master_nodes: ["master"]    节点名称

 
5、修改jvm.options配置文件中:    -Xms128m     初始化堆内存
                -Xmx128m    最大堆内存
(因为修改了elasticsearch.yml访问地址,就会认为是生产环境,但是我们是测试环境,故将jvm堆内存改小一点)
6、创建内存映射最大数量(注:使用root用户):vim /etc/sysctl.conf 
                    配置:vm.max_map_count=655360
                            sysctl -p #配置生效
7、启动: ./bin/elasticsearch 或 ./bin/elasticsearch -d(后台启动)

启动时报错及解决思路:
问题1: [1]:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
解决方法:切换到root用户:
    vim /etc/security/limits.conf
    编辑limits.conf添加以下内容:
    * soft nofile 65535
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096
注:其中 * 代表所有用户也可以指定具体用户,此文件修改后需要重新登录用户才会生效,登录后使用ulimit -Sn/ulimit -Hn查看

问题2:[2]:the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

修改elasticsearch.yml配置文件中:discovery.seed_hosts: ["192.168.100.3"]

二、kibana
1、解压kibana的安抓包;
2、修改kibana.yml配置文件:
    server.port: 5601
    server.host: "192.168.100.3"
    elasticsearch.hosts: ["http://192.168.100.3:9200"]
3、启动:./bin/kibana

三、filebeat
1、解压filebeat的安装包;
2、修改filebeat.yml配置文件:
    - type: log                日志类型
               enabled: true                是否允许输入
               fields.under.root: true            自定义字段信息放到root根下
               paths:
                          - /opt/elk/logs/*.log        采集文件路径
               fields:
                                   type: test_log            自定义字段信息
    output.logstash:                logstash输出配置
          hosts: ["192.168.100.3:5044"]        logstash输出到的主机ip

3、启动:./filebeat -e -c my_filebeat.yml

四、logstash
1、解压logstash的安装包
2、在解压文件的config文件夹中创建*.conf的文件
3、编写*.conf文件,即logstash的配置文件
基础配置:
    input {
                           beats {
                    port => 5044
                     codec => plain {
                                      charset => "ISO-8859-1"
                            }
                      }
    }

    output {
                       elasticsearch {
                    hosts => ["192.168.100.3:9200"]
                    index => "land_%{type}-%{+YYYY.MM.dd}"
                       }
                       stdout{
                                   codec => rubydebug
                           }
                }

4、启动:./bin/logstash -f *.conf

五、采用redis作为消息队列相关配置:
输入配置:
input{
    redis {
      data_type => "list"
      db => 1
      host => "mini03"
      port => 6379
     key => "apache-access-log"
   }
 }

输出配置:
output{
   redis {
     data_type => "list"
     # 生产环境需要规划
     db => 1
     host => "mini03"
     port => 6379
     key => "redis_test"
   }
 }

六、采用kafka作为消息队列:
输入配置:
 kafka {
        bootstrap_servers => "192.168.37.147:9092,192.168.37.148:9092,192.168.37.149:9092"
        topics => ["system_log"]
        codec => "json"
 }


七、其他
防火墙开启某端口访问
[root@localhost ~]# firewall-cmd --zone=public --add-port=5601/tcp --permanent 
success
[root@localhost ~]# systemctl restart firewalld.service
[root@localhost ~]# 
八、elk常用消息队列比较:
1、redis:基于内存的应用,消息都放在内存中,写入速度快,但是受内存限制,容易造成内存爆满。
2、kafka:分布式处理平台,支持分布式,消息的订阅消费位置的确定是通过消费者offset来定位的,也可以定位到之前消息再次消费。一个topic可以由多个节点进行消费,实现负载均衡,降低单节点的压力,但是这样会出现当有消费者进行消费时,如何保证这个队列不会被其他消费者进行消费,解决方法就是使用zookeeper的分布式锁来解决。
3、rabbitmq:通过轮询机制给worker发布消息实现负载均衡,它的一个核心是exchanger(交换机),它可以将消息路由到不同的队列中去,比如我既要打印,又要持久化,那我就可以直接路由到两个queue(队列)中。
 

猜你喜欢

转载自blog.csdn.net/D_J1224/article/details/107975977