个人网站可以做商业用途吗,优化是什么,成都游戏网站开发,网站策划书最后一步怎么做目录
1、EFK简介
2、EFK框架
2.1、Fluentd系统架构
2.2、Elasticsearch系统架构
2.3、Kibana系统架构
3、Elasticsearch接口
4、EFK在虚拟机中安装步骤
4.1、安装elasticsearch
4.2、安装kibana
4.3、安装fluentd
4.4、进入kibana创建索引
5、Fluentd配置介绍 Elas…
目录
1、EFK简介
2、EFK框架
2.1、Fluentd系统架构
2.2、Elasticsearch系统架构
2.3、Kibana系统架构
3、Elasticsearch接口
4、EFK在虚拟机中安装步骤
4.1、安装elasticsearch
4.2、安装kibana
4.3、安装fluentd
4.4、进入kibana创建索引
5、Fluentd配置介绍 ElasticsearchFluentd和KibanaEFK可以进行收集索引搜索和可视化日志数据。Elasticsearch负责数据的存储和索引Fluentd负责数据的调整、过滤、传输Kibana负责数据的展示。今天就来详细介绍一下使用ElasticsearchFluentd和Kibana搭建日志管理系统的详细过程。
1、EFK简介 ElasticsearchFluentd和KibanaEFK可以进行收集索引搜索和可视化日志数据。Elasticsearch负责数据的存储和索引Fluentd负责数据的调整、过滤、传输Kibana负责数据的展示。 fluentd实时收集日志把日志作为JSON stream可以同时从多台server上收集大量日志易于安装有灵活的插件机制和缓冲支持日志转发。它统一实现了每一环节的数据传输只需要关注数据处理的逻辑也不用学习各种API通过配置就可以实现实时增量数据的流出和流入。 Elasticsearch提供了一个分布式多用户能力的全文搜索引擎。基于RESTful web接口且提供持久存储、统计等多项功能。可用于全文搜索、结构化搜索、分析以及将这三者混合使用通过简单的配置就可以做数据复制和分片并且它在NRTNear Real Time方面做了一些优化使得应用在实时性方面有很好的表现。 Kibana 是一个基于浏览器页面的 ElasticSearch 前端展示工具内置了各种查询和聚合操作并拥有图形化展示功能。使用它对日志进行高效地搜索、可视化、分析等各种操作。可以通过各种图表进行高级数据分析及展示。
2、EFK框架 EFK日志处理系统的流程框架如下所示 具体的流程为fluentd进行日志的收集数据来源可以自己设置为容器日志或者存储在本地文件的日志文件收集之后发送给Elasticsearch进行统一的管理、搜索等操作最后kibana将结果展示在web界面上。 日志的处理流程可以简化为 当考虑健壮性时需要复杂配置如图 多了一层fluentd以及备选的点这样日志收集的过程更加稳定以及可靠。
2.1、Fluentd系统架构 fluentd系统如下图所示 fluentd的数据流简单从数据源获取进行集中然后发送到输出的地方流程输入input -- 处理filter不是必须的 -- 输出output input读取日志内容。 output输出常见的有mongodbelasticsearchkafka等只需安装相关的插件即可。 详细结构如下图所示 2.2、Elasticsearch系统架构 Elasticsearch作用fluentd将过滤后的日志内容发给全文搜索服务ElasticSearch提供检索功能。Elasticsearch 的rest请求的传递流程如下所示 用户发起http请求Elasticsearch 的9200端口接受请求后传递给对应的RestAction。RestAction做的事情很简单将rest请求转换为RPC的TransportRequest然后调用NodeClient相当于用客户端的方式请求RPC服务只不过transport层会对本节点的请求特殊处理。
2.3、Kibana系统架构 Kibana是一个强大的数据展示工具。大多数情况下不需要开发任何代码就可以得到一个Dashboard。使用 Kibana 来查询浏览并且可以与存储在 Elasticsearch indices索引中的数据交互。需要做的是 1把数据放到ES中 2是在Kibana页面上配置报表模版或按照规则写一套报表模版。 kibana的工作流程如下 3、Elasticsearch接口 多种语言都可以使用 REST API 通过端口 9200 和 Elasticsearch 进行通信REST请求和应答是典型的JSONJavaScript对象 符号格式。通常情况下一个REST请求包含一个JSON文件其回复也是一个JSON文件。
一个 Elasticsearch 请求和任何 HTTP 请求一样由若干相同的部件组成 curl -XVERB PROTOCOL://HOST:PORT/PATH?QUERY_STRING -d BODY。 其中被 标记的部分分别为 VERB适当的 HTTP 方法 或 谓词 : GET、 POST、 PUT、 HEAD 或者 DELETE。 PROTOCOLhttp 或者 https如果你在 Elasticsearch 前面有一个 https 代理。 HOSTElasticsearch 集群中任意节点的主机名或者用 localhost 代表本地机器上的节点。 PORT运行 Elasticsearch HTTP 服务的端口号默认是 9200。 PATHAPI 的终端路径例如 _count 将返回集群中文档数量。Path 可能包含多个组件例如_cluster/stats 和 _nodes/stats/jvm。 QUERY_STRING任意可选的查询字符串参数 (例如 ?pretty 将格式化地输出 JSON 返回值使其更容易阅读)。 BODY一个 JSON 格式的请求体 (如果请求需要的话)。 GET 可以用来检索文档同样的可以使用 DELETE 命令来删除文档以及使用 HEAD 指令来检查文档是否存在。如果想更新已存在的文档只需再次 PUT。 在请求的查询串参数中加上 pretty 参数这将会调用 Elasticsearch 的 pretty-print 功能该功能 使得 JSON 响应体更加可读。但是 _source 字段不能被格式化打印出来。相反我们得到的 _source 字段中的 JSON 串刚好是和我们传给它的一样。例如 curl -XGET http://localhost:9200/website/blog/123 -d ‘{...}’ 一个查询语句的典型结构 curl -XGET http://localhost:9200/search -d ‘ { QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } } ‘ 要启用表头添加 ?v 参数即可。 Elasticsearch集群个数应该始终被配置为 master 候选节点的法定个数大多数个。法定个数就是 ( master 候选节点个数 / 2) 1。Elasticsearch 自己会输出很多日志都放在 ES_HOME/logs 目录下。默认的日志记录等级是 INFO。
4、EFK在虚拟机中安装步骤
4.1、安装elasticsearch 首先安装JDK或者openJDK这里以openJDK为例然后安装elasticsearch最后启动elasticsearch
[rootelk elk]# yum install java-1.8.0-openjdk -y[rootelk elk]# wget -c https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.3/elasticsearch-2.3.3.rpm[rootelk elk]# yum localinstall elasticsearch-2.3.3.rpm –y[rootelk elk]# systemctl daemon-reload[rootelk elk]# systemctl enable elasticsearch[rootelk elk]# systemctl start elasticsearch
修改防火墙开放9200和9300端口
[rootelk elk]# firewall-cmd --permanent --add-port{9200/tcp,9300/tcp}[rootelk elk]# firewall-cmd –reload
4.2、安装kibana
[rootelk elk]# wget https://download.elastic.co/kibana/kibana/kibana-4.5.1-1.x86_64.rpm[rootelk elk]# yum localinstall kibana-4.5.1-1.x86_64.rpm –y[rootelk elk]# systemctl enable kibana[rootelk elk]# systemctl start kibana
修改防火墙对外开放tcp/5601
[rootelk elk]# firewall-cmd --permanent --add-port5601/tcp[rootelk elk]# firewall-cmd --reload
打开浏览器测试访问kibana的首页http://localhost:5601/
4.3、安装fluentd 安装前查看当前最大打开文件数
$ ulimit -n
如果查看到的是1024那么这个数值是不足的则需要修改配置文件提高数值
vi /etc/security/limits.conf
设置值如下 root soft nofile 65536 root hard nofile 65536 * soft nofile 65536 * hard nofile 65536 然后重启系统。
4.3.1、安装fluentd 执行如下命令命令将会自动安装td-agenttd-agent即为fluentd
$ curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
启动td-agent
$ /etc/init.d/td-agent start$ /etc/init.d/td-agent status
或者
$ systemctl start td-agent$ systemctl status td-agent 简单demo测试HTTP logs curl -X POST -d json{json:message} http://localhost:8888/debug.test 安装必要的插件
$ /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch$ /usr/sbin/td-agent-gem install fluent-plugin-typecast$ /usr/sbin/td-agent-gem install fluent-plugin-secure-forward$ systemctl restart td-agent
如果上面直接安装不了则要gem插件安装rubygems。
4.3.2、配置td-agent 使docker生成的日志输出到elasticsearch修改td-agent的配置
$ vi /etc/td-agent/td-agent.conf
修改内容为如下这里没有填写端口默认使用9200端口 source type forward port 24224 bind 0.0.0.0 /source match alpine:** type elasticsearch logstash_format true flush_interval 10s # for testing host 127.0.0.1 /match 重启td-agent
$ systemctl restart td-agent
启动docker镜像这里使用alpine做测试
docker run --log-driverfluentd --log-opt tag{{.ImageName}}/{{.Name}}/{{.ID}} alpine:3.3 echo helloWorld
检查fluentd是否正常转发数据检查td-agent日志如果最后出现如下一行则表明正常连接elasticsearch。/var/log/td-agent/td-agent.log中最后一行如下 2017-12-26 00:40:37 -0500 [info]: #0 Connection opened to Elasticsearch cluster {:host127.0.0.1, :port9200, :schemehttp} 2017-12-26 01:22:42.071896593 -0500 debug.test: {json:message} 4.3.3、fluentd使用 td-agent默认将配置收集来自http的日志并将日志转储到/var/log/td-agent/td-agent.log如果需要配置fluent接收docker日志则在/etc/td-agent/td-agent.conf中增加并重启tdagentsystemctl restart td-agent match docker.** type stdout /match 配置docker使用fluent为logdriver有两种方法指定特定的容器或者配置docker daemon将所有容器日志均存储到fluent中。 方法1:指定容器 docker run --log-driverfluentd --log-opt fluentdaddressmyhost.local:24224 方法2: 设置全局log-driver docker daemon --log-driverfluentd 至此已经成功将docker的日志交给fluent处理。
4.4、进入kibana创建索引 访问页面http://localhost:5601/
点击“create”即可看到如下设置 5、Fluentd配置介绍 配置文件为vi /etc/td-agent/td-agent.conf配置文件主要由以下指令组成 1source 决定输入源. 2match 决定输出目的地. 3filter 决定事件处理管道. 4system 设置系统广泛的配置. 5label 输出分组和筛选内部路由 6include 包括其他文件. source: 输入源包括http和forwardhttp将fluentd转换为http端点以接收传入的http消息forward将fluentd转换为TCP端点以接受TCP包。当然它可以同时出现。每个源指令必须包含一个类型参数类型参数指定要使用的输入插件。 match: 告诉fluentd做什么match指令使用匹配的标记查找事件并处理它们。最常用的匹配指令是将事件输出到其他系统。Fluentd的标准输出插件包括文件file和转发forward。让我们将这些添加到配置文件中。每个匹配指令必须包含匹配模式和类型参数。只有带有与模式匹配的标记的事件才会被发送到输出目的地. 广泛的匹配模式应该在严格的匹配模式之后定义。 流程就是source 收集日志然后由串联的 filter 做流式的处理最后交给 match 进行分发。同时还可以用 label 将任务分组用 error 处理异常用 system 修改运行参数。日志存储的格式根据源不同比如源是docker的syslog格式就是syslog的日志形式按配置修改主要的格式化配置都在配置文件中的 format 这段配置里主要采用正则表达式拆分数据到自定义的以 包围起来的属性中。