本文共 3067 字,大约阅读时间需要 10 分钟。
我们平时分析log直接在日志文件中 grep、awk 就可以获得自己想要的信息,此方法效率低下,生产中需要集中化的日志管理,所有服务器上的日志收集汇总
Elasticsearch
一个节点(node)就是一个Elasticsearch实例,一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。做为用户,我们能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,它们可以转发请求到相应的节点上。我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch处理。一个完整的集中式日志系统,需要包含以下几个主要特点:收集-能够采集多种来源的日志数据传输-能够稳定的把日志数据传输到中央系统存储-如何存储日志数据分析-可以支持 UI 分析警告-能够提供错误报告,监控机制fluentd基于CRuby实现,并对性能表现关键的一些组件用C语言重新实现,整体性能不错。fluentd支持所有主流日志类型,插件支持较多,性能表现较好logstash支持所有主流日志类型,插件支持最丰富,可以灵活DIY,但性能较差,JVM容易导致内存使用量高。Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能Kibana 也是一个开源和免费的工具,Kibana可以为 td-agent和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
两个node都下载
#yum install java 下载java环境#java -version#wget #rpm -ih elasticsearch-6.3.1.rpmNode1(主)#vim /etc/elasticsearch/elasticsearch.yml cluster.name: my-application //集群名称node.name: node-1 //主机名称node.master: true //主为truenetwork.host: 172.21.0.9 //主机iphttp.port: 9200 //端口Node2 (从)
#vim /etc/elasticsearch/elasticsearch.ymlcluster.name: my-applicationnode.name: node-2node.master: falsenetwork.host: 172.21.0.37http.port: 9200discovery.zen.ping.unicast.hosts: ["host1", "172.21.0.9”] //集群
#/etc/init.d/elasticsearch start
#/etc/init.d/elasticsearch status#curl //测试#curl //测试#wget
#rpm -ivh td-agent-3.2.0-0.el7.x86_64.rpm --force --nodeps#yum install -y libcurl-devel#/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch#cd /etc/td-agent/#cat td-agent.conf //内容可以直接替换
<source>@type forwardport 24224</source>####################################<source>@type tailpath /var/log/httpd/access_logpos_file /var/log/td-agent/httpd-access.log.postag apache.access<parse>@type apache2</parse></source>####################################<match debug.*>@type stdout</match>####################################<match .**>@type copy<store>@type elasticsearchhost 172.21.0.9port 9200logstash_format truelogstash_prefix fluentd-${tag}logstash_dateformat %Y%m%dinclude_tag_key truetype_name access_logtag_key @log_nameflush_interval 1s</store><store>@type stdout</store></match>
#/etc/init.d/td-agent restart
#chmod 777 -R /var/log/httpd/#tail -f /var/log/td-agent/td-agent.log //测试#curl '’ //测试#wget
#rpm -ivh kibana-6.3.1-x86_64.rpm#vim /etc/kibana/kibana.ymlserver.port: 5601 //端口server.host: “172.21.0.9" elasticsearch.url: "”kibana.index: ".kibana”
#/etc/init.d/kibana restart //重启服务
#tail -f /var/log/kibana/kibana.stderr //查看浏览器访问 172.21.0.9:5601然后在kibana客户端web界面设置Fluentd-log选项
- 查看当前集群的状态curl ''2.查看当前nodecurl ''3.查看所有的indexcurl ''4.创建一个indexcurl -XPUT 'IP:PORT/customer?pretty'5.创建一个index 带有文档的curl -XPUT 'IP:PORT/customer/external/1?pretty' -d '{ "name": "John Doe"}'6.删除一个indexcurl -XDELETE 'IP:PORT/customer?pretty'curl -XDELETE 'IP:PORT/onland-*?pretty’
转载于:https://blog.51cto.com/13767724/2152883