目录
一、什么是Elk/p>
ELK分别代表:
Elasticsearch:负责日志检索和存储
Logstash:负责日志的收集分析,处理
Kibana:负责日志的可视化
Filebeat隶属于Beats。
二、Elk可以做什么/p>
三、ELK架构:
架构一:Elasticsearch + Logstash + Kibana
架构二:Elasticsearch + Logstash + Filebeat + Kibana
架构三:Elasticsearch + Logstash + Filebeat + Kibana + Redis
架构四:Elasticsearch + Fluentd + Filebeat + Kibana
四、Elk的部署之部署ElasticSearch集群环境
(1)ELK安装jdk
(2)部署ElasticSearch集群环境
(3)配置ElasticSearch集群:
(4)安装head插件:
(5) 安装Bigdesk插件
(6)安装cerebro插件
(7)配置开机自启动
(8)安装:node02和node03节点上elasticsearch的配置
(9)检查Elasticsearch集群
一、什么是Elk/h2>
ELK是一整套解决方案,是三个软件产品的首字母缩写。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
ELK分别代表:
Elasticsearch:负责日志检索和存储
ELK是一整套解决方案,是三个软件产品的首字母缩写。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
特点:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash:负责日志的收集分析,处理
一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。
Kibana:负责日志的可视化
Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Filebeat隶属于Beats。
目前Beats包含四种工具:
- Packetbeat(搜集 络流量数据)
- Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
- Filebeat(搜集文件数据)
- Winlogbeat(搜集 Windows 事件日志数据)
二、Elk可以做什么/h2>
ELK组件在海量日志系统的运维中,可用于解决:
1,分布式日志数据集中式查询和管理
2,系统监控,包含系统硬件和应用各个组件的监控
3,故障排查
4,安全信息和事件管理
ELK组件在海量日志系统的运维中,可用于解决:
1,分布式日志数据集中式查询和管理
2,系统监控,包含系统硬件和应用各个组件的监控
3,故障排查
4,安全信息和事件管理
ELK主要解决:开发人员不能登录线上服务器查看详细日志、各个系统虽都有日志,但日志数据分散难以查找、日志数据量大,查询速度慢,或者数据不够实时等问题。
三、ELK架构:
架构一:Elasticsearch + Logstash + Kibana
通过 logstash 收集日志, elasticsearch 分析日志,然后再 kibana 中展示。
架构二:Elasticsearch + Logstash + Filebeat + Kibana
增加了 filebeat 模块,它是一个轻量级的日志收集处理工具 (Agent) ,部署在客户 端, Filebeat 占用资源少,适合于在各个服务器上搜集日志后传输给 Logstash ,生产中使用较多,但缺 点是logstash 出现故障,会造成日志丢失。
Log —— filebeat —– Logstash ——— Elasticsearch ——- Kibana
架构三:Elasticsearch + Logstash + Filebeat + Kibana + Redis
这种架构,通过增加中间件来避免日志丢失。
redis || Log —— filebeat —– Logstash ——— Elasticsearch ——- Kibana || kafka 基本流程如下: 1 、 Logstash-Shipper 获取日志信息发送到 redis 。 2 、 Redis 在此处的作用是防止 ElasticSearch 服务异常导致丢失日志,提供消息队列的作用。 3 、 logstash 是读取 Redis 中的日志信息发送给 ElasticSearch 。 4 、 ElasticSearch 提供日志存储和检索。 5 、 Kibana 是 ElasticSearch 可视化界面插件。
架构四:Elasticsearch + Fluentd + Filebeat + Kibana
这种使用了 fluentd 代替了 logstash 。当然,我们也可以使用 Fluentd 的插件( fluent-plugin elasticsearch )直接将日志发送给 Elasticsearch ,可以根据自己的需要替换掉 Filebeat ,从而形成 Fluentd => ElasticSearch => Kibana 的架构,也称作 EFK 。
四、Elk的部署之部署ElasticSearch集群环境
至少需要三台机器,IP1:192.168.150.15,ip2:192.168.150.16 , ip3:192.168.150.17 ; 内存均在3G之上。
准备工作:
三台虚拟机均在hosts文件中添加IP地址:
# vim + /etc/hosts
192.168.150.15 elk-node01
192.168.150.16 elk-node02
192.168.150.17 elk-node03
(1)ELK安装jdk
包名:jdk-8u144-linux-x64.rpm
node01: xftp上传jdk-8u144-linux-x64.rpm软件包
查看:#ls
拷贝到其他两台虚机中:#scp jdk-8u144-linux-x64.rpm elk-node02:~
yes
输入密码
#scp jdk-8u144-linux-x64.rpm elk-node03:~
yes
输入密码三台虚拟机均要安装: #yum install jdk-8u144-linux-x64.rpm
安装完毕后检查: # java -version
(2)部署ElasticSearch集群环境
安装elasticsearch-7.2.0-x86_64.rpm
拷贝到其他两台虚机中:
#scp elasticsearch-7.2.0-x86_64.rpm elk-node02:~
输入密码
#scp elasticsearch-7.2.0-x86_64.rpm elk-node03:~
输入密码三台虚拟机均要安装elasticsearch包: # yum install elasticsearch-7.2.0-x86_64.rpm
注意:此时不启动服务
(3)配置ElasticSearch集群:
从node01开始备份:
#cd /etc/elasticsearch/
#ls
#cp elasticsearch.yml{,.bak}
更改配置:
#vim elasticsearch.ymlcluster.name: my-elk //集群的节点
node.name: elk-node01 // 集群的名字
path.data: /var/lib/elasticsearch //集群的存放路径
path.logs: /var/log/elasticsearch //日志存放路径
network.host: 192.168.150.15 // 络,写自己的IP地址
http.port: 9200 //监听的端口
discovery.seed_hosts:[“elk-node01”, “elk-node02”, “elk-node03”] //集群
cluster.initial_master_nodes: [“elk-node01”]
# 主节点相关配置,加在配置末尾。
node.master: true
node.data: false
node.ingest: false
node.ml: false
cluster.remote.connect: false
(4)安装head插件:
在5.0版本之后不支持直接把插件包放入es安装目录的plugin目录下,需要单独安装。
1>安装环境支持,需要安装nodejs
# yum install -y nodejs npm
注意此处下载不成功则需要配置扩展源。
扩展源:
#wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
配置完扩展源后,再次下载:
# yum install -y nodejs npm
2>下载head插件
# cd /var/lib/elasticsearch/
此处直接将master.zip压缩包拖进。
3>安装依赖包
1.#yum install openssl bzip2 unzip -y
2.下载运行head必要的文件(放置在文件夹/tmp下):
# cd /tmp
此处直接将phantomjs-2.1.1-linux-x86_64.tar.bz2包拖进。
3.用以下命令把下载到的包添加到npm cache目录中:
# npm cache add phantomjs
4.# cd /var/lib/elasticsearch/
5.解压master.zip:
# unzip master.zip
6.开始安装依赖:
[root@elk-node01 elasticsearch]# cd elasticsearch-head-master/
7.# npm install //此时临时下载的包都会放在tmp下。注意:此处会有 错,提示缺少2.2.16的包,不做处理,忽略。
4>修改配置文件 修改Gruntfile.js
#vim Gruntfile.js
在该文件中添加如下,务必注意不要漏了添加“,” ,这边的hostname:’*’,表示允许所有IP可以访问
options: {
port: 9100,
base: ‘.’,
keepalive: true,
hostname: ‘*’
}
5> 修改elasticsearch-head默认连接地址,将localhost改为本机IP
# vim _site/app.js
this.base_uri = this.config.base_uri || this.prefs.get(“app-base_uri”) ||
“http://192.168.150.15:9200”;
6>修改elasticsearch的配置文件elasticsearch.yml,以允许跨域访问,在文末追加如下代码即可。
#vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: “*”
7> 重启elasticsearch.service
#systemctl enable –now elasticsearch.service
8>启动插件
#cd /var/lib/elasticsearchelasticsearch-head-master/
# nohup ./node_modules/grunt/bin/grunt server &
日志信息:
#tail -f nohup.out
浏览器访问192.168.150.15:9100就能看到我们集群信息
(5) 安装Bigdesk插件
1>下载bigdesk-master.zip
上传bigdesk-master.zip并解压
1.进入到绝对路径
# cd /var/lib/elasticsearch/bigdesk-master/_site/
2.用python启动web服务
# nohup python -m SimpleHTTPServer &
此时通过访问web界面来监控我们的集群状态。
http://IP:8000
(6)安装cerebro插件
1>下载cerebro-0.8.3.tgz
1.将cerebro-0.8.3.tgz包拖进去解压
2.解压:# tar xf cerebro-0.8.3.tgz -C /var/lib/elasticsearch
3.#ln -sv cerebro-0.8.3 cerebro
2>启动
# cd /var/lib/elasticsearch/cerebro
# nohup ./bin/cerebro &
3>浏览器访问IP:9000 就能看到数据分片信息。
(7)配置开机自启动
# vim /etc/rc.d/rc.local 添加以下内容:
cd /var/lib/elasticsearch/elasticsearch-head-master/ && /usr/bin/nohup
./node_modules/grunt/bin/grunt server &
cd /var/lib/elasticsearch/bigdesk/_site && /usr/bin/nohup python -m
SimpleHTTPServer &
cd /var/lib/elasticsearch/cerebro && /usr/bin/nohup ./bin/cerebro &
chmod +x /etc/rc.d/rc.loca#scp /etc/elasticsearch/elasticsearch.yml elk-node02:/etcelasticsearch/
#scp /etc/elasticsearch/elasticsearch.yml elk-node03:/etcelasticsearch/
最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service
(8)安装:node02和node03节点上elasticsearch的配置
node02:
#vim /etc/elasticsearch/elasticsearch.yml
更改如下:
节点名字:elk-node02
络IP:192.168.150.16
node.master: false
node.data: true最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service
node03:
#vim /etc/elasticsearch/elasticsearch.yml
更改如下:
节点名字:elk-node03
络IP:192.168.150.17
node.master: ture
node.data: false最后重启:
#systemctl restart elasticsearch.service
#systemctl enable elasticsearch.service
(9)检查Elasticsearch集群
1>查看集群状态(任意节点执行)
[root@elk-node01 ~]# curl -XGET ‘192.168.150.15:9200/_cluster/healthretty’
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!