Advertisement

使用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.制造测试数据

test.py

复制代码
    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)

还没有任何评论哟~