1. ELK 简介
ELK 实际上是三个工具的集合,Elasticsearch + Logstash + Kibana,这三个工具组合形 成了一套 实用、易用的监控架构,很多公司利用它来搭建可视化的海量日志分析平台。
ElasticSearch:ElasticSearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引 擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码 发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快 速,安装使用方便。
Logstash:Logstash 是一个用于管理日志和事件的工具,你可以用它去收集日志、转换日志、解析日志并将 他们作为数据提供给其它模块调用,例如搜索、存储等。 Logstash是一个完全开源的工具,它可以对你的日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。Logstash事件处理有三个阶段:inputs → filters → outputs。是一个接收,处理,转发日志的工具
Kibana:Kibana是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
Filebeat:Filebeat是一个日志文件托运工具,在你的服务器上安装客户端后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件,并且转发这些信息到赋予他的输出位置(常见如elasticsearch、kafka或logstarsh)中存放。Filebeat等同于一个轻量级的logstash,当你需要收集信息的机器配置或日志资源数量不是特别多时,最佳实践是使用filebeat来代替logstash收集日志,filebeat十分小巧且稳定。下图是filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点。
为什么要使用 ELK?
目前系统大都采用分布式微服务架构,服务集群部署,这样就会产生很多日志文件,如 果每次查问题都是登录到各个服务器看日志文件,是非常困难的。因此需要有统一收集日 志的工具,来帮我们收集查看日志。ELK 可以让快速准确的定位问题。提高效率。
架构图:
2.软件下载
通过如下地址进行下载,四个软件的版本一致。
https://elasticsearch.cn/download/
上传到服务器上后解压。
3. Elasticsearch 安装配置
官网:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch
解压后进入 Elasticsearch 文件目录。配置如下:
3.1 修改elasticsearch.yml
路径:/elasticsearch-7.5.0/config
修改内容如下:
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
3.2 按需修改 jvm.options内存设置。
路径/elasticsearch-7.5.0/config
-Xms1g
-Xmx1g
3.3 创建 es 用户
不能使用root 用户。
useradd mtappelk
# 修改密码
passwd mtappelk
改变es目录拥有者账号
chown -R mtappelk elasticsearch/
3.4 修改/etc/sysctl.conf
末尾添加
vm.max_map_count=655360
执行生效
sysctl -p
3.5 修改/etc/security/limits.conf
末尾添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
3.6 切换es 用户启动
su mtappelk
./bin/elasticsearch -d
3.7 测试
判断是否启动成功:
curl -X GET "127.0.0.1:9200"
或者浏览器访问:
http://192.168.1.123:9200/
4. kibana 安装配置
我们解压 Kibana 后,设置用户和 ES 的用户保持一致。
4.1 修改用户权限和访问权限
这里 logstash 也一起改了
chown -R mtappelk kibana-7.5.0-linux-x86_64
chown -R mtappelk logstash-7.5.0
修改访问权限
chmod -R 777 kibana-7.5.0-linux-x86_64/
4.2 修改配置文件
路径:/kibana-7.5.0-linux-x86_64/config
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.168.21:9200"]
4.3 切换用户启动
su mtappelk
nohup sh./bin/kibana &
6、访问
http://192.168.1.123:5601/
5. logstash 安装配置
5.1 新增 default.conf 配置
解压后,进入config 目录下创建default.conf 文件,内容如下:
# Sample Logstash configuration for creating a simple
# Beats -> Logstash -> Elasticsearch pipeline.
input {
beats {
port => 5044
}
}
output {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
5.2 启动 logstash
nohup sh bin/logstash -f config/default.conf &
启动成功如下:
6. filebeat 安装配置
6.1 修改filebeat.yml
修改配置如下:
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /usr/local/nginx/logs/*.log
#- c:\programdata\elasticsearch\logs\*
- type: log
enabled: true
paths:
- /home/mtex_plat/logs/mtapp*/all.log
#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["localhost:9200"]
# Optional protocol and basic auth credentials.
#protocol: "https"
#username: "elastic"
#password: "changeme"
#----------------------------- Logstash output --------------------------------
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
# Optional SSL. By default is off.
# List of root certificates for HTTPS server verifications
#ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
# Certificate for SSL client authentication
#ssl.certificate: "/etc/pki/client/cert.pem"
# Client Certificate Key
#ssl.key: "/etc/pki/client/cert.key"
配置将日志发送到 logstash
6.2 启动 filebeat
nohup ./filebeat -e -c filebeat.yml -d "publish" &
7. 界面使用
7.1 创建索引
8. 总结
ELK 现在在很多公司都会使用了,作为日志收集平台,开发人员可能更多的在于在 ELK 的使用上,ELK 的部署更多的运维人员看了, 但是如果作为开发人员也能对部署有所了解的话,会不会觉得自己更厉害了点呢哈哈。
转载:https://blog.csdn.net/qq_27790011/article/details/116669600