美文网首页我的收藏
测试/生产环境elk部署实践

测试/生产环境elk部署实践

作者: hhwwxxx | 来源:发表于2018-11-07 23:23 被阅读480次

    最近两周,需要部署一套elk日志收集系统,顺便将其整理成部署文档

    elk + kafka + zookeeper生产实践

    1.查看系统版本
    2.确认基础环境
    3.安装zookeeper
    4.安装kafka
    5.安装filebeat
    6.安装Elasticsearch
    7.安装kibana
    8.安装Logstash
    9.关联配置
    10.最终验证

    1.查看系统版本
    cat /etc/redhat-release #查看系统版本 CentOS Linux release 7.2.1511 (Core)

    2.确认基础环境
    update-alternatives --config java #查看java环境 1.8 openjdk +
    go version #go version go1.11 linux/amd64
    go env #gopath,goroot,gotooldir等确认下没问题
    #创建elk用户(用于启动Elasticsearch,修改Elasticsearch的配置)
    1.建用户:
    adduser elk //新建elk用户
    passwd elk //给elk用户设置密码
    密码:password
    2.创建工作组
    创建用户时自动创建了
    3.验证用户和组是否创建成功
    cat /etc/group
    cat /etc/passwd
    4.授予elk用户sudo权限
    root用户下:sudo vim /etc/sudoers
    在 root ALL=(ALL) ALL
    下新增记录 elk ALL=(ALL:ALL) NOPASSWD:ALL
    #安装的elk+filebeat都是6.4官方推荐稳定版本
    #安装的kafka : 2.11-1.1.1 , zookeeper : 3.4.12
    #wget,yum,本地download下上传服务器,都可以,官网版本确定,对应系统确定即可
    #这里采用的全部是下载压缩包安装方式:

    3.安装zookeeper
    #将zookeeper压缩包复制到zookeeper安装目录下,定为{zookeeper_home}
    #默认安装三台zookeeper服务器集群
    tar -xzf zookeeper-3.4.12.tar.gz
    cd zookeeper-3.4.12
    #修改配置文件
    vim conf/zoo_sample.cfg
    dataDir=/var/zookeeper #修改
    #添加:
    server.1=192.168.23.159:2888:3888
    server.2=192.168.23.160:2888:3888
    server.3=192.168.23.16:2888:3888
    #root下新建目录:
    mkdir /var/zookeeper
    #启动zookeeper
    #复制zoo.cfg文件
    cp conf/zoo_sample.cfg conf/zoo.cfg
    bin/zkServer.sh start
    ps -ef |grep zookeeper #查看启动参数

    4.安装kafka
    #官网下载,filebeat目前版本限制kafka版本必须在0.8.2.0 and 1.1.1 之间
    #直接使用 Kafka 2.11-1.1.1 进行安装
    #因为至少需要3台主机,因此,部署在159,160,161三台机器上,目录 /home/sre/deploy/elk
    #添加本地hostname的配置
    listeners = PLAINTEXT://localhost:9092
    #启动kafka server
    bin/kafka-server-start.sh config/server.properties &
    #查看端口占用情况
    netstat -tunlp|egrep "(8888|9092|9093|9094|2181)"

    #创建kafka的topic
    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 2 --topic topic_name
    #kafka至少要3个活动的server才能创建topic,但查看topic没有这个限制
    #查看topic
    bin/kafka-topics.sh --list --zookeeper 192.168.23.159:2181
    #查看topic详情
    bin/kafka-topics.sh --describe --zookeeper  localhost:2181 --topic topic_name
    #删除topic
    bin/kafka-topics.sh --delete --zookeeper 192.168.23.159:2181 --topic topic_name
    #kafka对应topic生产数据
    bin/kafka-console-producer.sh --broker-list 192.168.23.159:9092 --topic test
    #向kafka对应topic申请,消费数据(默认从上次结束的地方开始消费)
    

    5.安装filebeat
    #下载安装包(centos的对应filebeat_file.rpm)并安装
    rpm -iv filebeat_file.rpm
    #rpm安装的filebeat程序根目录
    /usr/share/filebeat
    #修改配置文件
    sudo vim /etc/filebeat/filebeat.yml
    #配置多个input,区分不同来源的日志,并设置不同的fields_topic(对应不同kafka的topic),之后统一通过kafka out分别输出到对应的kafka topic 中去
    #启用指定模板
    sudo filebeat modules enable elasticsearch kafka kibana system nginx mysql
    #查看模板启用情况
    sudo filebeat modules list
    #将filebeat.reference.yml中关于kafka output相关的配置复制到filebeat.yml文件中output的部分,即可通过service启动
    systemctl status filebeat
    systemctl start filebeat
    systemctl restart filebeat
    systemctl stop filebeat

    6.安装Elasticsearch
    #elasticsearch全部操作均以elk用户登录
    cd /usr/local
    #权限授予(elk用户目录进入权限)
    chown -R elk.elk /home/
    chown -R elk.root /home/sre/deploy/go/src/
    shasum -a 512 -c elasticsearch-oss-6.4.2.tar.gz.sha512 #根据.sha512校验文件是否没问题
    tar -xzf elasticsearch-oss-6.4.2.tar.gz
    #给elk用户/组赋予elasticsearch-oss-6.4.2目录的权限
    sudo chown -R elk:elk elasticsearch-oss-6.4.2
    cd elasticsearch-oss-6.4.2/

    #修改配置文件(结合2.x.生产上线前的配置中的sudo vim ./config/elasticsearch.yml部分修改)
    sudo vim ./config/elasticsearch.yml
    #找到 network.host: 的一行数据,修改为: network.host: hostIp
    #去掉 http.port 前面的注释,如果需要修改端口,也需要将端口号修改为需要的值
    #设置集群名:cluster.name: sre-elasticsearch
    #设置节点名:master-node-{$node-number}
    #设置初始节点发现接入的host列表:discovery.zen.ping.unicast.hosts: ["192.168.23.159", "192.168.23.160" ,"192.168.23.16"]
    #设置mater最小节点:discovery.zen.minimum_master_nodes: 2
    
    #以上报错修改配置(el的host是localhost时不会报错)
    sudo vim /etc/sysctl.conf
    vm.max_map_count=655360
    sudo sysctl -p  #修改内核后立即刷新
    sudo vim /etc/security/limits.conf
    #添加下面四个
    * soft nproc 65536
    * hard nproc 65536
    * soft nofile 65536
    * hard nofile 65536
    ulimit -a #查看配置参数
    #root用户下执行 ulimit -n 65536
    #切换到elk用户,会话级设置: su - elk  ##之后新建的elk 会话也使用了新的设置
    ulimit -a #查看配置参数
    
    #启动Elasticsearch
    ./bin/elasticsearch -d -p pid
    #验证Elasticsearch是否正常运行
    curl 'localhost:9200/'  #看到返回json数据即表示正常运行了 curl '192.168.23.159:9200/'
    
    #查看Elasticsearch集群(cluster)状态的api
    curl -XGET 'http://192.168.23.159:9200/_cluster/health'
    

    7.安装kibana
    #官网目前一个kibana只能指向一个具体的Elasticsearch,对Elasticsearch集群,官方建议kibana指向专门的协调节点(coordinating-node)
    tar -xzf kibana-oss-6.4.2-linux-x86_64.tar.gz
    #给elk用户/kibana-6.4.2-linux-x86_64目录的权限
    sudo chown -R elk:elk kibana-6.4.2-linux-x86_64
    cd kibana-6.4.2-linux-x86_64/
    #修改配置文件
    sudo vim ./config/kibana.yml
    #修改server.host成122.11.47.183以使其他机器可以访问kibana,默认端口5601(可通过server.port配置)
    #找到server.host: "localhost" ,取消掉注释,改为所在ip(方便外网访问)
    #修改Elasticsearch.url 到 '122.11.47.183:9200' '192.168.23.159:5601'
    #
    sudo mkdir /var/log/kibana
    #给elk用户/kibana-6.4.2-linux-x86_64目录的权限
    sudo chown -R elk:elk /var/log/kibana
    #事实上并未在目录记录日志############################################

    #启动kibana
    ./bin/kibana
    #测试是否成功启动,返回成功的json即表示成功启动kibana
    curl 'localhost:5601/'  curl '192.168.23.159:5601/' 
    

    8.安装Logstash
    #同上
    #测试是否成功
    ./bin/logstash -e 'input { stdin {} } output { stdout {} }'
    #成功启动后,在命令行输入,自动识别输入,返回json的output
    #添加配置文件,指定启动的配置文件
    ./bin/logstash -f $file_path/config_file
    #配置内容:
    output {
    elasticsearch { hosts => ["122.11.47.183:9200"] }
    stdout { codec => rubydebug }
    }
    #logstash可以配置到Elasticsearch的集群的output,方法是给一个 host:port的数组

    9.关联配置
    1.filebeat 在一个终端只安装一个,可以区分不同路径和不同文件夹下的文件,并将其自动推送到kafka的对应topic中去,一个filebeat可以负载均衡地对应一个kafka集群
    2.logstash 可以从一个kafka集群的多个指定topic中获取(消费)数据,并将其在记录的根级以type的key-value对将其区分索引开来
    3.elasticsearch可以是一个分布式存储,索引的数据库集群,接收多个来源的数据
    4.kibana只接受elasticsearch中一个固定主机的数据,以此作为web前段展现,查询,配置维护的入口
    5.总结:多个filebeat到fafka集群,单个 logstash 从kafka获取数据,输入到elasticsearch集群,kibana从elasticsearch中固定的一个主机进入/查询/维护数据)

    10.最终验证
    在filebeat配置的log文件中输入数据,看对应topic是否数据进入kafka,logstash是否成功从kafka获取到数据,kibana上是否可以看到

    相关文章

      网友评论

        本文标题:测试/生产环境elk部署实践

        本文链接:https://www.haomeiwen.com/subject/nzzbxqtx.html