大型架构及配置技术-04 Kibana和Logstash

一.Kibana使用

1 Kibana

1.1Kibana 安装与配置

Kibana: 数据可视化平台工具
特点:
灵活的分析和可视化平台
实时总结流量和数据的图表
为不同的用户显示直观的界面
即时分享和嵌入的仪表盘
Kibana安装:
Kibana的安装非常简单,我们使用rpm方式安装,Kibana默认安装在/opt/kibana下面,配置文件在/opt/kibana/config/kibana.yml,配置完成后启动服务,访问web页面5601端口:http://192.168.1.56:5601/

[root@kibana ~]# yum -y install kibana
[root@kibana ~]# vim /opt/kibana/config/kibana.yml 
  2 server.port: 5601   //监听端口
  5 server.host: "0.0.0.0"    //监听地址,0.0.0.0 代表所有
 15 elasticsearch.url: "http://es1:9200"  //要先配置/etc/hosts文件
 23 kibana.index: ".kibana"  //库:存放用户信息
 26 kibana.defaultAppId: "discover"  //默认首页
 53 elasticsearch.pingTimeout: 1500    
 57 elasticsearch.requestTimeout: 30000  //请求超时
 64 elasticsearch.startupTimeout: 5000    //启动超时

[root@kibana ~]# systemctl enable kibana
Created symlink from /etc/systemd/system/multi-user.target.wants/kibana.service to /usr/lib/systemd/system/kibana.service.
[root@kibana ~]# systemctl start kibana
[root@kibana ~]# netstat -tunlp | grep 5601
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5601            0.0.0.0:*                    

1.2 Kibana页面

1.浏览器访问kibana,如图所示

[root@room9pc01 ~]$ firefox 192.168.1.56:5601

Kibana图1
2.点击status,查看是否安装成功
Kibana图2
3.用head插件访问会有.Kibana的索引信息:

[root@room9pc01 ~]$ firefox http://192.168.1.55:9200/_plugin/head

kibana图3

1.3 使用Kibana查看数据是否导入成功

1.数据导入后查看logs是否导入成功,如图:

[root@room9pc01 ~]$ firefox http://192.168.1.55:9200/_plugin/head

在这里插入图片描述
2.kibana导入数据

[root@room9pc01 ~]$ firefox  http://192.168.1.56:5601

在这里插入图片描述
3.成功创建会有logstash-*:
在这里插入图片描述
4.导入成功后选择Discover:

在这里插入图片描述
这里没有数据是因为导入日志的时间端不对,默认配置是最近15分钟,在右上角可以修改时间来显示
5.kibana修改时间
在这里插入图片描述
6.选择Absolute
在这里插入图片描述
7选择时间:例如2015-5-15到2015-5-22:
在这里插入图片描述
8.查看结果:
在这里插入图片描述
注:这里可以在图表中通过鼠标左键点击拖拽选择具体要显示的数据,可以将空白的过滤掉
在这里插入图片描述
9.除了柱状图,Kibana还支持多种展示方式
在这里插入图片描述
10.做一个饼图,选择Pie chart
在这里插入图片描述
11.选择from a new serach:
在这里插入图片描述
12,选择Spilt Slices
在这里插入图片描述
13.选择Trems,Memary
在这里插入图片描述
14 结果如图
在这里插入图片描述
15.保存后可以在Dashboard查看
在这里插入图片描述

二.Logstash配置扩展插件

1.Logstash是什么

是一个数据采集,加工处理以及传输的工具
特点:
所有类型的数据集中化处理
不同模式和格式数据的正常化
自定义日志格式的迅速扩展
为自定义数据源轻松添加插件

2.Logstash安装

2.1Logstash安装

Logstash安装依赖java环境,需要安装java-1.8.0-openjdk
Logstash没有配置文件,需要自己手动配置
Logstash安装在/opt/logstash目录下

# yum -y install logstash

2.2 Logstash工作结构:

{数据源}==> 
			input{ }  ==>
						filter{  } ==>
									output{ } ==>
									 			  {ES}		    			

2.3 Logstash类型及条件判断:

类型实例
布尔值类型ssl_enable => true
字节类型bytes => “1Mib”
字符串类型name => “xkops”
数值类型port => 22
数组match => [“datetime”,“UNIX”]
哈希options => {k = “v”,k2 => “v”}
编码解码codec => “json”
路径file_path => “/tmp/filename”
注释#

Logstash条件判断:

条件符号
等于==
不等于!=
小于<
大于>
小于等于<=
大于等于>=
匹配正则=~
不匹配正则!~
包含in
不包含not in
and
or
非与nand
非或xor
复合表达式()
取反符合!()

2.4 Logstash的第一个配置文件

/etc/logstash/logstash.conf

[root@logstash ~]# cd /etc/logstash/
[root@logstash logstash]# touch logstash.conf
[root@logstash logstash]# vim logstash.conf
input{    //标准输入
  stdin{}
}
filter{    //过滤器为空
}
output{    //标准输出
  stdout{}
}

//启动并验证
[root@logstash logstash]# /opt/logstash/bin/logstash -f /etc/logstash/logstash.conf 
Settings: Default pipeline workers: 2
Pipeline main started
Hello World
2018-10-16T03:03:10.808Z Hello World   

2.5 插件

1.Logstash插件,上述配置文件使用了logstash-input-stdin和logstash-output-stdout两个插件,Logstash还有filter和codec类插件,查看插件的方式是:

[root@logstash ~]# /opt/logstash/bin/logstash-plugin list
logstash-codec-collectd
logstash-codec-dots
logstash-codec-edn
logstash-codec-edn_lines
logstash-codec-es_bulk
logstash-codec-fluent
logstash-codec-graphite
logstash-codec-json
......

Logstash插件及文档地址
https://github.com/logstash-plugins
https://www.elastic.co/guide/en/logstash/current/index.html

例如.Logstash配置从标准输入读取输入源,然后将结果输出到屏幕:

[root@logstash ~]# vim /etc/logstash/logs.conf
input{
  stdin{}  //标准输入
}
filter{ }
output{
  stdout{}   //标准输出
}
[root@logstash logstash]# /opt/logstash/bin/logstash -f /etc/logstash/logs.conf   //启动
Settings: Default pipeline workers: 2
Pipeline main started
test   //用键盘输入"test"
2019-10-17T11:47:20.264Z logstash test  //屏幕显示"test"

2.codec类插件
常用的插件:plain,json,json_lines,rubydebug,multiline等
使用上述例子,这次输入json数据,然后设置输入源的codec是json,在输出的时候选择rubydebug,输入普通数据和json数据对比.

[root@logstash ~]# vim /etc/logstash/logs.conf
input{
  stdin{ codec => "json"}  //json输入
}
filter{ }
output{
  stdout{ codec => "rubydebug"}   //rubydebug输出
}
[root@logstash logstash]# /opt/logstash/bin/logstash -f /etc/logstash/logs.conf 
Settings: Default pipeline workers: 2
Pipeline main started
abcde  //输入普通数据
{
       "message" => "abcde",
          "tags" => [
        [0] "_jsonparsefailure"
    ],
      "@version" => "1",
    "@timestamp" => "2019-10-17T11:52:28.201Z",
          "host" => "logstash"
}
{"a":1,"c":3,"b":2}  //输入json数据
{
             "a" => 1,
             "c" => 3,
             "b" => 2,
      "@version" => "1",
    "@timestamp" => "2019-10-17T11:54:43.571Z",
          "host" => "logstash"
}


3.input file插件

input{
  file {
    path => ["/tmp/a.log","/var/tmp/b.log"]   //输入文件路径,必写
  }
}
filter{
}
output{
  stdout{ codec => "rubydebug" }
}
[root@logstash logstash]# touch /tmp/a.log /var/tmp/b.log

[root@logstash logstash]# echo aaa >> /tmp/a.log 
[root@logstash logstash]# echo bbbb >> /var/tmp/b.log 
[root@logstash logstash]# logstash -f logstash.conf 
Settings: Default pipeline workers: 2
Pipeline main started
{
       "message" => "aaa",
      "@version" => "1",
    "@timestamp" => "2019-10-16T06:20:42.492Z",
          "path" => "/tmp/a.log",
          "host" => "logstash"
}
{
       "message" => "bbbb",
      "@version" => "1",
    "@timestamp" => "2019-10-16T06:20:42.550Z",
          "path" => "/var/tmp/b.log",
          "host" => "logstash"
}


input{
  file {
    path => ["/tmp/a.log","/var/tmp/b.log"]
    sincedb_path => "/var/lib/logstash/sincedb"  //记录读取文件的位置
    start_position => "beginning"   //配置第一次读取文件从什么地方开始,只有"beginning"和"end"
  }
}
filter{ 
}
output{
  stdout{ codec => "rubydebug" }
}

4.filter grok 插件
解析各种非结构化的日志数据插件;
grok 使用正则表达式把非结构化的数据结构化;
在分组匹配,正则表达式需要根据具体数据结构编写;
虽然编写困难,但使用性极广;
几乎合一应用于各类数据

  grok{
     	 match => ["message",(?<key>reg),"%{IP:clientip}"]
  }

grok正则分组匹配
匹配ip时间戳和请求方法:

match => { "message" => "(?<ip>[0-9.]+)(?<ident>[0-9a-z\-]+)(?<auth>[0-9a-z\-]+)\[(?<time>.+)\]\"(?<verb>[A-Z)+(?<url>)\S+(?<proto>[A-Z]+)\/(?<ver>[0-9.]+)\"(?<rc>\d+)(?<size>\d+)\"(?<ref>\S)\"\"(?<agent>[^\"]+) \""}

使用正则宏:

match => { "message" => "%{IP:client } %{WORK:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}" }

最终版本

match => { "message" => "%{COMBINEDAPACHELOG}" }

output ES 插件

if [type] == "apache_log"{
    elasticsearch {
      hosts => ["192.168.1.51:9200","192.168.1.52:9200","192.168.1.53:9200"]
      index => "filelog"
      flush_size => 2000   //刷新流量大小
      idle_flush_time => 10   //刷新时间
    }
}

调试成功后,把数据写入ES集群

input filebeats插件:

	beats {
		port  => 5044
  	}

这个插件主要用来接受beats类软件发送过来的数据,由于Logstash依赖java环境,而且占用资源非常大,因此会使用更轻量的filebeat替代.
filebeat安装与配置:
使用rpm安装filebeat
#yum -y install filebeat
修改配置文件/etc/filebeat/filebeat.yml
设置开机运行:
#systemctl enable filebeat
开启服务:
#systemctl start filebeat

修改配置文件/etc/filebeat/filebeat.yml

paths:
    - /root/logs.json
    document_type: weblog
......
paths:
 	- /root/accounts.json
 	document_type: account
output:
  logstash:
    hosts:["192.168.1.57:5044"]

[root@web filebeat]# cd /etc/filebeat
[root@web filebeat]# grep -Pv "^(\s*#|$)" filebeat.yml
filebeat:
  prospectors:
    - 
      paths:   #以paths为单位可以写多组
        - /var/log/httpd/access log
      input_type: log
      document_type: apache_log
    - 
      paths:
        - /root/accounts.json log
      input_type: log
      document_type: json_log
  registry_file: /var/lib/filebeat/registry
output:
  logstash:
    hosts:["192.168.1.57:5044"]
shipper:
logging:
  files:
    rotateeverybytes: 10485760 # = 10MB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值