zoukankan      html  css  js  c++  java
  • ELK之二----kibana部署及logstash单(多)日志收集

    一、安装部署Kibana插件

    Kibana官网下载地址:https://www.elastic.co/cn/downloads/past-releases#kibana

    1、介绍

    kibana 是您走进 Elastic Stack 的窗口,Kibana 让您能够可视化 Elasticsearch 中的数据并操作Elastic Stack,因此您可以在这里解开任何疑问:例如,为何会在凌晨 2:00 被传呼,雨水会对季度数据造成怎样的影响。

    ① 一张图片胜过千万行日志

      Kibana 让您能够自由地选择如何呈现您的数据。或许您一开始并不知道自己想要什么。不过借助Kibana 的交互式可视化,您可以先从一个问题出发,看看能够从中发现些什么。

    ② 从基础入手

      Kibana 核心搭载了一批经典功能:柱状图、线状图、饼图、环形图,等等。它们充分利用了Elasticsearch 的聚合功能。

    ③ 将地理数据融入任何地图

      利用我们的 Elastic Maps Services 来实现地理空间数据的可视化,或者发挥创意,在您自己的地图上实现自定义位置数据的可视化。

    ④ 时间序列也在菜单之列

      您可以利用 Timelion,对您 Elasticsearch 中的数据执行高级时间序列分析。您可以利用功能强大、简单易学的表达式来描述查询、转换和可视化。

    ⑤ 利用 graph 功能探索关系

      凭借搜索引擎的相关性功能,结合 graph 探索,揭示您 Elasticsearch 数据中极其常见的关系。

    2、安装部署kibana

    1、下载kibaba安装包并安装

    [root@elk-1 ~]# yum install kibana-6.8.1-x86_64.rpm -y
    

    2、修改kibana配置文件/etc/kibana/kibana.yml

    server.port: 5601  # 默认的监听端口5601
    server.host: "0.0.0.0"  # 监听的IP地址
    elasticsearch.hosts: ["http://192.168.7.101:9200"]  # 对端elasticsearch集群主机的IP地址
    i18n.locale: "zh-CN"          # 添加此项支持汉化版
    

    3、在另一台集群主机安装kibana,并修改对端的elasticsearch主机配置文件,将hosts的IP地址指向另一台集群的elasticsearch主机的IP地址。

    server.port: 5601  # 默认的监听端口5601
    server.host: "0.0.0.0"  # 监听的IP地址
    elasticsearch.hosts: ["http://192.168.7.100:9200"]  # 对端elasticsearch集群主机的IP地址
    i18n.locale: "zh-CN"          # 添加此项支持汉化版
    

    4、启动kibana服务,并设置为开机启动

    [root@elk-1 ~]# systemctl start kibana
    [root@elk-1 ~]# systemctl enable  kibana
    

    5、查看访问的页面:192.168.7.100:5601,实际访问的是192.168.7.101主机的信息,同理访问192.168.7.101:5601,访问的就是192.168.7.100主机的信息。

    二、管理kibana

    1、添加数据到kibana

    1、我们先开创建一个示例数据,查看是否集群能够同步数据:在kibana--->添加指标数据------>样例数据,进行添加数据

     2、查看两个网页的数据是否存在,点击Discover,查看192.168.7.100有数距

    3、查看192.168.7.101,也存在数据,此时就已经实现了集群备份的功能。

    4、登陆head插件,此时也可以看到两个集群上的数据信息

    4、在elasticsearch主机上查看创建的数据

    [root@elk-1 ~]# ll /data/esdata/nodes/0/indices/
    total 0
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 2XedLDp7Sym8HNzdF8pGTQ
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 ASx4EO3lSkuXndRlcWNB5g
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:46 jfOVaC5STCmKYudya7paMg
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ
    

    5、在elasticsearch集群主机上查看数据

    [root@elk-2 ~]# ll /data/esdata/nodes/0/indices/
    total 0
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 2XedLDp7Sym8HNzdF8pGTQ
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 ASx4EO3lSkuXndRlcWNB5g
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 di2WPFxNTNOAjx8-XcKxWw
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:42 jfOVaC5STCmKYudya7paMg
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 10:57 QeV47qM9Q0unbIAjQVqHTQ
    

    2、管理索引

    1、此时删除数据,一定要在管理界面删除,不能在elasticsearch主机上删除数据,否则会导致数据不同步。

     2、删除一个数据后,然后在elasticsearch两个主机集群分布上查看信息,两个集群的内容都剩五个文件。

    [root@elk-2 ~]# ll /data/esdata/nodes/0/indices/
    total 0
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 95saCfoiSKKdFgNcZTxD1g
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 AD9HqYcQQ0Czds0Rwc9k-A
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:36 hPSzBwspRuycvSp8886DbA
    drwxr-xr-x 4 elasticsearch elasticsearch 29 Mar 12 11:39 r5BNakB1Q6-WUgcLL1eMug
    

    三、安装部署logstash

    1、介绍

    (1)定义

    查看官方文档 https://www.elastic.co/cn/products/logstash

    ① 官方介绍:Logstash is an open source data collection engine with real-time pipelining capabilities。简单来说logstash就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端传输到管道的输出端;与此同时这根管道还可以让你根据自己的需求在中间加上滤网,Logstash提供里很多功能强大的滤网以满足你的各种应用场景。

    ② Logstash的事件(logstash将数据流中等每一条数据称之为一个event)处理流水线有三个主要角色完成:inputs –> filters –> outputs:

    • inpust:必须(标准输入),负责产生事件(Inputs generate events),常用:File、syslog、redis、beats(如:Filebeats)
    • filters:可选,负责数据处理与转换(filters modify them),常用:grok、mutate、drop、clone、geoip
    • output:必须(标准输出),负责数据输出(outputs ship them elsewhere),常用:elasticsearch、file、graphite、statsd

    2、安装JDK并配置JDK环境变量

    1、logstash也依赖于java-JDK包,因此我们也要将jdk安装到logstash主机上。

    [root@logstash src]# tar  xvf jdk-8u212-linux-x64.tar.gz   # 解压jdk包
    [root@logstash src]# ln -sv /usr/local/src/jdk
    jdk1.8.0_212/               jdk-8u212-linux-x64.tar.gz   
    [root@logstash src]# ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk  # 创建jdk软链接
    ‘/usr/local/jdk’ -> ‘/usr/local/src/jdk1.8.0_212/’
    [root@logstash src]# ln -sv /usr/local/jdk/bin/java /usr/bin/  # 创建java软链接
    ‘/usr/bin/java’ -> ‘/usr/local/jdk/bin/java’
    

    2、配置JAVA-JDK的环境变量

    [root@logstash src]# vim /etc/profile.d/jdk.sh  # 配置环境变量
    export HISTTIMEFORMAT="%F %T `whoami`"
    export export LANG="en_US.utf-8"
    export JAVA_HOME=/usr/local/jdk
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    [root@logstash src]# . /etc/profile.d/jdk.sh  # 使环境变量生效
    [root@logstash src]# java -version  #查看JAVA版本
    java version "1.8.0_212"
    Java(TM) SE Runtime Environment (build 1.8.0_212-b10)
    Java HotSpot(TM) 64-Bit Server VM (build 25.212-b10, mixed mode)
    [root@logstash src]# echo $JAVA_HOME  #查看此时的JDK环境变量路径
    /usr/local/jdk
    

    3、安装logstash

    官网下载路径:https://www.elastic.co/cn/downloads/logstash

    1、安装logstash包,logstash需要的内存也很大,根据实际来设置,我这里分配3G内存

    [root@logstash src]# yum install logstash-6.8.1.rpm -y  # 安装logstash
    [root@logstash ~]# chown logstash.logstash /usr/share/logstash/data/queue/ -R  #权限更改为 logstash 用户和组,否则启动的时候日志报错

    2、指定logstash的环境变量

    [root@logstash conf.d]# vim /etc/profile.d/logstash.sh
    export PATH=$PATH:/usr/share/logstash/bin/
    
    [root@logstash conf.d]# . /etc/profile.d/logstash.sh

    4、开启logstash前,测试logstash

    实例一:标准输入和标准输出测试

    [root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input {  stdin{} } output{ stdout { codec => rubydebug }}'  # 安装完logstash时,需要对logstash进行测试
    hello  #输入一个hello
    {
              "host" => "logstash", #主机名
           "message" => "hello",   #输入的消息
          "@version" => "1",  # 版本
        "@timestamp" => 2020-03-12T06:44:48.693Z  #当前时间
    }
    

    实例二:测试输入数据

    [root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/linux.txt"}}'
    hello
    

    此时的hello信息就会输入到/tmp/linux.txt文件中

    {"@timestamp":"2020-03-12T06:54:46.889Z","host":"logstash","@version":"1","message":"hello"}
    

    实例三:测试输出到elasticsearch

    [root@logstash conf.d]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["http://192.168.7.100:9200"] index => "linux-test-%{+YYYY.MM.dd}"}}'
    
    hello

    此时可以在head插件的网页上查看创建的文件

    然后在kibana网页上查看此时创建的文件:管理---->索引模式----->创建索引模式

    下一步:

     2、然后就可以在discover能查看到自己创建的文件信息

     实例四:收集单系统日志并输出至文件

    1、在/etc/logstash/conf.d目录下创建一个收集/var/log/messages的系统日志文件:linux.conf

    [root@logstash conf.d]# pwd
    /etc/logstash/conf.d
    [root@logstash conf.d]# vim linux.conf 
    input {
      file {
       path => "/var/log/messages"
       start_position => "beginning"
       stat_interval => 3  # 间隔时间3s.
       type => "messagelog"
      }
    
    }
    
    output {
      elasticsearch {
        hosts => ["192.168.7.100:9200"]
        index => "messagelog-7-100-%{+YYYY.MM.dd}"
      }
    
      #stdout {
      #codec => "rubydebug" #最开始测试输入输出使用
      #}
    
    }
    

    2、测试语法是否存在问题

    [root@logstash conf.d]# logstash -f /etc/logstash/conf.d/linux.conf  -t
    WARNING: Could not find logstash.yml which is typically located in $LS_HOME/config or /etc/logstash. You can specify the path using --path.settings. Continuing using the defaults
    Could not find log4j2 configuration at path /usr/share/logstash/config/log4j2.properties. Using default config which logs errors to the console
    [WARN ] 2020-03-12 16:09:51.259 [LogStash::Runner] multilocal - Ignoring the 'pipelines.yml' file because modules or command line options are specified
    Configuration OK  #测试语法,显示OK,说明没问题。
    [INFO ] 2020-03-12 16:10:04.705 [LogStash::Runner] runner - Using config.test_and_exit mode. Config Validation Result: OK. Exiting Logstash
    

    3、由于/var/log/messages只有root的属主有读写权限,需要将此文件的权限改为644,使文件在普通用户启动logstash时,有读取的权限

    [root@logstash conf.d]# chmod 644 /var/log/messages 
    [root@logstash conf.d]# ll /var/log/messages 
    -rw-r--r--. 1 root root 1101911 Mar 12 16:21 /var/log/messages
    

    4、启动logstash服务

    [root@logstash conf.d]# systemctl start logstash  #启动logstash服务
    [root@logstash conf.d]# logstash -f linux.conf   # 执行编辑的logstash收集日志的文件

    可以看到logstash已经启动起来。

    5、查看elasticsearch网页上收集到的messages日志信息:管理---->索引模式---->创建索引模式-

     6、然后在discover上进行查看此时的日志文件信息

     实例五:收集多日志并输出至文件

    1、在logstash主机上安装nginx服务,并启动

    [root@logstash conf.d]# yum install nginx -y
    [root@logstash conf.d]# chmod 644 /var/log/nginx/access.log 
    [root@logstash conf.d]# systemctl start nginx

    2、修改logstash的配置文件

    [root@logstash conf.d]# pwd
    /etc/logstash/conf.d
    
    [root@logstash conf.d]# vim linux.conf
      file {
       path => "/var/log/messages"
       start_position => "beginning"
       stat_interval => 3
       type => "messagelog"
      }
    
      file {
       path => "/var/log/nginx/access.log"
       start_position => "beginning"
       stat_interval => 3
       type => "nginx-log"
      }
    
    }
    
    output {
      if [type] == "messagelog" {
        elasticsearch {
        hosts => ["192.168.7.100:9200"]
        index => "messagelog-7-100-%{+YYYY.MM.dd}"
      }}
    
      if [type] == "nginx-log" {
        elasticsearch {
        hosts => ["192.168.7.100:9200"]
        index => "nginx-log-7-100-%{+YYYY.MM.dd}"
      }}
    }

    3、修改完以上的配置文件,重新启动logstash服务:systemctl  restart  logstash

      测试配置文件是否正常,显示OK就说明提取log没问题

    4、执行修改的配置文件,显示successfuliy,说明执行文件正常。

    [root@logstash conf.d]# logstash -f linux.conf 
    

    5、在kibana网页上查看此时添加的nginx-log日志收集文件,创建索引模式

    6、在discover选项查看此时已经存在了nginx-log的日志信息

      

  • 相关阅读:
    Java 泛型 泛型的约束与局限性
    Java 泛型 泛型方法
    Java 泛型 泛型数组
    Java 泛型 协变性、逆变性
    Java 泛型 协变式覆盖和泛型重载
    Java 泛型 泛型代码和虚拟机
    Insertion Sort List
    Remove Duplicates from Sorted List II
    String to Integer (atoi)
    SpringMvc源码入门
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12459465.html
Copyright © 2011-2022 走看看