虚拟化容器,大数据,DBA,中间件,监控。

ELK之二----kibana部署及logstash单(多)日志收集

10 03月
作者:admin|分类:大数据

一、安装部署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的日志信息

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

 

浏览599 评论0
返回
目录
返回
首页
ELK之四-----logstash收集nginx日志及tcp日志 ELK之一-----Elasticsearch介绍与部署