使用docker搭建ELK
发布时间
阅读量:
阅读量
1.手动拉取镜像
# 拉取 Elasticsearch
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.10.2
# 拉取 Logstash
docker pull docker.elastic.co/logstash/logstash:8.10.2
# 拉取 Kibana
docker pull docker.elastic.co/kibana/kibana:8.10.2
2.创建Elasticsearch容器
2.1.启动Elasticsearch容器
# 启动Elasticsearch容器
docker run -d --name elasticsearch \
-e "discovery.type=single-node" \
-e "bootstrap.memory_lock=true" \
-e "xpack.security.enabled=false" \
-p 9200:9200 \
-v es_data:/usr/share/elasticsearch/data \
--ulimit memlock=-1:-1 \
docker.elastic.co/elasticsearch/elasticsearch:8.10.2
解释:
-d: 后台运行。
--name elasticsearch: 设置容器名称。
-p 9200:9200: 暴露 HTTP 接口。
-p 9300:9300: 暴露集群通信接口。
-e "discovery.type=single-node": 单节点模式。
-v es_data:/usr/share/elasticsearch/data: 数据持久化到卷 es_data。
2.2.获取Elasticsearch的账户密码(不用操作)
获取账号密码(重设)
docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic

获取密码为:C9mvcofabnPgA7*b3S7Q,账户为:elastic
2.3.访问Elasticsearch
访问elasticsearch服务器http://localhost:9200/

成功登录之后!!!

2.4.获取 http_ca.crt 文件(不用操作)
如果 Elasticsearch 使用 HTTPS,需要将其证书文件提供给 Logstash
将证书拷贝到宿主机:
docker cp elasticsearch:/usr/share/elasticsearch/config/certs/http_ca.crt ./http_ca.crt
具体地址为:D:\docker\elk\config\http_ca.crt
logstash的配置文件需要修改output,例如:
output {
elasticsearch {
hosts => ["https://elasticsearch:9200"]
user => "elastic"
password => "C9mvcofabnPgA7*b3S7Q"
ssl => true
cacert => "D:\docker\elk\config\http_ca.crt"
}
}
3.创建logstash容器
3.1.创建配置文件
创建 Logstash 配置文件:D:\docker\elk\config\logstash.conf
input {
beats {
port => 5044
}
}
filter {
grok {
match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" }
}
}
output {
elasticsearch {
hosts => ["http://elasticsearch:9200"]
index => "logs-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
3.2.运行Logstash容器
docker run -d \
--name logstash \
-p 5044:5044 \
-v D:\docker\elk\config\logstash.conf:/usr/share/logstash/pipeline/logstash.conf \
--link elasticsearch:elasticsearch \
docker.elastic.co/logstash/logstash:8.10.2
解释:
-p 5044:5044: 映射 Logstash 的 Beats 输入端口。
-v D:\docker\elk\config\logstash.conf:/usr/share/logstash/pipeline/logstash.conf: 挂载配置文件到容器中。
--link elasticsearch:elasticsearch: 将 Logstash 连接到 Elasticsearch 容器。
3.3.验证logstash是否正常启动
docker logs -f logstash

4.创建 Kibana 容器
4.1.运行 Kibana 容器
docker run -d \
--name kibana \
-p 5601:5601 \
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200" \
--link elasticsearch:elasticsearch \
docker.elastic.co/kibana/kibana:8.10.2
解释:
-p 5601:5601: 暴露 Kibana Web 界面。
-e "ELASTICSEARCH_HOSTS=http://elasticsearch:9200": 设置 Kibana 连接到 Elasticsearch 的地址。
--link elasticsearch:elasticsearch: 连接到 Elasticsearch 容器。
4.2.验证kibana是否正常启动
docker logs -f kibana

4.3.访问kibana
http://localhost:5601/

5.配置kibana
5.1.制造测试数据
from elasticsearch import Elasticsearch
from datetime import datetime
# 连接到 Elasticsearch
es = Elasticsearch(
["http://localhost:9200"]
)
# 定义日志内容
log_data = {
"timestamp": datetime.now(),
"level": "ERROR",
"message": "This is a test log message from Python"
}
# 写入 Elasticsearch 索引
response = es.index(index="test-logs", document=log_data)
print(response)
执行以下命令:
pip install elasticsearch
python test.py
5.2.配置日志视图
点击discover

新建如下视图:

全部评论 (0)
还没有任何评论哟~
