美文网首页
单机部署ELK(Elasticsearch+Logstash+K

单机部署ELK(Elasticsearch+Logstash+K

作者: 愤愤的有痣青年 | 来源:发表于2024-08-04 11:18 被阅读0次

本方案采用docker-compose的方式部署,docker-compose在ubuntu下可直接使用apt-get install docker-compose -y安装

一. 部署ELK服务

1. 先创建logstash.conf文件

input {
 beats {
    port => 5045
    type => "snaptobook-nginx"
  }
}

filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}
output {
  elasticsearch {
    hosts => ["http://my-elast:9200"]  # 替换为你的 Elasticsearch 地址
    index => "nginx_logs"
  }
  stdout {
    codec => rubydebug  # 用于调试
  }
}

2. 在同级目录下创建docker-compose.yaml文件

# docker-compose.yaml
version: '3'
services:
  # elasticsearch 配置,该服务用于数据存储
  my-elast:
    image: 'elasticsearch:8.14.3'
    container_name: my-elast
    volumes:
      - ./data:/usr/share/elasticsearch/data # 映射数据卷,如果提示权限问题,可先创建目录,再给予其 777权限 即 mkdir data && chmod 777 -R data
    environment:
      - ES_JAVA_OPTS=-Xms512m -Xmx512m # 限制内存大小为1G
      - discovery.type=single-node # 模式为单节点
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
      - xpack.security.enabled=false # 关闭安全
    restart: always # 自动启动
    # 日志配置
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "10"
    # 网络配置
    networks:
      - elk
  # kibana配置,该服务是用于数据展示,其会提供一个可视化的操作页面
  my-kibana:
    image: 'kibana:8.14.3'
    container_name: my-kibana
    ports:
      - "80:5601" # 端口映射,最终访问是通过 http://ip:80 访问
    environment:
      - ELASTICSEARCH_HOSTS=http://my-elast:9200 # 配置elasticsearch的地址
      - LANG=C.UTF-8
      - LC_ALL=C.UTF-8
    networks:
      - elk
  # logstash配置,该服务用于数据清洗,其会提供一个清洗数据的工具
  my-logstash:
    image: 'logstash:8.14.3'
    container_name: my-logstash
    ports:
      - "5555:5045" # 端口映射,数据采集工具将会把数据推送到5555端口内,其中的5045是在配置文件logstash.conf中定义的
    volumes:
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf # 配置文件映射
    environment:
      - LOGSTASH_JAVA_OPTS=-Xms256m -Xmx256m # 限制内存大小为1G
      - xpack.monitoring.elasticsearch.hosts=http://my-elast:9200  # 配置elasticsearch的地址
    networks:
      - elk
# 网络配置
networks:
  elk:
    driver: bridge

3. 启动服务

docker-compose up -d
服务启动后,可以通过docker ps查看已经启动的容器,也可以通过docker-compose logs -f --tail 100的方式查看日志.
此时浏览器打开http://<你的IP>来访问控制面板

配置日志收集脚本

在需要被采集的服务器上,使用docker安装filebeat来收集日志,并将其发送给logstash.
filebeat的配置文件

# filebeat.yml
filebeat.inputs:
  - type: log
    enabled: true
    paths:
      - /var/log/access.log
output.logstash:
  hosts: ["192.168.23.2:5555"] # `192.168.23.2`为ELK部署服务器的IP,若采集的是本机的日志,可以使用127.0.0.1

运行docker采集日志

docker run -d \
  --name=filebeat \
  --user=root \
  --volume="xxx/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro" \
  --volume="/var/log/nginx/access.log:/var/log/nginx/access.log:ro" \
  docker.elastic.co/beats/filebeat:8.14.3 filebeat -e -strict.perms=false

其中
--volume="xxx/filebeat.yml:/usr/share/filebeat/filebeat.yml"是将配置文件映射到容器中,xxx部署需要依照实际情况替换
--volume="/var/log/nginx/access.log:/var/log/nginx/access.log:ro"是将需要采集的日志文件映射到容器中

运行完成后,即可打开kibana控制台去查看日志

相关文章

网友评论

      本文标题:单机部署ELK(Elasticsearch+Logstash+K

      本文链接:https://www.haomeiwen.com/subject/jqstkjtx.html