目录
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
### 修改 config/jvm.options
vim /usr/local/kibana-8.1.0/config/jvm.options
-Xms1g
-Xmx1g
## 说明:
# -Xms:设置 JVM 启动时的初始堆内存大小
# -Xmx:设置 JVM 可以使用的最大堆内存大小
# 在 Elasticsearch 中,为了避免频繁的垃圾收集和潜在的性能问题,建议将 -Xms 和 -Xmx 设置为相同的值
# 大小一般为内存的1/2
注意:-Xms 和 -Xm一定要设置,否则会导致内存使用率过大,从而造成报警
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最基础的一些操作,其他的后续再补充。