`

日志平台之ELKStack -学习笔记

 
阅读更多

参考网站:http://kibana.logstash.es/content/

 

一.elasticsearch安装

1.先下载elasticsearch,kibana,logstash,redis的安装包:

   wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.7.3.tar.gz

   wget https://download.elastic.co/kibana/kibana/kibana-4.1.8-linux-x64.tar.gz

   wget http://download.redis.io/releases/redis-3.0.7.tar.gz

   wget https://download.elastic.co/logstash/logstash/logstash-1.5.5.tar.gz

 

2.安装elasticsearch:

   tar -zxvf elasticsearch-1.7.3.tar.gz

   修改配置文件  vim config/elasticsearch.yml

   cluster.name: elk-test

   node.name: "elk-node1" 

   path.logs: /usr/local/elasticsearch/logs

   修改内核参数:vm.max_map_count=262144 (生产必改)  

3.启动:

    /usr/local/elasticsearch/bin/elasticsearch &

   curl 127.0.0.1:9200   查看es的状态信息

4.ES服务管理插件:

   wget https://github.com/elastic/elasticsearch-servicewrapper/archive/master.zip

   mv elasticsearch-servicewrapper-master/service /usr/local/elasticsearch/bin/    放到es的bin目录下面

   /usr/local/elasticsearch/bin/service/elasticsearch install    安装完成以后就可以用init.d启动es了  

 

二.elasticsearch使用


1.es的管理插件的安装:

   /usr/local/elasticsearch/bin/plugin install mobz/elasticsearch-head 安装插件

    http://172.16.1.210:9200/_plugin/marvel/      访问管理插件,由于是收费先点击试用

2.插入数据:

   在网站中点击右上角Dashboards/sense 

   创建索引,并记录下ID:

POST index-demo/test
{
  "user":"wmj",
  "msg":"hello word!"
  
}
   使用get获取数据:
GET index-demo/test/AVVx0dpGfWPOVuhqIoN7
GET index-demo/test/AVVx0dpGfWPOVuhqIoN7/_source

    进行全文搜索:

GET index-demo/test/_search?q=hello

 

 3.安装ES的集群管理插件:

   /usr/local/elasticsearch/bin/plugin -i mobz/elasticsearch-head    安装插件head集群管理

   http://172.16.1.210:9200/_plugin/head/             访问集群管理插件

 4.使用url监控集群健康状态:

   curl -XGET 172.16.1.210:9200/_cluster/health?pretty  

5.不使用广播发现的需要修改下面配置:

  discovery.zen.ping.multicast.enabled: false

  discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]

6.ES的中文在线使用指南:

  http://es.xiaoleilu.com/

      

三.logstash:

1.两种安装方法

   wget https://download.elastic.co/logstash/logstash/logstash-1.5.5.tar.gz    解压安装

   https://www.elastic.co/guide/en/logstash/1.5/package-repositories.html    yum 安装说明

2. 标准输出方式启动:

   ./bin/logstash -e 'input { stdin{} } output{ stdout{} }'          手动输入会屏幕输出

3.将记录输入到ES方式启动:

    ./bin/logstash -e 'input { stdin{} } output{ elasticsearch{ host =>"172.16.1.210" protocol =>"http"} }'  手动输入会记录到ES上面

4.配置文件方式启动logstash:

   vim /etc/logstash.conf :

input{
        file{
        path => "/var/log/messages"
        }
}

output{
        file{
        path => "/tmp/%{+YYYY-MM-dd}-messages.gz"
        gzip => true
        }
        elasticsearch{
        host => "172.16.1.211"
        protocol => "http"
        index => "system-mesages-%{+YYYY.MM.dd}"
        }
}
从message文件输入,一份输出到/tmp/下面,并且压缩,一份输出到ES里面。

   ./logstash -f /etc/logstash.conf                使用配置文件启动logstash

    https://www.elastic.co/guide/en/logstash/1.5/output-plugins.html         配置文件写法的官方说明文档

 

5.生成环境ELK的logstash配置,

     一。日志写入redis

    

input{
        file{
        path => "/var/log/messages"
        }
}
output{
        redis{
        data_type => "list"                   #列表形式写入
        key => "system-messages"       #key 的名称
        host => "172.16.1.211"
        port => "6379"
        db => "1"                                #生产环境每一种日志分别写入一个db
        }
}

   PS:可以连接到redis里面,输入select 1 , keys * ,  LLEN system-messages 来查看是否正常写入

 

    二。在redis服务器上面用logstash采集redis数据存到ES上面。

   

input{
        redis{
        data_type => "list"
        key => "system-messages"
        host => "172.16.1.211"
        port => "6379"
        db => "1"
}
}
output{
        elasticsearch{
        hosts => "172.16.1.210"
        protocol => "http"
        index => "system-redis-messages-%{+YYYY.MM.dd}"
}
}

 

6.生成环境让nginx生成的日志采用json方式输出,并使用logstash进行采集。

   一。配置nginx.conf文件,采用json输出日志:

 

http 配置里面:

    log_format logstash_json '{ "@timestamp": "$time_iso8601", '
                '"host": "$server_addr", '
                '"client": "$remote_addr", '
                '"size": $body_bytes_sent, '
                '"response_time": $request_time, '
                '"domain": "$host", '
                '"url": "$uri", '
                '"referer": "$http_referer", '
                '"agent": "$http_user_agent", '
                '"status":"$status"}';

    access_log  /var/log/nginx/access_json.log  logstash_json;

    二。使用AB命令制作测试数据:

       ab -n1000 -c10 http://172.16.1.210:81/

    三。配置logstash采集nginx的数据写入到redis里面。

   

input{

        file{
        path => "/var/log/nginx/access_json.log"
        codec => "json"
        }

}
output{
        redis{
        data_type => "list"
        key => "nginx-access-log"
        host => "172.16.1.211"
        port => "6379"
        db => "2"
        }

}

 四。将redis的数据通过logstash写入到es里面。

  

input{
        redis{
        data_type => "list"
        key => "nginx-access-log"
        host => "172.16.1.211"
        port => "6379"
        db => "2"
}
}
output{
        elasticsearch{
        hosts => "172.16.1.210"
        protocol => "http"
        index => "logstash-nginx-redis-messages-%{+YYYY.MM.dd}"
}
}

       ps:输出到es的时候表名称前面要有logstash,否则类型会有问题。

五。将nginx的日志使用geoip处理,加上地理位置信息。

  

filter {
    if [type] == "gigold-nginx-access-log"{
        geoip {
            source => "clientip"
            database => "/etc/logstash/GeoLiteCity.dat"
            fields => ["city_name", "country_name", "real_region_name", "ip"]
        }
    }

    if [type] == "lehome-nginx-access-log"{
        geoip {
            source => "xff"
            database => "/etc/logstash/GeoLiteCity.dat"
            fields => ["city_name", "country_name", "real_region_name", "ip"]
        }

    }

    mutate {
        convert => ["status", "integer"]
    }
}

 

.KIBANA学习:

   1.安装kibana并配置访问的es:

       tar -zxvf kibana-4.1.8-linux-x64.tar.gz

       vim config/kibana.yml:  

       elasticsearch_url: "http://172.16.1.210:9200"    只要配置这一项

  2.启动和访问kibana:

    nohup ./bin/kibana &

    http://172.16.1.210:5601       访问地址

  3.初始化配置:

    Index name or pattern:  [nginx-redis-messages-]YYYY.MM.DD

   4.kibana的搜索语法:

      status:200 OR status:404          查找status等于200或者404的

     status:[400 TO 499]          查找status等于400到499的


 

 

  • 大小: 25.7 KB
分享到:
评论

相关推荐

    ELK-STACK-PROJECT-NKB:Nathaniel Buchanan的ELK堆栈项目存储库。 在犹他大学网络安全训练营期间创建

    在这个名为"ELK-STACK-PROJECT-NKB"的项目中,Nathaniel Buchanan在犹他大学网络安全训练营期间构建了一个ELK堆栈实例,为学习者提供了实践和理解这一技术的平台。 1. **Elasticsearch**:作为ELK堆栈的核心,...

    ELK学习笔记(六)【原创】

    标题 "ELK学习笔记(六)【原创】" 暗示了这是一篇关于ELK Stack(Elasticsearch、Logstash、Kibana)的系列教程中的第六部分,主要聚焦于Logstash,一个用于数据收集、处理和转发的工具。在ELK Stack中,Logstash扮演...

    资料包-最全ELK+项目【Elasticsearch Logstash Kibana】

    总结来说,这个资料包提供了全面的ELK Stack学习资源,包括课堂笔记、软件安装包、项目源码和SQL文件,涵盖了从理论知识到实际操作的各个环节,对于想要深入理解和运用ELK Stack进行日志管理和分析的IT从业者来说是...

    ElasticSearch学习笔记

    ElasticSearch学习笔记 ElasticSearch是基于Apache Lucene的搜索和数据分析引擎,提供了RESTful API用于数据的索引、搜索和分析。本笔记将对ElasticSearch的基本概念、架构、应用场景和实现细节进行详细介绍。 一...

    Elasticsearch核心技术与实战 笔记

    - 日志分析:ELK Stack最初设计用于日志数据的收集、存储、分析和可视化。 - 数据分析:除了日志,ELK Stack还能处理各种类型的数据,如指标、事件等。 - 安全分析:可用于安全信息与事件管理(SIEM),帮助识别...

    Java项目学习笔记: SSM实战项目-Java高并发秒杀API,详细流程+学习笔记

    在本Java项目学习笔记中,我们关注的是SSM(Spring、SpringMVC、MyBatis)框架下的高并发秒杀API实现。这是一个典型的电商场景,其中涉及到的技术点广泛且实用,对于提升Java开发者处理高并发问题的能力至关重要。...

    Java分布式应用学习笔记

    Java分布式应用学习笔记 在Java世界中,分布式应用是指由多个独立组件通过网络通信协同工作的系统。这种架构模式常用于构建大规模、高可用性、可扩展的系统。本笔记将深入探讨Java分布式应用的核心概念、技术和实践...

    Elastic Stack.zip

    通过学习这些讲义,可以深入理解Elastic Stack的各个组件及其工作原理,提升日志管理和数据分析能力。 总之,Elastic Stack提供了一个全面的解决方案,用于日志收集、处理、存储、搜索和可视化,是现代IT环境中不可...

    es..kibana相关笔记-.zip

    Elasticsearch(ES)是基于Lucene的分布式搜索引擎,它以高效、可扩展性和实时性著称,广泛用于大数据分析和日志...通过这些笔记和PPT,你可以深入理解ELK Stack在日志管理和数据分析中的应用,提升你的数据处理能力。

    java在线视频学习系统,带有笔记功能和小组讨论功能,mysql数据库配置

    监控和日志管理工具如Prometheus和ELK Stack能帮助跟踪系统性能和故障排查。 以上知识点构成了一个完整的Java在线视频学习系统,每个部分都需要深入理解和实践,以提供稳定、高效、用户体验良好的在线学习环境。

    ElasticSearch_Windows实现搜索学习笔记.pdf

    6. 日志数据分析:配合Logstash收集和分析日志,ELK(Elasticsearch、Logstash、Kibana)组合广泛应用。 7. 商品价格监控:通过订阅,当商品价格低于特定阈值时,发送提醒。 8. BI系统:商业智能分析,如用户消费...

    logline:这是logline.fr回购

    "做笔记"功能可能允许用户在平台上创建个人笔记,记录他们在学习日志分析过程中的心得、技巧或是特定问题的解决方案,方便日后查阅和分享。 从标签"HTML"来看,logline.fr可能也涉及了网页开发和设计的内容,因为...

    谷粒商城项目笔记.zip

    6. **数据分析与监控**:使用ELK Stack(Elasticsearch、Logstash、Kibana)进行日志分析,以及Prometheus、Grafana的使用,实现系统监控。 7. **持续集成/持续部署(CI/CD)**:Jenkins、GitLab CI/CD等工具的配置和...

    CXF笔记

    9. 日志和监控,如何设置和分析CXF的日志输出,以及如何集成像Prometheus或ELK Stack这样的监控系统。 总之,这份CXF笔记是深入理解并掌握CXF框架的重要参考资料,无论你是初学者还是经验丰富的开发者,都可以从中...

    软考高级系统架构师经验复习笔记仅供个人学习使用

    了解性能测试工具(如JMeter、LoadRunner)和日志分析工具(如ELK Stack)可以帮助进行性能监控和故障排查。 八、持续集成与持续部署(CI/CD) CI/CD是现代软件开发流程的关键组成部分。理解Jenkins、GitLab CI/CD...

    devops笔记devops笔记

    6. 监控与日志:Prometheus、ELK Stack(Elasticsearch、Logstash、Kibana)提供实时监控和日志分析能力。 7. 云平台:AWS、Azure、Google Cloud等云服务商提供了丰富的DevOps工具和服务。 四、DevOps最佳实践 1. ...

    构建JAVA大型分布式电商项目实战高并发集群分布式系统架构PDF+视频.rar

    - 日志收集(如Logstash)和分析(如ELK Stack)对于故障排查至关重要。 - 监控工具(如Prometheus、Grafana)实时监控系统性能指标。 10. **持续集成/持续部署(CI/CD)** - Jenkins、GitLab CI/CD等工具实现自动...

    reading-notes-repository

    10. 监控和日志:如Prometheus、ELK Stack(Elasticsearch、Logstash、Kibana),用于收集、分析和展示系统运行数据。 这个"Ops 201笔记"项目可能是对这些知识的详细记录和总结,通过学习笔记,可以帮助读者深入...

    DevOps笔记DevOps笔记

    6. 监控与反馈:使用日志分析和性能监控工具(如ELK Stack或Prometheus)收集数据,发现问题并进行优化。 四、DevOps的最佳实践 1. 基于微服务的架构:微服务架构使得每个服务都可以独立开发、部署和扩展,提高...

    微服务项目(学成在线)资料.zip

    8. **监控与日志**:Prometheus、Grafana用于监控服务性能,ELK Stack(Elasticsearch、Logstash、Kibana)处理日志收集和分析。 9. **容错机制**:Hystrix等库提供断路器模式,防止服务故障导致整个系统的雪崩。 ...

Global site tag (gtag.js) - Google Analytics