Kibana使用
一 批量导入数据
1 使用_bulk批量导入数据
1)批量导入数据使用POST方式,数据格式为json,url编码使用data-binary
2)导入含有index配置的json文件
[root@room9pc01 ~]# gzip -d logs.jsonl.gz
[root@room9pc01 ~]# gzip -d shakespeare.json.gz
[root@room9pc01 ~]# curl -X POST "http://192.168.1.11:9200/_bulk" --data-binary @logs.jsonl
[root@room9pc01 ~]# curl -X POST "http://192.168.1.11:9200/_bulk" --data-binary @shakespeare.json
3)导入没有index配置的json文件,需要在url里面制定index和type
[root@room9pc01 ~]# gzip -d accounts.json.gz
[root@room9pc01 ~]# curl -X POST "http://192.168.1.11:9200/xixi/haha/_bulk" --data-binary @accounts.json
//索引是xixi,类型是haha,必须导入索引和类型,没有索引,要加上
二 数据批量查询
[root@room9pc01 ~]#curl -XGET 'http://192.168.1.11:9200/_mget?pretty' -d
'{
"docs":[
{
"_index":"shakespeare",
"_type:":"act",
"_id":0
},
{
"_index":"shakespeare",
"_type:":"line",
"_id":0
},
{
"_index":"xixi",
"_type:":"haha",
"_id":25
}
]
}'
三 Map映射
映射:创建索引的时候,可以预先定义字段的类型及相关属性
作用:使索引建立得更加细致和完善
分为:自动根据数据类型的动态映射和自定义字段的静态映射
四 Kibana部分
五 Kibana修改时间
六 Kibana数据展示
七 Kibana展示方式
Logstash
1)一个数据采集、加工处理以及传输的工具
2)特点:
所有类型的数据集中处理
不同模式和格式数据的正常化
自定义日志格式的迅速扩展
为自定义数据源轻松添加插件
一、Logstash 是java开发的,一个数据采集、加工处理以及传输的工具
二、安装Logstash
1 配置主机名
[root@logstash ~]# vim /etc/hosts
192.168.1.11 es1
192.168.1.12 es2
192.168.1.13 es3
192.168.1.14 es4
192.168.1.15 es5
192.168.1.25 logstash
192.168.1.120 web-apache
2 配置yum源
3 安装java-1.8.0-openjdk
4 安装logstash
[root@logstash ~]# yum -y install logstash-2.3.4-1.noarch.rpm
5 打开官方文档的网址
https://www.elastic.co/guide/en/logstash/current/index.html
################################################################
1 创建别名
[root@logstash ~]# vim /etc/bashrc
alias logstash="/opt/logstash/bin/logstash"
[root@logstash ~]# source /etc/bashrc
2 配置文件,添加插件
[root@logstash bin]# cd /opt/logstash/bin/
[root@logstash bin]# ./logstash-plugin list // 列出所有 插件
[root@logstash ~]# vim /etc/logstash/logstash.conf
input{
stdin{ codec => "json" } //input调用标准输入模块stdin,输入json格式
}
filter{ }
output{
stdout{ codec => "rubydebug" } //output调用标准输出模块stdout,rubydebug是调式
}
3 启动
[root@logstash logstash]# logstash -f /etc/logstash/logstash.conf
Settings: Default pipeline workers: 2
Pipeline main started //启动后,会卡住不动。回车可输入信息,Ctrl+C结束程序退出。
{"A":1,"B":2,"C":3} //输入json格式
{
"A" => 1,
"B" => 2,
"C" => 3,
"@version" => "1",
"@timestamp" => "2019-03-26T06:27:11.031Z",
"host" => "logstash"
}
4配置文件/etc/logstash/logstash.conf ,查找官方文档
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html
1)找到例子
input {
file {
id => "my_plugin_id" //键值对格式
}
}
并且添加到 :/etc/logstash/logstash.conf
2)找到Options,第三列是yes的必须配置,这里是yes 的只有path,其他为可选
[root@logstash bin]# vim /etc/logstash/logstash.conf
input{
stdin{ codec => "json" }
file{
path => ["/tmp/a.log"] //必须添加该模块
sincedb_path => "/var/logstash/since.db"
start_position => "beginning"
type => "messige"
}
}
filter{}
output{
stdout{ codec => "rubydebug" }
}
[root@logstash ~]# mkdir -p /var/logstash/since.db /tmp/a.log
[root@logstash ]# echo ${RANDOM} >> /tmp/a.log
[root@logstash bin]# logstash -f /etc/logstash/logstash.conf
path :表示将/tmp/a.log读入,该Input类型是数组,所以加中括号
sincedb_path:记录上一次读取文件到了哪一行哪个字节,避免重读或漏读
start_position :当指针记录文件不存在的时候,logstash的默认行为是不读取任何内容,设置为beginning是全部读取一遍。
type标签:读取出来的日志默认是不知道类型的。可以自动打上标签,
3)添加tcp和udp
tcp :模式有server 和client
默认是server,host是只监听的端口
[root@logstash bin]# vim /etc/logstash/logstash.conf
在input 的file下增加
input{
stdin{ codec => “json” }
file{
path => ["/tmp/a.log"]
sincedb_path => “/var/logstash/since.db”
start_position => “beginning”
type => “messige”
}
tcp{
mode => "server"
host => "0.0.0.0"
port => 8888
type => "tcplog"
}
udp{
port => 8888
type => "udplog"
}
[root@logstash bin]# logstash -f /etc/logstash/logstash.conf
在其他机器输入
[root@web-apache ~]# echo "hello " > /dev/tcp/192.168.1.25/8888
再查看可以看到以下信息
[root@logstash bin]# logstash -f /etc/logstash/logstash.conf
Settings: Default pipeline workers: 2
Pipeline main started
{
“message” => "hello ",
“@version” => “1”,
“@timestamp” => “2019-03-26T08:06:48.085Z”,
“host” => “192.168.1.120”,
“port” => 57482,
“type” => “tcplog”
4)在input 的file下增加
[root@logstash bin]# vim /etc/logstash/logstash.conf
syslog {
port => 514
}
[root@logstash bin]# logstash -f /etc/logstash/logstash.conf
在Web机上的系统日志,添加
[root@web-apache ~]# vim /etc/rsyslog.conf
local0.notice @@192.168.1.25:514 //local0.notice 接收到的信息发送给该主机
[root@web-apache ~]# logger -p local0.notice -t TESTLOG AAA //将AAA发送local0.notice
再查看可以看到以下信息查看
[root@logstash bin]# logstash -f /etc/logstash/logstash.conf
Settings: Default pipeline workers: 2
Pipeline main started
{
“message” => “AAA\n”,
“@version” => “1”,
“@timestamp” => “2019-03-26T08:15:39.000Z”,
“host” => “192.168.1.120”,
“priority” => 133,
“timestamp” => “Mar 26 16:15:39”,
“logsource” => “web-apache”,
“program” => “TESTLOG”,
“severity” => 5,
“facility” => 16,
“facility_label” => “local0”,
“severity_label” => “Notice”
}
5)filter grok插件
解析非结构化的日志数据插件
grok使用正则表达式把非结构化的数据结构化
转义可以用小括号:)
%{宏名称:自己的名称}
宏的路径:
三、在web-apache主机上安装filebeat
1 安装filebeat
2 修改filebeat.yml
路径:修改为apache访问的日志路径
ES 注释掉,改为logstash(有例子,将注释去掉并修改)
去掉注释:document_log : apache_log
[root@web-apache yum.repos.d]# grep -Pv ‘^\s*(#|$)’ /etc/filebeat/filebeat.yml
filebeat:
prospectors:
-
paths:
- /var/log/httpd/access_log
input_type: log
document_type: apache_log
registry_file: /var/lib/filebeat/registry
output:
logstash:
hosts: ["192.168.1.25:5044"]
shipper:
logging:
files:
rotateeverybytes: 10485760 # = 10MB
3修改logstash.conf,添加
[root@logstash bin]# vim /etc/logstash/logstash.conf
input{
stdin{ codec => “json” }
beats{
port => 5044
}
file{
…
output{
stdout{ codec => “rubydebug” }
if [type] == "apache_log"{
elasticsearch{
hosts => ["192.168.1.11:9200","192.168.1.12:9200"]
index => "apache_log"
flush_size => 2000
idle_flush_time => 10
}
}
}
4 打开另一终端查看5044是否成功启动
[root@logstash ~]# netstat -antup | grep 5044
5 浏览器访问Elasticsearch,有apachelog