一个完整的日志收集方案:Elasticsearch + Logstash + Kibana+Filebeat (一)

发布于:2025-06-02 ⋅ 阅读:(22) ⋅ 点赞:(0)

整体链路

[应用服务器] --> [Filebeat] --> [Logstash] --> [Elasticsearch] --> [Kibana]

组件职责

  • Kibana: 可视化和分析日志数据
  • Elasticsearch: 存储和索引日志数据
  • Logstash: 解析、转换和丰富日志数据
  • Filebeat: 收集和转发日志

Elasticsearch 配置

核心配置(elasticsearch.yml)

安全配置

xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
  enabled: true
  keystore.path: certs/http.p12
xpack.security.transport.ssl:
  enabled: true
  verification_mode: certificate
  keystore.path: certs/transport.p12
  truststore.path: certs/transport.p12

集群与网络配置

cluster.name: my-elasticsearch
node.name: node-1
network.host: localhost
http.port: 9200

路径与内存配置

path.data: ./data
path.logs: ./logs
bootstrap.memory_lock: false

关键注意事项

必须为 Elasticsearch 设置专用 JDK 环境变量:

ES_JAVA_HOME

若未设置,启动时可能因找不到 tools.jar 报错 。

初始化超级用户密码

bin\elasticsearch-reset-password -u elastic

Kibana 配置

核心配置(kibana.yml)

服务器与连接配置

server.port: 5601
server.host: "localhost"
elasticsearch.hosts: ["https://localhost:9200"] 
elasticsearch.ssl.verificationMode: none

安全与加密配置

elasticsearch.serviceAccountToken: "AAEAAWVsYXN0aWMva2liYW5hL2tpYmFuYS10b2tlbjpaQldYekwyUlFHaWhKbkltV3FJQUxn"
xpack.security.encryptionKey: "something_at_least_32_characters_long"

生成加密密钥(可选)

Kibana需要加密密钥来支持告警功能,但是这一步不配置也不影响功能,只是控制台会有报错信息:生成加密密钥并更新Kibana配置:

bin\kibana-encryption-keys generate --force

创建服务账号 Token(重要)

禁止使用 elastic 超级用户运行 Kibana!

它不能直接使用elastic超级用户账号来运行Kibana,因为这是一个安全风险。我们需要使用服务账号(Service Account)来代替。

curl -k -X POST -u elastic:elastic "https://localhost:9200/_security/service/elastic/kibana/credential/token/kibana-token"

完了就可以启动了


网站公告

今日签到

点亮在社区的每一天
去签到