Fork me on GitLab

Docker安装ELK

安装Elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。

拉取ES镜像,

# 这里拉取 7.8.版本,最新的去docker仓库里面康
docker pull elasticsearch:7.8.0

docker 拉取镜像成功后, 使用命令docker images查看本地是否有此镜像

创建要挂载的文件与配置信息

mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
# 任何地址都可以访问
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml

 启动Elastic search,推荐一行一行的执行

# -d : 后台运行
# -p : 指定宿主机与docker启动容器的端口映射
# --name : 为 elasticsearch 容器起个别名
# -e : 指定为单节点集群模式
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.8.0 

不推荐执行上面这段,不然嘿嘿嘿

docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v  /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.8.0

 出现了一个报错说:文件夹未设置所有用户读写执行权限

chmod -R 777 /mydata/elasticsearch/

 

浏览器输入 http://localhost:9200/ 或者终端输入 curl  http://localhost:9200/ 来检查es是否安装成功

  设置开机自启动

docker update elasticsearch --restart=always

安装Kibana可视化工具

Kibana 是一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成,后者是一款流行的分析和搜索引擎,这使得 Kibana 成为了可视化 Elasticsearch 中存储数据的默认之选。

2021 年 1 月 21 日,Elastic NV 宣布,他们将改变软件许可策略,不在 Apache 2.0 版本 (ALv2) 许可下发布 Elasticsearch 和 Kibana 的新版本。相反,将在 Elastic 许可下使用 Elastic 许可或 SSPL 下提供的源代码提供新版本的软件。这些许可证不是开源的,不会为用户提供同样的自由。为了确保开源社区和我们的客户继续拥有一个安全、高质量的完全开源的搜索和分析套件,我们推出了 OpenSearch 项目,该项目是开源 Elasticsearch 和 Kibana 的社区驱动、ALv2 许可的分支。OpenSearch 套件由一个搜索引擎 OpenSearch 和一个可视化和用户界面 OpenSearch 控制面板组成

需要注意的是, kibana 的版本最好与 elasticsearch 保持一致, 避免发生不必要的错误

docker pull kibana:7.8.0

kibana 的镜像已经拉取好了, 接下来启动 kibana 试试页面效果

# 地址为自己虚拟机的ip
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://127.0.0.1:9200 -p 5601:5602 -d kibana:7.8.0

可以根据 portainer 查看下容器日志, 或者使用 docker 命令也可以

docker logs kibana

浏览器输入地址 http://localhost:5601/, 启动成功 等待一段时间,不然出不来界面,同样设置开机自启

docker update Kibana--restart=always

 安装Logstash

Logstash是具有实时流水线能力的开源的数据收集引擎。Logstash可以动态统一不同来源的数据,并将数据标准化到您选择的目标输出。它提供了大量插件,可帮助我们解析,丰富,转换和缓冲任何类型的数据。

拉取logstash镜像

docker pull logstash:7.8.0

编辑logstash.yml配置文件。目录需对应新增

vim /mydata/logstash/logstash.yml

http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://127.0.0.1:9200" ]
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: changeme
#path.config: /mydata/logstash/conf.d/*.conf
path.config: /mydata/docker/logstash/conf.d/*.conf
path.logs: /var/log/logstash

编辑logstash.conf文件,此处先配置logstash直接采集本地数据发送至es

input {
  syslog {
    type => "system-syslog"
    port => 5044
  }
}
output {
  elasticsearch {
    hosts => ["127.0.0.1:9200"]  # 定义es服务器的ip
    index => "system-syslog-%{+YYYY.MM}" # 定义索引
  }
}

编辑本地rsyslog.conf配置增加:

*.* @@127.0.0.1:5044

启动logstash

docker run -d --restart=always --log-driver json-file --log-opt max-size=100m --log-opt max-file=2 -p 5044:5044 --name logstash -v /mydata/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml -v /mydata/logstash/conf.d/:/data/docker/logstash/conf.d/ logstash:7.8.0

测试es接收logstash数据

curl http://localhost:9200/_cat/indices?v

获取到system-syslog-相关日志,则es已能获取来自logstash的数据,kibana中也同步显示数据。

开机自启动

docker update Logstash--restart=always

Docker Compose的方式

version: '3.8'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
    container_name: elasticsearch
    environment:
      - "cluster.name=elasticsearch" #设置集群名称为elasticsearch
      - "discovery.type=single-node" #以单一节点模式启动
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
    volumes:
      - /usr/local/docker/dockercompose/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件目录
      - /usr/local/docker/dockercompose/elasticsearch/data:/usr/share/elasticsearch/data 
    ports:
      - 9200:9200
      - 9300:9300
  kibana:
    image: kibana:7.8.0
    container_name: kibana
    volumes:
     - /usr/local/docker/dockercompose/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml#挂载配置文件,系统文件:容器内文件
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    environment:
      - "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
    ports:
      - 5601:5601
  logstash:
    image: logstash:7.8.0
    container_name: logstash
    volumes:
      - /usr/local/docker/dockercompose/logstash/logstash.conf:/usr/share/logstash/config/logstash.conf #挂载logstash的配置文件
    depends_on:
      - elasticsearch #kibana在elasticsearch启动之后再启动
    links:
      - elasticsearch:es #可以用es这个域名访问elasticsearch服务
    ports:
      - 4560:4560

在docker-compose.yml同目录下执行

docker-compose up -d
docker ps

 

posted @ 2022-03-08 17:41  隐琳琥  阅读(465)  评论(0编辑  收藏  举报