0
点赞
收藏
分享

微信扫一扫

【react】使用context进行跨级组件数据传递

老罗话编程 2024-01-25 阅读 13
elk

目录

一、日志管理方案

二、完整日志系统基本特征

三、ELK 简介

ELK组件:

1、ElasticSearch

2、Logstash

3、Kibana

 可以添加的其它组件:

 1、Filebeat

2、缓存/消息队列(redis、kafka、RabbitMQ等)

3、Fluentd

三、ELK 的工作原理

四、ELK部署

1、Elasticsearch部署

 ①关闭防火墙和安全机制

 ②设置Java环境

③安装elasticsearch—rpm包

④修改elasticsearch主配置文件

⑤es 性能调优参数

⑥启动elasticsearch是否成功开启

⑦查看节点信息

2、安装 Elasticsearch-head 插件

①编译安装 node

②安装 phantomjs

③安装 Elasticsearch-head 数据可视化工具

④修改 Elasticsearch 主配置文件

⑤启动 elasticsearch-head 服务

⑥通过 Elasticsearch-head 查看 Elasticsearch 信息

⑦插入索引

3、 ELK Logstash 部署(在 Nginx 节点上操作)

①关闭防火墙和安全机制

②更改主机名

③设置Java环境

④安装nginx服务

⑤安装logstash

⑥测试 Logstash

⑦定义 logstash配置文件,读取nginx日志

4、ELK Kiabana 部署 Kiabana

①安装 Kiabana

②设置 Kibana 的主配置文件

③创建索引


一、日志管理方案

1、服务器数量较少时

可以直接登录到目标主机查看日志,通过rsyslog工具或编写shell、python脚本实现日志收集,并集中保存到统一的日志服务器

2、服务区数量较多时

使用ELK大型日志系统,实现日志收集、存储、检索和分析

3、容器环境

使用ELK或Loki+Granfana

二、完整日志系统基本特征

收集:能够采集多种来源的日志数据
传输:能够稳定的把日志数据解析过滤并传输到存储系统
存储:存储日志数据
分析:支持UI分析
警告:能够提供错误报告,监控机制

三、ELK 简介

ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。

ELK组件:

1、ElasticSearch

是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索数据库引擎,用来存储各类日志,并创建索引,方便全文检索。集群化部署,节点分三种类型:master/data/client,设置相同的cluster.name并使用Zen Discovery模块通过单播实现集群中节点的服务发现。

2、Logstash

作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。

Logstash 由 Ruby 语言编写,运行在 Java 虚拟机(JVM)上,是一款强大的数据处理工具, 可以实现数据传输、格式处理、格式化输出。Logstash 具有强大的插件功能,常用于日志处理。 

3、Kibana

 Kibana 通常与 Elasticsearch 一起部署,Kibana 是 Elasticsearch 的一个功能强大的数据可视化 Dashboard,Kibana 提供图形化的 web 界面来浏览 Elasticsearch 日志数据,可以用来汇总、分析和搜索重要数据

 可以添加的其它组件:

 1、Filebeat

轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。常应用于 EFLK 架构当中

2、缓存/消息队列(redis、kafka、RabbitMQ等)

可以对高并发日志数据进行流量削峰和缓冲,这样的缓冲可以一定程度的保护数据不丢失,还可以对整个架构进行应用解耦

3、Fluentd

是一个流行的开源数据收集器。由于 logstash 太重量级的缺点,Logstash 性能低、资源消耗比较多等问题,随后就有 Fluentd 的出现。相比较 logstash,Fluentd 更易用、资源消耗更少、性能更高,在数据处理上更高效可靠,受到企业欢迎,成为 logstash 的一种替代方案,常应用于 EFK 架构当中。在 Kubernetes 集群中也常使用 EFK 作为日志数据收集的方案。

在 Kubernetes 集群中一般是通过 DaemonSet 来运行 Fluentd,以便它在每个 Kubernetes 工作节点上都可以运行一个 Pod。 它通过获取容器日志文件、过滤和转换日志数据,然后将数据传递到 Elasticsearch 集群,在该集群中对其进行索引和存储。

三、ELK 的工作原理

(1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。

(2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。

(3)Elasticsearch 对格式化后的数据进行索引和存储。

(4)Kibana 从 ES 群集中查询数据生成图表,并进行前端数据的展示。

四、ELK部署

1、Elasticsearch部署

 ①关闭防火墙和安全机制

 systemctl disable --now firewalld

 setenforce 0

 ②设置Java环境

 tar xf jdk-8u361-linux-x64.tar.gz

 mv jdk1.8.0_361/ /usr/local/

vim /etc/profile.d/java.sh

source /etc/profile.d/java.sh

java -version

③安装elasticsearch—rpm包

上传elasticsearch-6.7.2.rpm到/opt目录下

使用命令rpm -ivh elasticsearch-6.7.2.rpm或yum localinstall elasticsearch-6.7.2.rpm进行安装

④修改elasticsearch主配置文件

vim /etc/elasticsearch/elasticsearch.yml

 scp /etc/elasticsearch/elasticsearch.yml 192.168.130.20:`pwd`

 scp /etc/elasticsearch/elasticsearch.yml 192.168.130.30:`pwd`

⑤es 性能调优参数

优化最大内存大小和最大文件描述符的数量

vim /etc/security/limits.conf

vim /etc/systemd/system.conf

优化elasticsearch用户拥有的内存权限

vim /etc/sysctl.conf

一个进程可以拥有的最大内存映射区域数,参考数据(分配 2g/262144,4g/4194304,8g/8388608)

sysctl -p

需重启系统生效配置

reboot

⑥启动elasticsearch是否成功开启

systemctl enable --now elasticsearch.service

⑦查看节点信息

浏览器访问  http://192.168.130.10:9200  、 http://192.168.130.20:9200、 http://192.168.130.30:9200 查看节点 Node01、Node02 、Node03的信息

2、安装 Elasticsearch-head 插件

Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。

作用:在web界面实现图形化查看es集群状态,可以在任意一个es节点安装

①编译安装 node

上传软件包 node-v8.2.1.tar.gz 到/opt

②安装 phantomjs

上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2 到/opt

③安装 Elasticsearch-head 数据可视化工具

上传软件包 elasticsearch-head-master.zip 到/opt

④修改 Elasticsearch 主配置文件

vim /etc/elasticsearch/elasticsearch.yml

systemctl restart elasticsearch

⑤启动 elasticsearch-head 服务

必须在解压后的 elasticsearch-head 目录下启动服务,进程会读取该目录下的 gruntfile.js 文件,否则可能启动失败

cd /opt/elasticsearch-head-master/

npm run start &

⑥通过 Elasticsearch-head 查看 Elasticsearch 信息

浏览器访问 http://192.168.130.30:9100/

⑦插入索引

通过命令插入一个测试索引

3、 ELK Logstash 部署(在 Nginx 节点上操作)

Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 nginx 服务器上,用于收集 nginx 服务器的日志信息并发送到 Elasticsearch。

①关闭防火墙和安全机制

 systemctl disable --now firewalld

 setenforce 0

②更改主机名

hostnamectl set-hostname nginx

③设置Java环境

 tar xf jdk-8u361-linux-x64.tar.gz

 mv jdk1.8.0_361/ /usr/local/

vim /etc/profile.d/java.sh

source /etc/profile.d/java.sh

java -version

④安装nginx服务

yum -y install epel-release.noarch

yum -y install nginx

systemctl enable --now nginx

⑤安装logstash

上传软件包 logstash-6.7.2.rpm 到/opt目录下

⑥测试 Logstash

logstash -e 'input { stdin{} } output { stdout{} }'

logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.130.10:9200"] } }'

⑦定义 logstash配置文件,读取nginx日志

vim /etc/logstash/conf.d/nginx.conf

input{
file {
path => "/var/log/nginx/access.log"
type => "nginx_access"
start_position => "beginning"
sincedb_path => "/etc/logstash/sincedb_path/log_progress"
add_field => { "log_hostname" => "${HOSTNAME}" }
}
file {
path => "/var/log/nginx/error.log"
type => "nginx_error"
start_position => "beginning"
sincedb_path => "/etc/logstash/sincedb_path/log_progress"
add_field => { "log_hostname" => "${HOSTNAME}" }
}
}

#filter{}

output{
if [type] == "nginx_access" {
elasticsearch{
hosts => ["192.168.130.10:9200","192.168.130.20:9200","192.168.130.30:9200"]
index => "nginx_access-%{+yyyy.MM.dd}"
}
}
if [type] == "nginx_error" {
elasticsearch{
hosts => ["192.168.130.10:9200","192.168.130.20:9200","192.168.130.30:9200"]
index => "nginx_error-%{+yyyy.MM.dd}"
}
}
}

logstash -f nginx.conf               #启动logstash

4、ELK Kiabana 部署 Kiabana

Kiabana可以安装在任一节点

①安装 Kiabana

上传软件包 kibana-6.7.2-x86_64.rpm 到/opt目录

②设置 Kibana 的主配置文件

vim /etc/kibana/kibana.yml

touch /var/log/kibana.log

chown kibana. /var/log/kibana.log

systemctl enable --now kibana.service

③创建索引

浏览器访问 http://192.168.130.30:5601

举报

相关推荐

0 条评论