ElK是Elasticsearch、Logstash、 Kibana的缩写,了解这个分布式搜索引擎就要从这三个组件学起。来看看官网的介绍:
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。 作为 Elastic Stack 的核心,它集中存储您的数据,帮助您发现意料之中以及意料之外的情况。
Kibana 是一个免费且开放的用户界面,能够让您对 Elasticsearch 数据进行可视化,并让您在 Elastic Stack 中进行导航。您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
Logstash 是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
一、Elasticsearch、Kibana、Beats的安装过程参照官网:https://www.elastic.co/guide/en/elastic-stack-get-started/current/get-started-elastic-stack.html
二、Elasticsearch 集群
1、集群配置
# ---------------------------------- Cluster -----------------------------------
# 集群名称
cluster.name: elasticsearch-cluster
# 节点名称
node.name: node-
# ip配置
network.host: 0.0.0.0
# 端口配置
http.port: 9200
# 服务发现:es 服务器ip集合
discovery.seed_hosts: ["192.168.1.106","192.168.1.107","192.168.1.108"]
# 初始化主节点名称
cluster.initial_master_nodes: ["node-106"]
2、Elasticsearch-Head查看集群状态
3、Elasticsearch 根据集群名称,通过服务发现获取所有的Elasticsearch服务器节点,并将其加入集群,当主节点宕机,会重新选举新的master节点。(注意遇到节点无法加入集群是注意以下两个问题:1、不要复制节点文件目录到其他集群,复制的节点目录无法加入主节点 2、删除一下data 重新启动就可以了 3、es5之后的都不能使用添加启动参数或者修改配置文件等方法启动了,必须要创建用户,创建elasticsearch文件夹)
二、Kibana可视化图形界面,通过elasticsearch的Api,把数据展示在前端界面上。
1、下载安装kibana
# 下载
curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-darwin-x86_64.tar.gz
# 解压
tar xzvf kibana-7.9.3-darwin-x86_64.tar.gz
cd kibana-7.9.3-darwin-x86_64/
#修改配置文件conf/kibana.yml中的elasticsearch 的ip地址
# The URLs of the Elasticsearch instances to use for all your queries.
elasticsearch.hosts: ["http://192.168.106.116:9200","http://192.168.106.116:9201"]
# 启动
./bin/kibana
2、访问查看:http://192.168.106.116:5601/
三、Beats 是轻量级的数据收集器,数据进过处理后直接输送到elasticsearch或者Logstash,beats种类很多,可以通过官网查看
1、Metricbeat、Filebeat,这两个数据收集器前者是收集系统磁盘、内存、CPU等参数,后者是收集服务器日志(Apache、Nginx、mysql等),看下安装过程
# 1、Metricbeat安装过程
curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-7.9.3-linux-x86_64.tar.gz
tar xzvf metricbeat-7.9.3-linux-x86_64.tar.gz
#将module添加到system
./metricbeat modules enable system
#Set up the initial environment
./metricbeat setup -e
#修改metricbeat.yml文件
host: "192.168.106.116:5601"
output.elasticsearch:
hosts: ["192.168.106.116:9200","192.168.106.116:9201"]
#Start Metricbeat
./metricbeat -e
# 2、Filebeat安装过程
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz
tar xzvf filebeat-7.9.3-linux-x86_64.tar.gz
#确定需要启用的模块
./filebeat modules list
# 修改filebeat.yml文件中elasticsearch和kibana的服务器地址
host: "192.168.106.116:5601"
output.elasticsearch:
hosts: ["192.168.106.116:9200","192.168.106.116:9201"]
# 修改modules.d/apache.yml
- module: apache
# Access logs
access:
enabled: true
var.paths: ["/zyspace/java-project/phoenix-archive/debug/debug-*.log","/zyspace/java-project/phoenix-archive/debug/info-*.log"]
# Error logs
error:
enabled: true
var.paths: ["/zyspace/java-project/phoenix-archive/error/error-*.log"]
#添加相关模块
./filebeat modules enable apache
#Set up assets
./filebeat setup -e
# 启动
sudo chown root filebeat.yml
sudo chown root modules.d/system.yml sudo
./filebeat -e
2、访问查看效果:http://192.168.106.116:5601/app/observability,可以很清楚看到相关日志以及服务器的相关信息,我不需要在到服务器上查看相关的log日志了。
四、Logstast是一个接收,处理,转发日志的工具
1、部署一个java web 应用,然后通过Nginx转发获得网站流量日志。Nginx配置如下
location /phoenix-archive/ {
proxy_pass http://192.168.106.116:9909/phoenix-archive/;
}
2、filebeat 收集日志发送到logstash,logstash配置如下:
#配置filebeat.yml文件
filebeat.inputs:
paths:
- /var/log/*.log
- /usr/local/nginx/logs/access.log
output.logstash:
hosts: ["192.168.106.116:5044"]
#启动filebeat
nohup ./filebeat -e &
3、logstash配置。主要是输入和输出,输入input有file,stdin,http,beats等等,可以同时使用多个,我们使用beat和file;output是输出地址,主要是输出到elasticsearch。
#配置logstash.yml中elasticsearch的服务地址
xpack.monitoring.elasticsearch.hosts: ["http://192.168.106.116:9200"]
xpack.management.elasticsearch.hosts: ["http://192.168.106.116:9200"]
#修改logstash-sample.yml
input {
beats {
port => 5044
}
file {
path => "/usr/local/nginx/logs/access.log"
}
}
output {
stdout {
codec => rubydebug
}
elasticsearch {
hosts => ["http://192.168.106.116:9200", "http://192.168.106.116:9201"]
index => "logstash-nginx-log-%{+YYYY.MM.dd}"
#user => "elastic"
#password => "changeme"
}
}
#启动logstash
nohup ./bin/logstash -f config/logstash-sample.conf &
4、kibana中可视化
4.1 在Management=>Stack Monitoring可以查看logstash的日志监控信息
在点击pipelines可以看到beats和file
4.2 在ManageMent=>Stack ManageMent中查看索引信息
4.3 日志信息收集完了,就需要穿件索引策略,用于后面穿件可视化组件,在Stack ManagerMent=》
index pattern中穿件索引策略。
4.4 在kibana=>discovery中查看日志信息,可以看到日志已经很清楚的汇聚成了柱状图
4.5 在kibana=》visualize中穿件可视化组件,方便以后查看
4.6 在kibana=》DashBoard中把刚才穿件的视图添加到Dashboard中。
至此也算简单的学习了ELK中的重要组件,他们之间相互协同工作,为我们提供分布式的搜索引擎,数据可视化,里面还有很多东西值得去深究,比如logstash对日志的加强处理(Filter plugins各种插件)。
文章详情点击:http://www.xiaoyuge.com.cn/#/article/detail?articleId=74