一、ELK的简介
ELK 是三个开源项目的首字母缩写,分别是:
- Elasticsearch:一个分布式全文搜索引擎,提供了文档索引和查询、分布式搜索、实时搜索、数据分析等功能。
- Logstash:一个用于数据转换、日志收集、处理和派发的工具。它可以接收来自多种数据源的数据,并对数据进行过滤、转换和聚合等操作,并将处理后的数据输出到目标位置,如 Elasticsearch、数据库等。
- Kibana:一个数据可视化工具,提供了强大的数据仪表板、可视化图表、搜索和查询等功能。它可以将 Elasticsearch 中的数据用图表和表格的形式展示出来,让用户可以通过仪表板更好地了解数据。
在 ELK 中,Logstash 常用于收集和预处理数据,Elasticsearch 用于存储数据,并实现搜索和查询功能,Kibana 则可以在 Elasticsearch 中的数据上创建丰富的可视化仪表板。三个组件合起来可以方便地实现日志管理和搜索、IT 基础设施监控、业务分析和数据可视化等应用场景。
二、ubuntu上面安装部署ELK
下面是在 Ubuntu 18.04 上安装部署 ELK 的步骤:
- 安装 Java
ELK 运行需要 Java 环境,可以通过以下命令安装 OpenJDK 8:
sudo apt update
sudo apt install -y openjdk-8-jdk
- 安装 Elasticsearch
可以使用 Elasticsearch 的官方 APT 仓库来安装最新版本的 Elasticsearch,执行以下命令:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install -y elasticsearch
安装完成后,使用以下命令启动 Elasticsearch 服务:
sudo systemctl start elasticsearch
- 安装 Kibana
可以使用 Kibana 的官方 APT 仓库来安装最新版本的 Kibana,执行以下命令:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install -y kibana
安装完成后,使用以下命令启动 Kibana 服务:
sudo systemctl start kibana
- 安装 Logstash
可以使用 Logstash 的官方 APT 仓库来安装最新版本的 Logstash,执行以下命令:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
sudo apt-get install -y logstash
安装完成后,Logstash 默认会在 /etc/logstash/conf.d
目录下查找配置文件。可以在该目录下创建对应的配置文件,例如:
sudo vi /etc/logstash/conf.d/01-example.conf
input {
file {
path => "/var/log/syslog"
type => "syslog"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
}
stdout { codec => rubydebug }
}
上述配置会监听 /var/log/syslog
文件,将日志数据输出到 Elasticsearch,同时也会将数据在控制台输出以进行调试。
使用以下命令启动 Logstash 服务:
sudo systemctl start logstash
至此,ELK 的安装部署完成。
三、通过python将数据传递给Elasticsearch并且展示在kibana看板上面
Elasticsearch 实际上提供了一系列 Restful API 来进行存取和查询操作,可以使用 curl 等命令来进行操作,但毕竟命令行模式没那么方便,所以这里就直接介绍利用 Python 来对接 Elasticsearch 的相关方法。
Python 中对接 Elasticsearch 使用的就是一个同名的库,安装方式非常简单:
pip3 install elasticsearch
创建 Index
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
result = es.indices.create(index='news', ignore=400)
print(result)
删除 Index
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
result = es.indices.delete(index='news', ignore=[400, 404])
print(result)
插入数据
Elasticsearch 就像 MongoDB 一样,在插入数据的时候可以直接插入结构化字典数据,插入数据可以调用 create() 方法,例如这里我们插入一条新闻数据:
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
es.indices.create(index='news', ignore=400)
result = es.create(index='news', doc_type='politics', id=1, body=data)
print(result)
更新数据
更新数据也非常简单,我们同样需要指定数据的 id 和内容,调用 index() 方法即可(delete()方法也可以,但是目前我调用会报错),代码如下:
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
data = {'title': '车辆与流程管理测试2',
'url': 'http://10.24.98.91:8000/docs#' ,
'date': '2023-05-18'
}
result = es.index(index='news', doc_type='politics', body=data, id=1)
print(result)
index() 方法可以代替我们完成两个操作,如果数据不存在,那就执行插入操作,如果已经存在,那就执行更新操作,非常方便。
删除数据
如果想删除一条数据可以调用 delete() 方法,指定需要删除的数据 id 即可,写法如下:
from elasticsearch import Elasticsearch
es = Elasticsearch([{"host": "localhost", "port": 9200}])
result = es.delete(index='news', doc_type='politics', id=1)
print(result)
四、数据kibana上面的看板展示
数据通过python在kibana上面建立索引(Index Management)后,创建索引模式,然后在Dashboard上面创建图表,通过Lens拖拽自定义数据展示看板
标签:ELK,sudo,基础,apt,Elasticsearch,result,使用,数据,es From: https://blog.51cto.com/u_16270027/7523945