docker快速安装ELK

打印 上一主题 下一主题

主题 823|帖子 823|积分 2469

目次
一、创建elk目次、elasticsearch目次、kibana目次
二、创建docker-compose.yml (linux没装docker和docker-compose的先自行百度装一下)
三、启动容器并查看容器状态
四、复制elasticsearch、kibana、filebeat配置文件
五、修改elasticsearch、kibana、filebeat配置文件 
六、修改完成配置文件后,修改docker-compose.yml配置文件
七、重新启动ELK
八、修改elasticsearch系统用户暗码
九、欣赏器访问服务
十、别的命令说明



一、创建elk目次、elasticsearch目次、kibana目次


   sudo mkdir -p /usr/local/elk/elasticsearch/config
sudo mkdir -p /usr/local/elk/elasticsearch/data
sudo mkdir -p /usr/local/elk/elasticsearch/logs
sudo mkdir -p /usr/local/elk/kibana/config
sudo mkdir -p /usr/local/elk/kibana/data
sudo mkdir -p /usr/local/elk/kibana/logs
sudo mkdir -p /usr/local/elk/filebeat/config
sudo mkdir -p /usr/local/elk/filebeat/data
sudo mkdir -p /usr/local/elk/filebeat/logs
  设置权限将/usr/local/elk及其所有子目次的权限设置为当前用户的UID和GID。
   sudo chown -R $(id -u)(id -g) /usr/local/elk 
  

  二、创建docker-compose.yml (linux没装docker和docker-compose的先自行百度装一下)

   cd /usr/local/elk/ && vi docker-compose.yml
  然后将下面的代码粘贴到文件中,末了生存即可
  注意文件中的数据卷除了时间同步外,其他数据卷先解释掉,如下内容
  1. #docker-compose.yml
  2. version: '3.3'
  3. services:
  4.   elasticsearch:
  5.     image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2
  6.     container_name: elasticsearch
  7.     environment:
  8.       - cluster.name=es-app-cluster
  9.       - bootstrap.memory_lock=true
  10.       - node.name=node-01
  11.       - discovery.type=single-node
  12.       - xpack.security.enabled=true      
  13.       - xpack.security.http.ssl.enabled=false
  14.       - xpack.security.transport.ssl.enabled=false
  15.       - ingest.geoip.downloader.enabled=false  # 使用正确的配置项
  16.       - ELASTIC_USERNAME=elastic
  17.       - ELASTIC_PASSWORD=elastic
  18.       - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
  19.     ulimits:
  20.       memlock:
  21.         soft: -1
  22.         hard: -1
  23.     volumes:
  24.       #- /usr/local/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  25.       #- /usr/local/elk/elasticsearch/data:/usr/share/elasticsearch/data
  26.       #- /usr/local/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
  27.       - /etc/localtime:/etc/localtime:ro
  28.     ports:
  29.       - 9200:9200
  30.       - 9300:9300
  31.     networks:
  32.       - elk-net
  33.     restart: always
  34.     privileged: true
  35.   kibana:
  36.     image: docker.elastic.co/kibana/kibana:8.6.2
  37.     container_name: kibana
  38.     environment:
  39.       - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
  40.       - ELASTICSEARCH_USERNAME=kibana_system
  41.       - ELASTICSEARCH_PASSWORD=elastic
  42.       - XPACK_SECURITY_ENABLED=true
  43.       - SERVER_NAME=kibana
  44.     volumes:
  45.       #- /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
  46.       #- /usr/local/elk/kibana/data:/usr/share/kibana/data
  47.       #- /usr/local/elk/kibana/logs:/usr/share/kibana/logs
  48.       - /etc/localtime:/etc/localtime:ro
  49.     ports:
  50.       - 5601:5601
  51.     networks:
  52.       - elk-net
  53.     depends_on:
  54.       - elasticsearch
  55.     restart: always
  56.     privileged: true
  57.   filebeat:
  58.     image: docker.elastic.co/beats/filebeat:8.6.2
  59.     container_name: filebeat
  60.     volumes:
  61.       #- ./filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml
  62.       #- ./filebeat/data:/usr/share/filebeat/data
  63.       #- ./filebeat/logs:/usr/share/filebeat/logs
  64.       #- /usr/workspace/logs/wclflow:/host/var/log/wclflow # 假设主机的日志位于/var/log下
  65.       #- /usr/nginx/logs/access.log:/host/var/log/nginx/logs/access.log
  66.       #- /usr/nginx/logs/access.log:/host/var/log/nginx/logs/error.log
  67.       - /etc/localtime:/etc/localtime:ro
  68.     networks:
  69.       - elk-net
  70.     depends_on:
  71.       - elasticsearch
  72.     restart: always
  73.     privileged: true
  74.     user: root
  75.    
  76. networks:
  77.   elk-net:
  78.     driver: bridge   
复制代码
三、启动容器并查看容器状态

   启动容器(下载较慢,请耐烦等待完成下载并启动容器)
docker-compose up -d  
如果 docker-compose up -d实行后提示找不到命令,则本篇所涉及的docker-compose全部改成docker compose后实行
  

查看服务是否启动
docker-compose ps 
  

  三个容器status都是Up,表现容器已启动
  四、复制elasticsearch、kibana、filebeat配置文件

   将elasticsearch、kibana容器内的config、data、logs这三个目次复制到宿主机咱们刚才创建的目次中,具体操作如下:
  

  • elasticsearch容器目次复制到宿主机对应目次
    docker cp elasticsearch:/usr/share/elasticsearch/config /usr/local/elk/elasticsearch/
    docker cp elasticsearch:/usr/share/elasticsearch/data /usr/local/elk/elasticsearch/
    docker cp elasticsearch:/usr/share/elasticsearch/logs /usr/local/elk/elasticsearch/

  • kibana容器目次复制到宿主机对应目次
    docker cp kibana:/usr/share/kibana/config /usr/local/elk/kibana/
    docker cp kibana:/usr/share/kibana/data /usr/local/elk/kibana/
    docker cp kibana:/usr/share/kibana/logs /usr/local/elk/kibana/

  • filebeat容器目次复制到宿主机对应目次
    docker cp filebeat:/usr/share/filebeat/filebeat.yml /usr/local/elk/filebeat/config/
    docker cp filebeat:/usr/share/filebeat/data /usr/local/elk/filebeat/
    docker cp filebeat:/usr/share/filebeat/logs /usr/local/elk/filebeat/

  五、修改elasticsearch、kibana、filebeat配置文件 

   

  • 修改elasticsearch配置文件
    cd elasticsearch/config/ && rm -rf elasticsearch.yml && vi elasticsearch.yml

    回车后输入以下内容后生存
    1. #sticsearch 配置文件 elasticsearch.yml内容
    2. cluster.name: "es-app-cluster"
    3. # 确保Elasticsearch监听所有接口
    4. network.host: 0.0.0.0
    5. node.name: node-01
    6. path.data: /usr/share/elasticsearch/data
    7. path.logs: /usr/share/elasticsearch/logs
    8. http.port: 9200
    9. discovery.type: single-node
    10. xpack.security.enabled: true
    11. bootstrap.memory_lock: true
    12. # 禁用证书检查
    13. xpack.security.http.ssl.enabled: false
    14. xpack.security.transport.ssl.enabled: false
    15. #GeoIP数据库用于将IP地址映射到地理位置信息,关闭它
    16. ingest.geoip.downloader.enabled: false
    复制代码
  • 修改kibana配置文件
    cd ../../kibana/config/ && rm -rf kibana.yml && vi kibana.yml

    回车后输入以下内容后生存
    1. server.host: "0.0.0.0"
    2. server.shutdownTimeout: "10s"
    3. elasticsearch.hosts: [ "http://elasticsearch:9200" ]
    4. monitoring.ui.container.elasticsearch.enabled: true
    5. i18n.locale: "zh-CN"
    6. xpack.reporting.roles.enabled: false
    复制代码
  • 修改filebeat配置文件
     cd ../../filebeat/config/ && rm -rf filebeat.yml && vi filebeat.yml

    回车后输入以下内容后生存
    1. filebeat.inputs:
    2. - type: filestream
    3.   id: filestream-wclflow #id要唯一
    4.   enabled: true
    5.   paths:
    6.     - /host/var/log/wclflow/*.log
    7.   fields_under_root: true
    8.   fields:
    9.     type: wclflow
    10.     project: alllogs
    11.     app: wclflow
    12. - type: filestream
    13.   id: filestream-nginx-access #id要唯一
    14.   enabled: true
    15.   paths:
    16.     - /host/var/log/nginx/logs/access.log
    17.   fields_under_root: true
    18.   fields:
    19.     type: nginx_access
    20.     project: access
    21.     app: nginx
    22. - type: filestream
    23.   id: filestream-nginx-error #id要唯一
    24.   enabled: true
    25.   paths:
    26.     - /host/var/log/nginx/logs/error.log
    27.   fields_under_root: true
    28.   fields:
    29.     type: nginx_error
    30.     project: error
    31.     app: nginx
    32. output.elasticsearch:
    33.   hosts: ["http://elasticsearch:9200"]
    34.   username: elastic
    35.   password: elastic
    36.   index: "wclflow-%{+yyyy.MM.dd}"
    37.   indices:
    38.     - index: "nginx-logs-access-%{+yyyy.MM.dd}"
    39.       when.contains:
    40.         type: "nginx_access"
    41.     - index: "nginx-logs-error-%{+yyyy.MM.dd}"
    42.       when.contains:
    43.         type: "nginx_error"
    44. setup.template.name: "nginx-logs"  # 设置模板名称
    45. setup.template.pattern: "nginx-logs-*"  # 设置模板模式
    46. setup.ilm.enabled: false #如果你不需要自动管理索引生命周期,或者 Elasticsearch 集群没有配置 ILM 策略,建议禁用
    47. setup.kibana:
    48.   host: "kibana:5601"
    复制代码
    上面的配置说明一下
    我紧张模拟配置三个项目的日记配置
    项目1:配置wclflow项目日记作为一个模拟项目的日记目次
    项目2:配置nginx访问日记作为一个模拟项目的日记目次
    项目3:配置nginx错误日记作为一个模拟项目的日记目次
    具体配置几个项目日记目次,就写几个类似下图的模块

    type、enabled、fields_under_root固定不变,其他的值自己根据实际环境自定义
    (如果上述配置运行后报错yml文件格式错误,解决思路:须要将文件内容的-type模块整体往右缩进两个字符)
  六、修改完成配置文件后,修改docker-compose.yml配置文件

   进入elk目次
  cd /usr/local/elk
  修改docker-compose.yml文件内容,将原来解释的数据卷挂载目次的解释取消掉,同时为了filebeat有足够的权限,给filebeat容器配置用户为root
  修改后的内容如下,请以这个内容为准(方便起见,直接复制粘贴下面的内容)
  1. #docker-compose.yml
  2. version: '3.3'
  3. services:
  4.   elasticsearch:
  5.     image: docker.elastic.co/elasticsearch/elasticsearch:8.6.2
  6.     container_name: elasticsearch
  7.     environment:
  8.       - cluster.name=es-app-cluster
  9.       - bootstrap.memory_lock=true
  10.       - node.name=node-01
  11.       - discovery.type=single-node
  12.       - xpack.security.enabled=true      
  13.       - xpack.security.http.ssl.enabled=false
  14.       - xpack.security.transport.ssl.enabled=false
  15.       - ingest.geoip.downloader.enabled=false  # 使用正确的配置项
  16.       - ELASTIC_USERNAME=elastic
  17.       - ELASTIC_PASSWORD=elastic
  18.       - "ES_JAVA_OPTS=-Xms128m -Xmx128m"
  19.     ulimits:
  20.       memlock:
  21.         soft: -1
  22.         hard: -1
  23.     volumes:
  24.       - /usr/local/elk/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
  25.       - /usr/local/elk/elasticsearch/data:/usr/share/elasticsearch/data
  26.       - /usr/local/elk/elasticsearch/logs:/usr/share/elasticsearch/logs
  27.       - /etc/localtime:/etc/localtime:ro
  28.     ports:
  29.       - 9200:9200
  30.       - 9300:9300
  31.     networks:
  32.       - elk-net
  33.     restart: always
  34.     privileged: true
  35.   kibana:
  36.     image: docker.elastic.co/kibana/kibana:8.6.2
  37.     container_name: kibana
  38.     environment:
  39.       - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
  40.       - ELASTICSEARCH_USERNAME=kibana_system
  41.       - ELASTICSEARCH_PASSWORD=elastic
  42.       - XPACK_SECURITY_ENABLED=true
  43.       - SERVER_NAME=kibana
  44.     volumes:
  45.       - /usr/local/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml
  46.       - /usr/local/elk/kibana/data:/usr/share/kibana/data
  47.       - /usr/local/elk/kibana/logs:/usr/share/kibana/logs
  48.       - /etc/localtime:/etc/localtime:ro
  49.     ports:
  50.       - 5601:5601
  51.     networks:
  52.       - elk-net
  53.     depends_on:
  54.       - elasticsearch
  55.     restart: always
  56.     privileged: true
  57.   filebeat:
  58.     image: docker.elastic.co/beats/filebeat:8.6.2
  59.     container_name: filebeat
  60.     volumes:
  61.       - ./filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml
  62.       - ./filebeat/data:/usr/share/filebeat/data
  63.       - ./filebeat/logs:/usr/share/filebeat/logs
  64.       - /usr/workspace/logs/wclflow:/host/var/log/wclflow # 假设主机的日志位于/var/log下
  65.       - /usr/nginx/logs/access.log:/host/var/log/nginx/logs/access.log
  66.       - /usr/nginx/logs/access.log:/host/var/log/nginx/logs/error.log
  67.       - /etc/localtime:/etc/localtime:ro
  68.     networks:
  69.       - elk-net
  70.     depends_on:
  71.       - elasticsearch
  72.     restart: always
  73.     privileged: true
  74.     user: root
  75.    
  76. networks:
  77.   elk-net:
  78.     driver: bridge   
复制代码
七、重新启动ELK

   先关闭服务
  docker-compose down
  

再启动服务
docker-compose up -d

  查看服务是否启动
  docker-compose ps

三个容器status都是Up,表现容器都已启动
  八、修改elasticsearch系统用户暗码

   进入elasticsearch容器
  docker exec -it elasticsearch /bin/bash
  实行下面的代码
./bin/elasticsearch-setup-passwords interactive
  回车后选择“y”后再回车,然后就是漫长的输入暗码-确认暗码的过程了,要耐烦,不绝输下去,直至最终结束
  修改暗码结束后exit退出容器
  关闭并重启服务
  docker-compose down 关闭容器
  docker-compose up -d 启动容器
  九、欣赏器访问服务

我的ip是192.168.7.46,
打开欣赏器访问http://服务器IP:9200/ 查看elasticsearch状态,提示登录,

输入刚才你设定的暗码,就可以登录,比如我给elastic用户设定的暗码是123456,然后就可以登录了,登录乐成后如下图

打开欣赏器访问http://服务器IP:5601/,注意ip是你的服务器ip,端口就是5601,初次访问页面如下,须要先配置Elastic,我们选择自己手动配置一下,然后配置Elastic服务地址,修改下ip和端口,如我就是配置的是192.168.7.46:9200,访问后提示登录,同上一步一样,我使用elastic用户,暗码我设定的123456,然后登录即可


登录乐成进入首页


查看索引
进入索引管理,就能看到我们配置的索引数据、数据流数据、索引模板数据了



配置kibana,进行日记查看
创建数据视图


 然后按照上图创建视图的方法,依次创建nginx-logs-access数据视图、nginx-logs-error数据视图

创建好视图后,左侧菜单Discover进入日记查询界面

进入Discover日记查询界面,可切换不同项目,查看日记
查看具体项目日记,如下图查看wclflow服务日记
   
  

至此日记已同步到ELK上了。
十、别的命令说明

   如果后期功能需求,须要改动某个容器的配置,可以实行下面命令,我以改动kibana容器为例:
  停止kibana容器
  docker-compose stop kibana
  然后修改kibana.yml配置或修改docker-compose.yml有关kibana的配置,修改完成后,实行下面命令,单独启动kibana容器,其他容器不受影响
  docker-compose up -d --force-recreate --no-deps kibana

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用多少眼泪才能让你相信

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表