zoukankan      html  css  js  c++  java
  • Linux----------ELK日志收集系统入门(一)

    一、ELK简介

    在日常运维工作中,对于系统和业务日志的处理尤为重要。今天,在这里分享一下自己部署的Filebeat+ELK开源实时日志分析平台的记录过程,有不对的地方还望指出。

    简单介绍:

    日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。

    通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。

    集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。

    Filebeat+ELK是四个开源工具组成,简单解释如下:

    Filebeat:ELK 协议栈的新成员,一个轻量级开源日志文件数据搜集器,基于 Logstash-Forwarder 源代码开发,是对它的替代。在需要采集日志数据的 server 上安装 Filebeat,并指定日志目录或日志文件后,Filebeat就能读取数据,迅速发送到 Logstash 进行解析,亦或直接发送到 Elasticsearch 进行集中式存储和分析。

    Elasticsearch:是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

    Logstash:是一个完全开源的工具,它可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

    Kibana:也是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    这里之所以用Filebeat+ELK是因为Filebeat相对于logstash而言,更轻量级,占用系统资源少。

    实验拓扑图

    二、下载源码或二进制包

    cd /data/soft/
    rz jdk-8u221-linux-x64.tar.gz
    elasticsearch-6.8.0.tar.gz
    logstash-6.8.0.tar.gz
    kibana-6.8.0-linux-x86_64.tar.gz
    metricbeat-6.6.0-linux-x86_64.tar.gz(数据采集器)

    三、配置java环境

    tar -xf jdk-8u221-linux-x64.tar.gz
    mv jdk-8u221 jdk
    vim /etc/profile
    export JAVA_HOME=/data/soft/jdk/
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

    四、准备elk启动账户

    elk中的es无法用root启动,只能用普通用户
    useradd elk

    五、配置elasticsearch

    5.1 解压二进制包

    tar -xf elasticsearch-6.8.0.tar.gz
    mv elasticsearch-6.8.0 es
    cp es/config/elasticsearch.yml{,.bak} (备份配置文件)
    chown -R elk.elk /data/soft/es

    5.2 准备配置文件

    vim es/config/elasticsearch.yml
    cluster.name: prod-sungoal         #自定义elk集群名
    node.name: prod-elk-1              #自定义节点名
    http.port: 9200
    #path.data: /path/to/data         (可选)
    #path.logs: /path/to/logs         (可选)
    

    5.3 配置文件参数注释

    cluster.name: test-ELK //集群名
    node.name: elk-01 //节点名
    path.data: /elk/elasticsearch/data //data存储路径
    path.logs: /elk/elasticsearch/logs //log存储路径
    bootstrap.memory_lock: true //锁住内存,不被使用到交换分区去
    network.host: 0.0.0.0 //监听地址
    http.port: 9200 //监听端口
    discovery.zen.ping.unicast.hosts: ["192.1.1.161"] //集群节点发现列表 写另外一台的ip
    discovery.zen.minimum_master_nodes: 2 //集群可做master的最小节点数
    

    5.4 修改jvm.option参数

    vim es/config/jvm.option
    -Xms2g
    -Xmx2g
    

    5.5 修改内核参数

    vim /etc/sysctl.conf              #修改JVM开开启的最大线程数,数值为设定的一半
    vm.max_map_count = 262144
    
    vim /etc/security/limits.conf     #修改打开文件句柄数
    root soft nofile 65535
    root hard nofile 65535
    * soft nofile 65535
    * hard nofile 65535  
    

    5.6 配置环境变量

    echo 'export PATH=/data/soft/es/bin:$PATH' > /etc/profile.d/es.sh
    . /etc/profile.d/es.sh
    echo $PATH
    

    5.7 启动es服务

    su - elk
    前台启动:/data/soft/es/bin/elasticsearch
    后台启动:nohup /data/soft/es/bin/elasticsearch >/data/logs/es.log &

    六、配置kibana

    6.1 解压二进制包

    tar -xf kibana-6.8.0-linux-x86_64.tar.gz
    mv kibana-6.8.0 kibana
    cp kibana/config/kibana.yml{,.bak}
    chown -R elk.elk /data/soft/kibana

    6.2 修改配置文件

    vim kibana/config/kibana.yml
    server.port: 5601
    server.host: "0.0.0.0"
    elasticsearch.hosts: ["http://localhost:9200"]     #指定es服务器的ip
    或elasticsearch.url: "http://192.1.1.160:9200"
    kibana.index: ".kibana"
    

    6.3 配置环境变量

    echo 'export PATH=/data/soft/kibana/bin:$PATH' > /etc/profile.d/kibana.sh
    . /etc/profile.d/kibana.sh
    echo $PATH 
    

    6.4 启动服务

    su - elk
    后台启动: nohup /data/soft/kibana/bin/kibana >/data/logs/kibana.log &
    

    七、配置logstash

    7.1 解压二进制包

    tar -xf logstash-6.8.0.tar.gz
    mv logstasg-6.8.0 logstasg
    cp logstasg/config/logstash.yml{,.bak}

    7.2 增加配置文件

    touch logstash_sg.conf (见同目录下文件)

    7.3 修改jvm.option

    vim logstash/config/logstash_sg.conf
    -Xms1g
    -Xmx1g
    

    7.4 配置环境变量

    echo 'export PATH=/data/soft/kibana/bin:$PATH' > /etc/profile.d/kibana.sh
    . /etc/profile.d/kibana.sh
    echo $PATH
    

    7.5 启动服务

    su - elk
    后台启动: nohup /data/soft/logstash/bin/logstash -f /data/soft/logstasg/config/logstash.conf  >/data/logs/logstash.log &
    

    八、设置elk开启自启

    8.1 elasticsearch服务配置文件

    cd /etc/init.d
    touch elasticsearch
    chmod +x elasticsearch
    vi elasticsearch并输入以下内容:
    #!bin/bash
    # chkconfig: 2345 21 89
    # description: elasticsearch
    
    # JAVA_HOME=/data/soft/jdk
    ES_HOME=/data/soft/es
    case $1 in
    start) sudo -iu elk $ES_HOME/bin/elasticsearch &;;
    *) echo "require start" ;;
    esac
    

    之后便可以用service elasticsearch start启动es服务了。

    8.2 logstash服务配置文件

    cd /etc/init.d
      touch logstash
      chmod +x logstash
      vi logstash并输入以下内容:
    #!/bin/bash
    # chkconfig: 2345 50 50
    # description: logstash
    
    LS_HOME=/data/soft/logstash
    case $1 in
    start)sudo -iu elk $LS_HOME/bin/logstash -f $LS_HOME/config &;;
    *) echo "require start";;
    esac
    

    之后便可以用service logstash start启动logstash服务了。

    8.3 Kibana服务配置文件

    cd /etc/init.d
      touch kibana
      chmod +x kibana
      vi kibana并输入以下内容:
    #!/bin/bash
    # chkconfig: 2345 98 02
    # description: kibana
    
    KIBANA_HOME=/data/soft/kibana
    case $1 in
    start) $KIBANA_HOME/bin/kibana &;;
    *) echo "require start";;
    esac
    

    之后便可以用service kibana start启动kibana服务了

    8.4 设置服务为自启动

    root身份下执行以下命令:
    chkconfig --add elasticsearch
    chkconfig --add logstash
    chkconfig --add kibana
    输入chkconfig --list,当发现一下服务存在时,说明自启动配置成功:
    
  • 相关阅读:
    [置顶] 移动应用不得不看的三张图
    重新签名apk文件(手工用命令行)
    o(n)解决问题:调整数组顺序是奇数位于偶数的前面
    安装DBMS_SHARED_POOL包
    sql server 实现sleep延时
    【Unity 3D】使用 2DToolkit 插件 制作2D精灵动画
    消息对话框(MessageBox)用法介绍
    java监控之ManagementFactory分析
    Java内存模型深度解析:总结--转
    Java内存模型深度解析:final--转
  • 原文地址:https://www.cnblogs.com/wangchengshi/p/12074467.html
Copyright © 2011-2022 走看看