zoukankan      html  css  js  c++  java
  • centos7部署elk日志系统

    一、创建Elk目录,下载软件压缩包

    登录系统后,进入opt目录,创建Elk文件夹

    [root@localhost opt]# cd /opt/
    [root@localhost opt]# mkdir ElK

    下载软件包

    #node.js
    wget https://nodejs.org/dist/v14.16.1/node-v14.16.1-linux-x64.tar.xz
    
    #jdk10
    wget https://repo.huaweicloud.com/java/jdk/10.0.1+10/jdk-10.0.1_linux-x64_bin.tar.gz
    
    #elasearch
    wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-linux-x86_64.tar.gz
    
    #logstash
    wget https://artifacts.elastic.co/downloads/logstash/logstash-7.12.0-linux-x86_64.tar.gz
    
    #kibana
    wget https://artifacts.elastic.co/downloads/kibana/kibana-7.12.0-linux-x86_64.tar.gz

    二、安装node和jdk
    解压上面下载的压缩包,命令如下:

    tar -xvf  node-v14.16.1-linux-x64.tar.xz
    tar -zxvf jdk-10.0.1_linux-x64_bin.tar.gz

    解压完成后可以看到 “node-v14.16.1-linux-x64” 和 “jdk-10.0.1” 两个文件夹,移动node到ElK文件夹下,

    mv node-v14.16.1-linux-x64 ./ElK

    配置jdk和node的系统PATH

    vim /etc/profile
    #java
    export JAVA_HOME=/opt/jdk1.8.0_181
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
    
    #nodejs
    export NODE_HOME=/opt/ElK/node-v14.16.1-linux-x64
    export PATH=$PATH:$NODE_HOME/bin

    保存退出后,执行: source /etc/profile 重新加载系统文件。验证是否成功:

    [root@localhost ElK]# node -v
    v14.16.1
    [root@localhost ElK]# java -version
    java version "10.0.1" 2018-04-17
    Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10)
    Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

    出现上面输出说明node和jdk配置成功了。

    三、安装elasearch

    1.解压压缩包,把解压之后的文件移动到ElK目录下。

    tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz
    mv elasticsearch-7.12.0 ./ElK

    2.编辑配置文件 config/elasticsearch.yml。

    #打开以下配置并修改
    cluster.name: myelasearch
    network.host: 0.0.0.0  #用于外部访问
    http.port: 9200
    node.name: node-1
    cluster.initial_master_nodes: ["node-1"]
    
    #文件结尾添加
    http.cors.enabled: true
    http.cors.allow-origin: "*"

    3.修改系统配置文件sysctl.conf,修改完记得重启系统!!!

    vi /etc/security/limits.conf
    #在文件末尾添加:
    * soft nofile 65535
    * hard nofile 65535
    sudo vi /etc/sysctl.conf
    #在文件末尾添加:
    vm.max_map_count=262144
    reboot #重启系统 
    ulimit -n    #查看修改情况

    4.elasticsearch在centos系统下不允许已root用户启动,所以我们创建一个新的用户“elasticsearch”。

    #创建用户
    adduser elasticsearch
    #密码随便输入
    passwd elasticsearch
    #给文件夹赋予用户权限
    chown -R elasticsearch /opt/
    切换用户
    su elasticsearch

    5.启动elasticsearch

    #显示启动过程
    ./bin/elasticsearch
    #后台启动
    ./bin/elasticsearch -d    后台启动

    第一次我选择的显示启动过程,启动成功后,重新打开一个窗口,看到以下返回说明elasticsearch 启动成功了,然后 “Ctrl +c”停用服务,改用后台启动。

    [root@localhost config]# curl 127.0.0.1:9200
    {
      "name" : "node-1",
      "cluster_name" : "myelasearch",
      "cluster_uuid" : "8t26YSY_Tly36t8EsdswmA",
      "version" : {
        "number" : "7.12.0",
        "build_flavor" : "default",
        "build_type" : "tar",
        "build_hash" : "78722783c38caa25a70982b5b042074cde5d3b3a",
        "build_date" : "2021-03-18T06:17:15.410153305Z",
        "build_snapshot" : false,
        "lucene_version" : "8.8.0",
        "minimum_wire_compatibility_version" : "6.8.0",
        "minimum_index_compatibility_version" : "6.0.0-beta1"
      },
      "tagline" : "You Know, for Search"
    }
    [root@localhost config]#

     想要停止服务时,输入 “ps -ef | grep elasticsearch”,然后 kill 对应的进程id。

    [root@localhost logs]# ps -ef | grep elasticsearch
    root      1785  1743  0 14:53 pts/0    00:00:00 su elasticsearch
    elastic+  1930     1  3 14:54 pts/0    00:05:12 /opt/jdk-10.0.1/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,COMPAT --add-opens=java.base/java.io=ALL-UNNAMED -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io.tmpdir=/tmp/elasticsearch-2768486000531970052 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -Xlog:gc*,gc+age=trace,safepoint:file=logs/gc.log:utctime,pid,tags:filecount=32,filesize=64m -Xms1024m -Xmx1024m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/opt/ElK/elasticsearch-7.12.0 -Des.path.conf=/opt/ElK/elasticsearch-7.12.0/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /opt/ElK/elasticsearch-7.12.0/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
    elastic+  1945  1930  0 14:54 pts/0    00:00:00 /opt/ElK/elasticsearch-7.12.0/modules/x-pack-ml/platform/linux-x86_64/bin/controller
    root      2857  1764  0 17:20 pts/1    00:00:00 grep --color=auto elasticsearch
    [root@localhost logs]# kill 1930

    重启服务可能遇到的问题:TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block,可以参考下面配置。

    关键的参数cluster.routing.allocation.disk.threshold_enabled

    (es可以根据磁盘使用情况来决定是否继续分配shard。默认设置是开启的).

    为了在本地单机上测试,我自己电脑磁盘空间剩下没多少了,修改elasticsearch.yml,设置cluster.routing.allocation.disk.threshold_enabled: false。

    如果后续虚拟机磁盘空间不够,启动失败了可以删除了data,logs里的文件。

    四、安装logstash

    解压压缩包,把解压之后的文件移动到ElK目录下,编辑配置文件config/logstash.yml

    #打开并修改以下配置,用于外部访问
    http.host: 0.0.0.0

    在bin目录下创建 logstash.conf 文件,并写入下面代码,保存退出。

    input {
      file {
            path => ["/opt/logs/*.log"]
            codec => json {
                    charset => "UTF-8"
            }
     }
    }
    
    output {
      elasticsearch {
        hosts => ["http://127.0.0.1:9200"]
        index => "ceshi-%{+YYYY.MM.dd}"
        #user => "elastic"
        #password => "changeme"
      }
    }

    下面两种方式选一种启动logstash。

    ./bin/logstash -f ./bin/logstash.conf    #显示执行过程
    nohup ./bin/logstash -f ./bin/logstash.conf &    #后台执行

    启动成功后,验证:

    [root@localhost bin]# curl 127.0.0.1:9600
    {"host":"localhost.localdomain","version":"7.12.0","http_address":"0.0.0.0:9600","id":"d562e790-449c-471a-a85f-0beaf4744866","name":"localhost.localdomain","ephemeral_id":"520d56fa-bdd1-438b-a3ff-8afe292f55fe","status":"green","snapshot":false,"pipeline":{"workers":1,"batch_size":125,"batch_delay":50},"build_date":"2021-03-18T05:13:33Z","build_sha":"4399d72a9afe6f06db8adbaad8030e5b111e86b6","build_snapshot":false}[root@localhost bin]#

    如果看到上面输出,说明成功了。

    五.安装kibana

    解压压缩包,把解压之后的文件移动到ElK目录下,编辑配置文件config/kibana.yml。

    #端口
    server.port: 5601
    #外部访问
    server.host: "0.0.0.0"
    #调整为中文
    i18n.locale: "zh-CN"

    选择一种方式启动kibana。

    #显示过程启动
    ./bin/kibana
    #后台启动
    nohup ./bin/kibana

    启动成功后,用windows宿主机访问虚拟机ip+5601 访问kibana。出现下面界面启动成功。

    六、创建索引模式

    在上面logstash配置文件(logstash.conf)中path目录下创建一个日志文件,随便输入一些内容。

    [root@localhost logs]# cd /opt/logs
    [root@localhost logs]# vim test.log
    [root@localhost logs]# 

    点击“创建索引模式”,创建索引。

     成功后点击左侧“Discover”,进入搜索界面,ELK日志系统搭建完成。

    netstat -lnp | grep 5601 查看端口占用情况。

    kill -9 端口号 中断进程。

  • 相关阅读:
    Linux 从4.12内核版本开始移除了 tcp_tw_recycle 配置。 tcp_max_tw_buckets TIME-WAIT 稳定值
    https://www.cnblogs.com/wclwcw/p/7515515.html
    Builder 模式
    网络优化之net.ipv4.tcp_tw_recycle和tcp_tw_reuse参数
    13 | 实战:单机如何实现管理百万主机的心跳服务? https://time.geekbang.org/column/article/240656
    V2版的接口在V3版里面都能找到对应接口 数据结构
    。SLI,Service Level Indicator,服务等级指标,其实就是我们选择哪些指标来衡量我们的稳定性。而 SLO,Service Level Objective,服务等级目标,指的就是我们设定的稳定性目标,比如“几个 9”这样的目标。
    【自愈能力集】:基于原子化服务能力封装,目前已实现绕行开关、域名切换、服务隔离等多项服务能力,并在生产中使用。紧密结合故障场景,不断更新自愈能力,通过各个能力的有机组合,能力集已见雏形;
    阿里云弹性公网IP那些事 阿里云云栖号 6月1日 弹性公网IP是独立的公网IP资源,可以绑定到阿里云专有网络VPC类型的ECS、NAT网关、私网负载均衡SLB上,并可以动态解绑,实现公网IP和ECS、NAT网关、SLB的解耦,满足灵活管理的要求。阿里云弹性公网IP那些事 阿里云云栖号 6月1日 弹性络VPC类型的E
    Linux下nf_conntrack(最全面)_董明磊-CSDN博客_nf_conntrack https://blog.csdn.net/qq_35299863/article/details/79530732
  • 原文地址:https://www.cnblogs.com/wjs2019/p/14690727.html
Copyright © 2011-2022 走看看