Elastic Stack(ElasticSearch 、 Kibana 和 Logstash) 实现日志的自动采集、搜索和...
source link: https://www.ichochy.com/blog/2020/07/10/ElasticStack%E5%AE%9E%E7%8E%B0%E6%97%A5%E5%BF%97%E7%9A%84%E8%87%AA%E5%8A%A8%E9%87%87%E9%9B%86%E6%90%9C%E7%B4%A2%E5%92%8C%E5%88%86%E6%9E%90.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Elastic Stack 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化
Elasticsearch
是一个分布式、RESTful 风格的搜索和数据分析引擎
Kibana
是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化管理和展示
Beats
是一个免费且开放的平台,集合了多种单一用途数据采集器,将数据发送给 Logstash 或 Elasticsearch
Logstash
是一个免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中
一、下载镱像(image)
搜索镱像(image)
docker search elasticsearch docker search kibana docker search logstash
获取镱像(image)
docker pull elasticsearch:7.6.0 #镜像名称:Tag docker pull kibana:7.6.0 #镜像名称:Tag docker pull logstash:7.6.0 #镜像名称:Tag
注:版本要统一
二、创建 ELK.yml
ELK.yml
version: "3.5" services: elasticsearch: container_name: elasticsearch image: elasticsearch:7.6.0 #镱像(image) restart: always #重启方式 environment: discovery.type: single-node #环境变量:运行模式 单例 ports: - "9200:9200" #端口映射 - "9300:9300" kibana: container_name: kibana image: kibana:7.6.0 #镱像(image) restart: always #重启方式 environment: I18N_LOCALE: "zh-CN" #指定中文 ports: - "5601:5601" #端口映射 logstash: container_name: logstash image: logstash:7.6.0 restart: always volumes: #文件夹映射,本地:容器 - "/Users/iChochy/logs:/usr/share/logstash/logs" ports: - "5044:5044" - "9600:9600"
volumes
自定义监控的文件夹
注:注意YML文件编写,不要出现 Tab 制表符,否则导致文件解析错误,启动容器(container)失败
# 错误信息 yaml.scanner.ScannerError: mapping values are not allowed here
三、运行容器
宿主机 hosts
中添加
127.0.0.1 elasticsearch
命令启动
docker-compose -f ELK.yml up -d
docker-compose -f #指定构建文件 up #创建并启动容器 -d #后台运行容器(container),打印容器(container)ID
四、检查容器的运行状态
elasticsearch 访问: http://127.0.0.1:9200
logstash 访问: http://127.0.0.1:9600
Kibana 访问: http://127.0.0.1:5601 ,进入 Kibana
运行 docker ps
查询容器运行状态,可以查看到容器的ID
mleo$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b8cb2effede logstash:7.6.0 "/usr/local/bin/dock…" 2 hours ago Up About an hour 0.0.0.0:5044->5044/tcp, 0.0.0.0:9600->9600/tcp logstash 69b8bc678e4e kibana:7.6.0 "/usr/local/bin/dumb…" 3 weeks ago Up 2 hours 0.0.0.0:5601->5601/tcp kibana 8c655f5b7493 elasticsearch:7.6.0 "/usr/local/bin/dock…" 3 weeks ago Up 2 hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp elasticsearch
运行 docker logs id
查看容器运行日志
例:持续查看logstash日志 docker logs 1b8cb2effede -f
五、修改logstash配置,监控日志文件
docker exec -it 1b8cb2effede bash vi pipeline/logstash.conf
input { beats { port => 5044 } file { path => "/usr/share/logstash/logs/*" #监控的文件路径 } } output { stdout { codec => rubydebug } elasticsearch { hosts => ["http://elasticsearch:9200"] #elasticsearch请求地址 index => "ichochy" #索引名称 } }
- 运行
docker restart 1b8cb2effede
重启 logstash
六、采集日志
在logstash的监控的文件路径下动态添加日志文件,日志就可以自动采集到 elasticsearch
touch web.log #创建日志文件 echo "www.ichochy.com" > web.log #添加日志信息
查看 logstash 日志信息可以看到打印的日志
{ "@version" => "1", "path" => "/usr/share/logstash/logs/web.log", "host" => "1b8cb2effede", "@timestamp" => 2020-07-10T14:07:16.633Z, "message" => "www.ichochy.com" }
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK