搜索而生,网站、应用、文档、企业级搜索、地理位置、日志、nginx、商业分析
特点- 横向拓展能力
- 极限性能(毫秒级返回结果)
- 相关性,(输入abc会出来跟abc相关的)
python可以使用RESTful APi 通过端口9200进行通信也可以用curl
增删改查curl -X' :// : / ? ' -d ''
在kibana中的Dev Tools中的console控制台就可以创建数据
创建索引 索引名/type/id获取POST twitter/_doc/1
{
‘user’:‘GR’,
“city”:“beijing”,
“province”:beijing ,
‘location’:{
‘lat’:‘219.11’,
‘lon’:‘111’
}
}
修改(不是简单的替换字段,是替换库)GET twitter/_doc/1
PUT twitter/_doc/1
{
‘user’:‘GR’,
}
or
删除POST teitter/_updeat_by_query
{
“script”:{
“source”:“ctx._source.city=params.city;ctx._source=params.province;”,
“lang”:“painless”,
“params”:{
“city”:“上海”
“province”:“上海”
}
},
“quert”:{
“match”:{
“user”:“GR”
}
}
}
DELETE teitter
1中的index代表的就是对2进行插入(生成索引),这个index也可以是put(修改)、delete(删除)下面是文档内容,json
查看表结构GET twitter/_mapping
有的时候会分析错。要重新配置_mapping,先删除这个twitter然后
PUT teitter
{
“srttings”:{“number_of_shards”:1}
}
再利用mapping接口重新定义
注意location的type 这个时候在去查看 就正确了, 然后再把数据加进去
查询复合查询GET twitter/_search
{
“query”:{“match”:{“city”:“北京”}}
}
这里的must可以更改为“must_not”
计数GET twitter/_search{
“query”:{"bool:
{“must”:[
{“match”:{“city”:“北京”}},
{“match”:{“age”:“30”}}]}"}
}
基于地理位置查询GET twitter/_count{
“query”:{"bool:
{“should”:[
{“match”:{“city”:“北京”}},
{“match”:{“age”:“30”}}]}"}
}
范围查询
关联搜索(忽略大小写)
范围计数(当size:10就是展示分组的数据)
分词
分完之后是小写,具体用法参考文档
GET twitter/_analyze{
“text”:[“Happy Birthday”],
“analyzer”:"standord
}
or 自己设置
ELK之Logstash- 开源的流式ETL引擎
- 只需几分钟即可构建数据流处理管道
- 具有自适应缓冲的水平伸缩性和弹性
- 数据来源中立性,支持众多数据源
- 丰富的周边插件,200多个第三方集成和处理器
- 自带监控和管理
- log&files
- 指标信息,服务器指标
- 安全相关
- 数据存储(云,本地,redis,mq,kfk)
架构
分布式收集,实时收集监控
input数据采集端,收集和反序列化,Codecs来设置解码器
Beats,TCP,UDP,HTTP,JDBC,HTTPPoiler
filter数据传进来之后,对数据进行处理
Structure:把数据在进行格式化,一行log文本中可能有很多字段,可进行拆分过滤
Transform
Normalize
GoolP Enrichment
Extern Lookup Enrichment
CIDR & DNS Lookups
outputs存储
Elasticsearch,TCP,UDP,HTTP,数据库或消息队列
AY-least-once交付保障和基于持久化队列的自适应缓冲
将错误时间发送到死信队列(dead letter queue)中,用于离线处理和重放
管道可以动态修改不用重启
- 带条件和多管道的直接数据流
- 使用身份验证和加密来确保传输安全
- 使用modules来一键交付
- 可轻松构建自定义插件集成和处理器
基本
#获取端口为5043的数据
input{
beats {port => 5043}
}
#对数据进行过滤,将message中的字段都改为小写
filter{
mutate{lowervase => ["message"]}
}
#输出到es
output{
elasticsearch{}
}
事件
主要数据单元就是事件
文档类型,与json相似,支持任意层次结构和类型
{
"@timestap" => 2017-09-09T01-01-01,
"message"=>"bar",
"some_other_field"=>{
"has_complex_values"=>123
}
}
管道
-
一个管道包含数据处理的一个逻辑流程
-
管道从input接收数据
-
发送到queue
-
然后传递给workers来处理
-
支持多个input
-
支持多个workers来处理filter/output部分
开源的数据分析和可视化平台,可以使大数据通俗易懂,基于浏览器的界面便于快速创建和分享动态数据仪表板来追钟Elasticsearch(es)的实时数据变化
安装在官网上下载.zip安装包
https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-windows-x86_64.zip
下载好解压到你放置的地方
cd进去
启动
.binkibana
默认情况下,会在前台启动,输出log到STDOUT,可以通过ctrl+c 停止Kibana
在config/kibana.yml中加载配置文件,目录结构如下
| 文件名 | 描述 |
|---|---|
| bin | 二进制脚本,包括kibana启动服务和kibana-plugin安装插件 |
| config | 配置文件包括kibana.yml |
| data | kibana和其插件写入磁盘的数据文件位置 |
| optimize | 编译过的源码, |
| plugins | 插件文件的位置,每一个插件都有以恶搞单独的二级目录 |
在kibana.yml中
- server.port
- 默认值:5601 ,由后端提供服务,该配置可指定服务端口号
- server.host
- 默认值:‘localhost’ ,指定后端服务器的主机地址
- server.basePath
- 如果启用代理,指定kibana的路径,该配置只影响kibana生成的Urls
- 转发请求到kibana时代理会移除基础路径值,且不能以‘/’结尾
- server.maxPayloadBytes
- 默认值:1048576 服务器请求最大负载单位时字符
- server.name
- 默认值:‘主机名’,kibana对外展示的名称
- server.defaultRoute
- 默认值:‘/app/kibana‘ 默认路径,可改变kibana的登陆页面
- elasticsearch.preserchHost
- 默认值:True
- elasticsearch.url:
- 默认值: “http://localhost:9200” 用来处理所有查询的 Elasticsearch 实例的 URL 。
- elasticsearch.preserveHost:
- 默认值: true 该设置项的值为 true 时,Kibana 使用 server.host 设定的主机名,该设置项的值为 false 时,Kibana 使用主机的主机名来连接 Kibana 实例。
- kibana.index:
- 默认值: “.kibana” Kibana 使用 Elasticsearch 中的索引来存储保存的检索,可视化控件以及仪表板。如果没有索引,Kibana 会创建一个新的索引。
- kibana.defaultAppId:
- 默认值: “discover” 默认加载的应用。
等。。。详情观看:
连接elasticsearchhttps://www.elastic.co/guide/cn/kibana/current/settings.html
你要告诉kibana去链接的elasticsearch,第一次访问会提示定义一个index pattern也就是索引模式来匹配一个或者多个索引,也可以在 Management 页面增加,
默认是链接localhost上的elasticsearch实例,如需要连接不同的elasticsearch,可以修改kibana.yml中的Elasticsearch URL 配置项并重启 Kibana。
若是生产环境
https://www.elastic.co/guide/cn/kibana/current/production.html
注意:
Kibana 可视化控件中的字段以及 .kibana 索引管理依赖动态映射(dynamic mapping)功能,如果动态映射被关闭,您需要手动提供字段的映射以便于 Kibana 用于正确的创建可视化控件
kibana和elasticsearch动态映射默认情况下,Elasticsearch 启用了字段的 动态映射。Kibana 需要利用动态映射在可视化控件中正确使用字段,同时管理 .kibana 索引,这些索引存储了已保存的搜索、可视化图表和仪表板。
如果 Elasticsearch 使用场景需要禁止动态映射,这就需要手动提供创建可视化控件所需要字段的映射,并手动启用 .kibana 索引的动态映射。
下面的步骤假定 Elasticsearch 中不存在索引 .kibana ,且 elasticsearch.yml 中 index.mapper.dynamic 配置为 false :
-
启动 Elasticsearch。
-
创建 .kibana 索引并只针对该索引打开动态映射:
PUT .kibana { "index.mapper.dynamic": true } -
启动 Kibana ,转到 web 页面,确认没有动态映射相关的错误。
直接访问
localhost:5601
查看状态
localhost:5601/status
来访问 Kibana 的服务器状态页,状态页展示了服务器资源使用情况和已安装插件列表。
若有问题参见:
应用 discoverhttps://alvin.onloading.cn/2018/10/06/elasticsearch-install/
查看es结构化日志的窗口
日志的量
(丢图了)
结构化好了的文档信息,浅灰色代表的是字段,后面代表的值
(同上)
这里也可以添加筛选
提供了很多样例
创建新的模板样例,其中TSVB是(使用可视化管道接口构建时间服务器)
创建可视化,以热力图为例
选择数据源
选择你要设置的聚合函数
选择你要求的字段
设置x轴y轴
就可以按照你的要求出图了,然后可以保存
点击可以观看样例
仪表板,点击可以查看样例,
点击右上角创建
新的可视化组件,H5的标准像素级别
选定了一个样例后 点击样式,可以改变样式
也可以更改查询语句
插入新的样式,点击添加样式
进入数据源
这个编辑器比你想象的要强大
开发工具,三大模块
控制台可以搜索一些你想要的数据,并展示(有提示的那一种)
search Profiler: 可以进行验证
Grok Debugger:正则,从原始的日志文本中抽取日志数据,可以查看你收取的数据是不是你想要的
Stack Monitiring对集群进行检测的数据展示
设置
干货 需求背景:- 业务发展越来越大,服务器越来越多
- 各种日志量也越来越多
- 开发人员排查问题需要上服务器上查日志,不方便
- 运营想要分析日志数据
- 5.0之前叫ELK 之后添加了Beats 就叫Elastic Stack
- Elasticsearch 关于日志搜索,存储
- kibana 图形化展示
- logstash 收集日志(对内存,CPU资源消耗比较高,但可定义输出的日志格式 beats不行)
- beats : 轻量级日志采集器
- filebeat 收集日志文件
- metricbeat 指标(cpu啥的)监控
- packertbeat 网络数据
- winlogbeat win事件日志
- auditbeat 审计日志
- heartbeat 运行时间监控
- x-pack: 实现安全、报警、监控、报表、图标等功能的套件(收费)
- Cloud/ECE 云相关
- 准备3台机器130(主节点),132(数据节点),133(数据节点)
- 全部安装es,openjdk(yum install -y java-1.8.0-openjdk) 130(主机)安装kibana
- 132安装logstash
下载
rpm–import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加配置
vim /etc/yum.repos.d/elastic.repo //加入以下内容
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-mdyum list |grep elastic
yum install -y elasticsearch
在启动之前
vi /etc/elasticsearch/elasticsearch.yml
#集群名称
cluster.name: rubis
#节点名称
node.name: node-1
#数据文件与日志文件存放目录
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch#网络设置
network.host: 0.0.0.0 #通过本机访问
http.port: 9200#集群设置
cluster.initial_master_nodes: [“node-1”]
启动
#启动
systemctl start elasticsearch#查看状态
systemctl status elasticsearch
localhost:9200即可访问
安装Kibana下载
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加配置
vi /etc/yum.repos.d/kibana.repo
#内容
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-mdyum install -y kibana
vi /etc/kibana/kibana.yml
server.host: “0.0.0.0”
elasticsearch.hosts: [“http:localhost:9200”]
i18n.locale: “zh-CN”
启动
精选博客#启动
systemctl start kibana#查看状态
systemctl status kibana
[ELK(ElasticSearch+Logstash+ Kibana)搭建实时日志分析平台]> (https://www.cnblogs.com/zclzhao/p/5749736.html)



