elasticsearch、kibana、logstash、filebeat 版本要一致,elasticsearch-head 方便通过浏览器查看elasticsearch 的状态和索引数据。
Centos:7.0.4
ElasticSearch:7.17.4
Kibana:7.17.4
Logstash:7.17.4
Filebeat:7.17.4
Easticsearch-head:5
通过 filebeat(轻量级数据收集引擎)收集日志后,推送给 Logstash (数据收集处理引擎)进行过滤、分析、丰富、统一格式等操作,将处理后的日志存储在 Elasticsearch (分布式搜索引擎)的索引中,最后由 Kibana(可视化化平台)搜索、展示存储在 Elasticsearch 中索引数据。
ElasticSearch:分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
参考安装
| 命令 | 描述 |
|---|---|
| docker pull elasticsearch | 下载最新版ElasticSearch镜像 (其实此命令就等同于 : docker pull elasticsearch:latest ) |
| docker pull elasticsearch:xxx | 下载指定版本的ElasticSearch镜像 (xxx指具体版本号) |
# 下载
docker pull elasticsearch:7.17.4
# 查看镜像
docker images
# 创建Elasticsearch配置文件夹
mkdir -p /home/elasticsearch/config
# 创建Elasticsearch数据文件夹
mkdir -p /home/elasticsearch/data
# 创建Elasticsearch插件文件夹(如:ik)
mkdir -p /home/elasticsearch/plugins
# 写入配置文件
echo "http.host: 0.0.0.0">>/home/elasticsearch/config/elasticsearch.yml
# 给挂载目录添加权限
chmod -R 777 /home/elasticsearch/
# 修改elasticseach.yml文件,追加
http.cors.enabled: true
http.cors.allow-origin: "*"
xpack:
ml.enabled: false
monitoring.enabled: false
security.enabled: false
watcher.enabled: false

多行模式
-d:表示在后台运行容器;
-p:将容器的端口 9200(TCP 请求端口) 和 9300(HTTP 请求端口)映射到主机上对应的端口;
-e:设置环境变量;
-v:挂载目录;
--name:设置容器名称;
docker run --name elasticsearch -p 9200:9200 -p9300:9300 \
-e "discovery.type=single-node" \
-v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /home/elasticsearch/data:/usr/share/elasticsearch/data \
-v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.17.4
单行模式
docker run --name elasticsearch -p 9200:9200 -p9300:9300 -e "discovery.type=single-node" -v /home/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/elasticsearch/data:/usr/share/elasticsearch/data -v /home/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.17.4
虚拟机访问:http://localhost:9200/
宿主机访问:http://192.168.124.137:9200/

到这里ElasticSearch就安装成功了
查看ElasticSearch的容器内部的ip,下面都是需要用到!!!
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' elasticsearch

Elasticsearch的ip为:172.17.0.4
docker run -d -p 9100:9100 --name elasticsearch-head mobz/elasticsearch-head:5

访问:http://192.168.124.137:9100/


# 创建文件夹
mkdir -p /home/elasticsearch-head
# 进入文件夹下
cd /home/elasticsearch-head
# 拷贝 vendor.js 文件到宿主机上
docker cp elasticsearch-head:/usr/src/app/_site/vendor.js ./
# 修改 vendor.js 文件内容
sed -i '/contentType:/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
sed -i '/var inspectData = s.contentType/s/application\/x-www-form-urlencoded/application\/json;charset=UTF-8/' vendor.js
# 删除容器
docker rm -f elasticsearch-head
# 运行容器
docker run -d -p 9100:9100 -v /home/elasticsearch-head/vendor.js:/usr/src/app/_site/vendor.js --name elasticsearch-head mobz/elasticsearch-head:5

Kibana:一种数据可视化和挖掘工具,可以用于日志和时间序列分析、应用程序监控和运营智能使用案例。它提供了强大且易用的功能,例如直方图、线形图、饼图、热图和内置的地理空间支持。此外,它还提供了与 Elasticsearch 的紧密集成。
docker pull kibana:7.17.4

在服务器上新建配置文件,用于docker文件映射。所使用目录需对应新增。vi /home/kibana/kibana.yml
#Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
elasticsearch.hosts: ["http://172.17.0.4:9200"]
xpack.monitoring.ui.container.elasticsearch.enabled: true
-d 表示在后台运行容器;
-p 5601:5601:将容器的 5601 端口映射到主机的 5601 端口上;
-v 目录挂载
--name kibana:设置容器名称;
docker run -d -p 5601:5601 \
-v /home/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml \
--name kibana \
kibana:7.17.4


到这里kibana就安装成功了
Logstash:数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。

docker pull logstash:7.17.4

# 创建文件夹
mkdir -p /home/logstash/config
# 创建 logstash.yml 文件
vi /home/logstash/config/logstash.yml
config:
reload:
automatic: true
interval: 3s
xpack:
management.enabled: false
monitoring.enabled: false
# 创建 pipelines.yml 文件
vi /home/logstash/config/pipelines.yml
- pipeline.id: test
path.config: "/usr/share/logstash/pipeline/logstash-filebeat.conf"
# 创建文件夹
mkdir -p /home/logstash/pipeline
# 创建 logstash.yml 文件
vi /home/logstash/pipeline/logstash-filebeat.conf
# 访问端口配置
input {
beats {
port => 5044
}
}
# 过滤条件配置
#filter{
# grok{
# match => {
# "message" => "%{COMBINEDAPACHELOG}"
# }
# }
#}
# 输出到ES配置
output {
elasticsearch {
hosts => ["http://172.17.0.4:9200"]
index => "nginx_log"
}
}
docker run -d -p 5044:5044 \
-v /home/logstash/pipeline:/usr/share/logstash/pipeline \
-v /home/logstash/config:/usr/share/logstash/config \
--name logstash logstash:7.17.4

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' logstash
Logstash的IP为:172.17.0.3
Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。
# 创建文件夹
mkdir -p /home/filebeat
# 创建 kibana.yml 配置文件
vi /home/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/access.log #日志文件路径
output.logstash:
hosts: ["172.17.0.3:5044"] #logstash访问地址
映射了 filebeat 配置文件和 nginx 日志,这样 nginx 日志有变化时映射过去的文件也会随之同步。
# /home/logs/access.log变化更新
docker run -d --name filebeat \
-v /home/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
-v /home/logs/access.log:/var/log/access.log \
-d elastic/filebeat:7.17.4










英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
有没有人得到Logstash在Rails上使用ruby?我的客户告诉我将Logstash用于日志收集器等。我正在使用rubyonrails技术。大部分都快完成了。但要求是将日志记录到logstash中。请让我知道这可能吗? 最佳答案 我为此编写了一个gem-logstasher.它将Rails日志写入一个单独的文件,采用纯json格式,无需任何处理即可由logstash使用。查看我的blog有关如何设置Logstash和Kibana的完整说明 关于ruby-on-rails-Lo
在我的场景中,Logstash收到的系统日志行的“时间戳”是UTC,我们在Elasticsearch输出中使用事件“时间戳”:output{elasticsearch{embedded=>falsehost=>localhostport=>9200protocol=>httpcluster=>'elasticsearch'index=>"syslog-%{+YYYY.MM.dd}"}}我的问题是,在UTC午夜,Logstash在外时区(GMT-4=>America/Montreal)结束前将日志发送到不同的索引,并且索引在20小时(晚上8点)之后没有日志,因为“时间戳”是UTC。我们已
不知何故,我似乎无法获得包含我的聚合的响应...使用curl它按预期工作:HBZUMB01$curl-XPOST"http://localhost:9200/contents/_search"-d'{"size":0,"aggs":{"sport_count":{"value_count":{"field":"dwid"}}}}'我收到回复:{"took":4,"timed_out":false,"_shards":{"total":5,"successful":5,"failed":0},"hits":{"total":90,"max_score":0.0,"hits":[]},"a
1.回顾.TransportServicepublicclassTransportServiceextendsAbstractLifecycleComponentTransportService:方法:1publicfinalTextendsTransportResponse>voidsendRequest(finalTransport.Connectionconnection,finalStringaction,finalTransportRequestrequest,finalTransportRequestOptionsoptions,TransportResponseHandlerT>
我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss
我有一个Rails应用程序,现在设置了ElasticSearch和Tiregem以在模型上进行搜索,我想知道我应该如何设置我的应用程序以对模型中的某些索引进行模糊字符串匹配。我将我的模型设置为索引标题、描述等内容,但我想对其中一些进行模糊字符串匹配,但我不确定在何处进行此操作。如果您想发表评论,我将在下面包含我的代码!谢谢!在Controller中:defsearch@resource=Resource.search(params[:q],:page=>(params[:page]||1),:per_page=>15,load:true)end在模型中:classResource'Us
我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目
我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了