Elastic stack(二):Kibana简介、安装以及简单使用

1 Kibana

1.1 简介

1、kibana介绍

kibana是Elastic stack中web页面,可以在kibana中查看到数据。还有以下几个功能:

  • 搜索、观察并保护数据:从发现文档到分析日志,再到查找安全漏洞,Kibana 是访问这些功能及其他功能的门户。
  • 分析数据:搜索隐藏的信息,用图表、仪表、地图、图形等方式可视化发现的内容,并在仪表板上进行组合。
  • 管理、监控和保障 Elastic Stack 的安全。管理数据,监控 Elastic Stack 集群的健康状况,并控制哪些用户有权访问哪些功能。

2、kibana 分析(Analyze)

kibana分析流程如下:
在这里插入图片描述

  • 1、添加数据:可以通过elastic search其他组件添加数据,也可以添加一个样本数据集或者上传文件来实现。
    在这里插入图片描述

  • 2、搜索:主要是在Discover 页面,可以添加筛选条件得出结果,只保留自己的需要的数据。还可以将结果限制为最近添加到 Elasticsearch 的文档

  • 3、可视化:Kibana 提供了许多选项来创建数据的可视化,包括基于聚合的数据、时间序列数据以及地理数据。仪表板是创建可视化的起点,然后将它们组合在一起,从多个角度展示数据。使用 Canvas,还可以在大屏幕上显示。

  • 4、建立数据行为模型。使用机器学习功能来建立数据行为模型——预测异常行为,执行异常检测、回归和分类分析。

  • 5、分享:可以通过嵌入仪表板、分享链接、导出为 PDF 等和其他人分享。

3、管理数据

kibana可以实现以下数据操作:

  • 刷新、清空和清除索引的缓存。
  • 定义索引随时间变化的生命周期。
  • 为集群快照制定策略。
  • 将一个或多个索引的数据滚动到新的、紧凑的索引中。
  • 在远程集群上复制索引,并将它们复制到本地集群。
    在这里插入图片描述

4、告警及采取的措施

kibana提供高告警功能。在不同应用中存在检测条件,在满足条件时会触发操作。例如,当业务关键绩效指标(KPIs)发生变化,或者内存、CPU 或磁盘空间不足时,可能会触发告警。当告警触发时,可以向日常工作流程中的系统发送通知:如电子邮件、Slack、PagerDuty、ServiceNow 和其他第三方集成。
可以在“Rules and Connectors”(规则和连接器)中找。
在这里插入图片描述

5、确保访问安全

Kibana 提供了角色和权限,用于控制哪些用户可以查看和管理 Kibana 功能。权限授予查看应用程序或执行特定操作的许可,并分配给角色。角色相当于一个“模板”功能,可以将这些功能授予许多用户,而无需重新定义每个用户应该能够执行的操作。
创建角色时,可以将分配的 Kibana 权限限定于特定空间。这样可以在不同的空间中授予用户不同的访问级别,甚至为用户提供他们自己的私有空间。例如,高级用户可能具有创建和编辑可视化和仪表板的权限,而分析师或高管可能只有仪表板和 Canvas 的只读权限。
Kibana 的角色管理界面可以进行权限的设置,也可以通过API 自动创建角色。
在这里插入图片描述

1.2 安装kibana8.1

1、下载

# 下载并解压
wget https://artifacts.elastic.co/downloads/kibana/kibana-8.1.0-linux-x86_64.tar.gz
tar zxvf kibana-8.1.0-linux-x86_64.tar.gz
mv  kibana-8.1.0 /usr/local/

# 生成kibana的证书文件
cd /usr/local/elasticsearch-8.1.0
# 直接回车
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-certutil csr -name kibana -dns server
# 解压文件 并生成证书文件
unzip csr-bundle.zip
cd kibana/
cp  kibana/kibana.csr kibana/kibana.key /usr/local/kibana-8.1.0/config/
cd /usr/local/kibana-8.1.0/config/
openssl x509 -req -in kibana.csr -signkey kibana.key -out kibana.crt

# 重置kibana的登录账号  选择y  打印到前端
/usr/local/elasticsearch-8.1.0/bin/elasticsearch-reset-password -u kibana
DJT=nk+MUSZ5YZCg1EaO

在这里插入图片描述

2、修改配置文件

# 修改配置文件
vi /usr/local/kibana-8.1.0/config/kibana.yml


server.publicBaseUrl: "https://192.168.92.102:5601" 
server.port: 5601
# 服务主机名
server.host: "192.168.92.102"
# 设置语言为中文
i18n.locale: "zh-CN"
# elasticsearch 服务主机地址
elasticsearch.hosts: ["https://192.168.92.102:9200"]
# 访问elasticsearch 服务的账号密码
elasticsearch.username: "kibana"
elasticsearch.password: "DJT=nk+MUSZ5YZCg1EaO"

elasticsearch.ssl.verificationMode: none

elasticsearch.ssl.certificateAuthorities: ["/usr/local/elasticsearch-8.1.0/config/certs/elasticsearch-ca.pem"]

server.ssl.enabled: true
server.ssl.certificate: /usr/local/kibana/config/kibana.crt
server.ssl.key: /usr/local/kibana/config/kibana.key

3、配置快速启动文件

# 配置system并启动
mv /usr/local/kibana-8.1.0 /usr/local/kibana
chown -R es:es /usr/local/kibana
chmod 755 /usr/local/kibana

# system管理
vim /usr/lib/systemd/system/kibana.service

[Unit]
Description=kibana
After=network.target
[Service]
Type=simple
User=es
Group=es
LimitNOFILE=100000
LimitNPROC=100000
Restart=no
ExecStart=/usr/local/kibana/bin/kibana
PrivateTmp=true
[Install]
WantedBy=multi-user.target

systemctl daemon-reload
systemctl start kibana 
systemctl enable kibana 
systemctl restart kibana.service
systemctl status kibana.service -l
netstat -antp |grep 5601

# web页面登录
https://192.168.92.102:5601/
# 此处注意:登录的用户名和密码为:
# 账号 : elastic  密码 : pwYcuJ8aT-h7TvuA0gVu

在这里插入图片描述

1.3 简单使用

1、添加样例数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、数据搜索

具体的kql语句可以看下面
在这里插入图片描述

3、时间过滤

在下面可以选择时间段,甚至精确到分钟、秒
在这里插入图片描述

4、Kibana 查询语言 (KQL)

在kibana中,查询语言使用KQL

筛选存在字段的文档
# 筛选存在字段的文档:检查任何索引值,包括空字符串
http.request.method: *
筛选与值匹配的文档
# 筛选与值匹配的文档:使用 KQL 筛选与特定数字、文本、日期或布尔值匹配的文档。
# 筛选 http.request.method 为 GET 的文档
http.request.method: GET
# 如果不提供field,则在所有字段中搜索给定值。如:筛选 hello
hello 
# 查询关键字、数值、日期或布尔字段时,该值必须完全匹配, 包括标点符号和大小写。但是,在查询文本字段时,Elasticsearch 会分析 根据字段的映射设置提供的值。 例如,要搜索其中(字段) 包含文本“null pointer”:http.request.body.content text  需要使用引号引起来
http.request.body.content: "null pointer"
# 某些字符必须用反斜杠转义(除非用引号括起来)。如:
#  \():<>"*  必须使用转义字符
http.request.referrer: "https://example.com"
http.request.referrer: https\://example.com
筛选范围内的文档

若要搜索包含所提供范围内的术语的文档,需要使用范围语法:

# 如,要搜索http.response.bytes 小于 10000 的所有文档
http.response.bytes < 10000

# 可以合并多个范围查询,例如,搜索http.response.bytes 大于 10000 的文档 但小于或等于 20000
http.response.bytes > 10000 and http.response.bytes <= 20000

# 可以对字符串值、IP 地址和时间戳使用范围语法
# 如,若要搜索早于两周前的文档
@timestamp < now-2w
使用通配符筛选文档
# 例如,若要查找 http.response.status_code 以 4 开头的文档
http.response.status_code: 4*

# 如果不允许使用前导通配符,可以使用 query:allowLeadingWildcards 高级设置进行修改
否定查询

如果要排除一组文档,需要使用关键字 not (不区分大小写)

# 如,筛选 http.request.method 不是 GET 的文档
NOT http.request.method: GET
合并查询

需要满足多个查询条件时,可以使用关键字:or、and。如果在多个查询时指定优先级,需要使用括号()

# 如,要查找 http.request.method 为 GET 或 http.response.status_code 为 400 的文档
http.request.method: GET OR http.response.status_code: 400

# 如果要查找 http.request.method 为 GET 且 http.response.status_code 为 400 的文档
http.request.method: GET AND http.response.status_code: 400

# 如,要查找 http.request.method 为 GET 且http.response.status_code为 200 或 http.request.method为 POST且http.response.status_code 为 400 的文档:
(http.request.method: GET AND http.response.status_code: 200) OR (http.request.method: POST AND http.response.status_code: 400)

# 要查找 http.request.method 为 GET、POST 或 DELETE 的文档
http.request.method: (GET OR POST OR DELETE)
匹配多个字段

通配符还可用于查询多个字段。可以使用 datastream.*

# 搜索 任何子字段包含“日志”的文档
datastream.*: logs
查询嵌套字段

查询嵌套字段需要特殊语法,如:

##### 以下,user是嵌套字段
{
  "user" : [
    {
      "first" : "John",
      "last" :  "Smith"
    },
    {
      "first" : "Alice",
      "last" :  "White"
    }
  ]
}
# 查找数组中的单个值包含名字 “爱丽丝”和“怀特”的姓氏
user:{ first: "Alice" and last: "White" }


#### 嵌套字段可以位于其他嵌套字段中,必须指定要查询的嵌套字段的完整路径。
# 以下:user和name都是嵌套字段
{
  "user": [
    {
      "names": [
        {
          "first": "John",
          "last": "Smith"
        },
        {
          "first": "Alice",
          "last": "White"
        }
      ]
    }
  ]
}
# 查找数组中的单个值包含名字“Alice”和姓氏“White”
user.names:{ first: "Alice" and last: "White" }

5、保存查询

如果想把结果保存下来也是可以的。比如:想把 http.request.method 为 GET的查询结果保存下来,就不需要每次查看时都重新输入,可以这样做:
在这里插入图片描述

这样就可以把想要的数据保存下来了
在这里插入图片描述

总结

以上是Kibana最基础的一些操作,其他的后续再补充。

相关推荐

  1. WebGL简介以及使用

    2024-03-15 00:26:02       52 阅读
  2. Node.js 简介以及安装

    2024-03-15 00:26:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-15 00:26:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-15 00:26:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-15 00:26:02       82 阅读
  4. Python语言-面向对象

    2024-03-15 00:26:02       91 阅读

热门阅读

  1. 25.MySQL中定义空值

    2024-03-15 00:26:02       40 阅读
  2. Flutter Widgets体系结构

    2024-03-15 00:26:02       54 阅读
  3. 探讨:MySQL和PostgreSQL谁更火

    2024-03-15 00:26:02       44 阅读
  4. python实现小红树上染色

    2024-03-15 00:26:02       38 阅读
  5. ubuntu20.04安装fpylll

    2024-03-15 00:26:02       38 阅读
  6. SQL Server 技术100问?

    2024-03-15 00:26:02       42 阅读
  7. 网络模型的保存和读取

    2024-03-15 00:26:02       38 阅读
  8. python-0004-django站点

    2024-03-15 00:26:02       38 阅读