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的日志信息

      

  • 相关阅读:
    Spring boot 整合mybatis
    验证码图片生成器
    Guava
    高并发环境下生成唯一流水号
    BP神经网络
    c# 利用反射获取属性名和值
    第一天开博,试试发个贴
    更改UISearchBar系统背景色方法
    IOS开发之UISearchBar应用
    textview根据文字行数自动变化大小
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12459465.html
Copyright © 2011-2022 走看看