• Windows搭建Log4Net+FileBeat+ELK日志分析系统过程


    参考博客:http://udn.yyuap.com/thread-54591-1-1.html ; https://www.cnblogs.com/yanbinliu/p/6208626.html ; http://blog.csdn.net/wyqlxy/article/details/52622867
     
    在互联网项目中,良好的日志监控和分析能保障业务稳定运行,不过一般情况下日志都分散在各个生产服务器,且开发人员无法登陆生产服务器,这时候就需要一个集中式的日志收集装置,对日志中的关键字进行监控,触发异常时进行报警,协助开发人员查看相关日志。
    ELK就是实现这种功能的一套系统,它是elasticsearch,logstash以及kibana的简称。最近打算将其用来管理数据平台产生的各种日志,这里记录一下在测试环境中搭建的步骤以及遇到的问题。
    大体框架:
    日志数据流如下,应用将日志落地在本地文件,部署在每台服务器上的FileBeat负责收集日志,然后将日志发送给LogStash;LogStash将日志进行处理之后;然后将处理后的Json对象传递给ElasticSearch,进行落地并进行索引处理;最后通过Kibana来提供web界面,来查看日志等。因为ES是基于Lucene的,所以Kibana支持Lucene查询语法。
    image_1b4g890586hv1ag91ks3abv1i62m.png-24.8kB
    对于日志数据流特别大的情况,LogStash会造成拥堵,这个时候可以使用消息队列来进行缓冲。同时,日志一旦进过LogStash之后,会不方面一些流处理程序来读取。这个时候使用kafka就比较好了,因为kafka是将消息持久化在本地,流处理应用可以从消息的offset初始的地方来读取。加入kafka的后的流程如下:
    image_1b4g8qjmjegcnf614pqe61kbf13.png-33.1kB

    安装流程:
    1.软件版本

    logstash版本:1.5.4(因不支持beats输入插件,故弃用),2.2.1(目前使用版本)

    elasticsearch版本:1.7.1

    kinaba版本:4.1.1

    filebeat版本:5.5.1

    java版本:jdk-8u152

    2.安装步骤

    步骤一、下载Java组件并安装

    下载最新版本的jdk,解压缩双击安装。注:请务必使用java8以上的版本,否则ELK不能正常使用。

    步骤二、添加JAVA_HOME 环境变量

    右键“这台电脑“-〉属性-〉高级系统设置-〉环境变量,在系统变量里新建JAVA_HOME,值为C:Javajdk1.8.0_152,如下图所示

    步骤三、安装配置nginx,为kibana配置反向代理

    解压nginx-1.9.4.zip到f:elk,目录更名为nginx.
    修改f:elk ginxconf ginx.conf文件,增加如下内容
    server{
            listen       80;
            server_name  localhost;
            location / {
           proxy_set_header Host $host;
            proxy_pass http://localhost:5601;
            }
    这样做解决了5601端口被防火墙屏蔽,导致外部用户访问不了的问题。

    步骤四、安装elasticsearch

    解压elasticsearch-1.7.1.zip压缩包到F:elkelasticsearch地址下

    打开命令行,输入如下命令
    Pushd f:elkelasticsearchin
    Service install 
    产生如下输出
    然后输入
    service manager
    出现如下界面
    修改“Startup type “ ,从Manual到Automatic。
    然后点击”Start“, elasticsearch将立即开始运行。
    在浏览器中输入http://localhost:9200,出现如下界面,表明elasticsearch安装成功。

    步骤五、安装head插件

    解压elasticsearch-head-master.zip压缩包内容到elasticsearchplugins文件夹下,修改elasticsearch-head-master名称为head,在浏览器中输入http://localhost:9200/_plugin/head/即可查看Elasticsearch中数据

     

    步骤六、安装logstash

    解压logstash-2.2.1.zip压缩包到F:elklogstash地址下

    在f:elklogstashin里新建Logstash.conf
    内容如下

    input {
    beats {
    port => "5544"
    codec => json {
    charset => "UTF-8"
    }
    }
    }
    filter {
    if [type] == "info" {
    grok {
    match => {
    "message" => "(?<datetime>d{4}-d{2}-d{2}sd{2}:d{2}:d{2},d{3})s+[(?<thread>.*)]s+(?<level>w*)s+(?<class>S*)s+[(?<method>S*)]s+: (?<message>.*)s*"
    }
    overwrite => ["message"]
    }
    }
    if [type] == "error"{
    grok {
    match => {
    "message" => "(?<datetime>d{4}-d{2}-d{2}sd{2}:d{2}:d{2},d{3})s+[(?<thread>.*)]s+(?<level>w*)s+(?<class>S*)s+[(?<method>S*)]s+- (?<message>.*)s*"
    }
    overwrite => ["message"]
    }
    }
    }
    output {
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "test-%{+YYYY-MM}"
    }
    stdout { codec => rubydebug }
    }

    步骤七、新建Logstash 启动批处理文件
    在文件夹f:elklogstashin下新建run.bat 文件
    文件内容如下
    logstash.bat agent -f logstash.conf
    增加这个批处理的目的是为了解决在windows环境下logstash运行一段时间就会挂起的问题。
     
    步骤八、Logstash安装成windows服务
    首先从网址https://nssm.cc/release/nssm-2.24.zip下载nssm
    解压nssm-2.24.zip,然后从解压目录中拷贝nssm-2.24win64 ssm.exef:elklogstashin里,然后在命令行里输入
    Pushd f:elklogstashin
    接着执行
    Nssm install logstash
    出现安装界面
     
    请填写如下信息:
    Path: f:elklogstashin un.bat
    Startup directory: f:elklogstashin
    界面如下:

    点击"Details"页签,填写如下内容
    Display namelogstash
    Startup typeAutomatic
    界面如下:

    接下来点击"Dependencies"页签,填写如下信息
    This service depends on the followingsystem components: elasticsearch-service-x86
    界面如下:


    添加依赖的原因是,logstash的输出配置的是Elasticsearch,如果Elasticsearch没有启动,logstash无法正常工作。
    最后单击install service按钮,执行安装过程,出现如下界面,表示服务已经安装成功。
    步骤九、将Kibana安装成windows服务
    将步骤八下载的nssm拷贝到文件夹f:elkkibanain下。
    然后在命令行里输入
    Pushd f:elkkibanain
    接着执行
    Nssm install kibana
    出现安装界面
    请填写如下信息:
    Path: f:elkkibanainkibana.bat
    Startup directory: f:elkkibanain

    界面如下:

    类似步骤八
    点击"Details"页签,填写如下内容
    Display namekibana
    Startup typeAutomatic
    界面如下:

    接下来点击"Dependencies"页签,填写如下信息
    This service depends on the followingsystem components:
    elasticsearch-service-x86
    logstash
    界面如下:


    最后单击install service按钮,执行安装过程,出现如下界面,表示服务已经安装成功。

    你可以在"f:elkkibanaconfigkibana.yml"中修改kibana的运行端口。

     步骤十、安装FileBeat

    (一)、安装

    1.将文件夹中filebeat-5.5.1-winsows-x86_64.zip压缩包(也可自行下载)解压到C:filebeat文件夹

    2.以管理员身份运行PowerShell(此处不要用cmd.exe),在控制台中输入以下命令安装

    CD C:filebeat

    .install-service-filebeat.ps1

    3.安装过程中会出现以上错误,此时需更改执行策略,语句如下

    Set-executionpolicy RemoteSigned

    选择:y  执行完后重新执行安装命令

    .install-service-filebeat.ps1

    至此安装成功,此时可看到filebeat服务为关闭状态

    4.在开始菜单-运行输入Services.msc打开本地服务操作栏,找到filebeat.exe,启动服务

     

    (二)、配置

    1.打开C:filebeat文件夹,找到filebeat.yml配置文件,打开

    2.将以下内容替换到配置文件中,根据需要更改配置内容(注意,由于文件为yml格式,所以同一模块中的行列需对齐,否则无法读取该配置文件)

    (三)、数据查看

    重新启动服务,往配置文件所在的日志目录中插入数据,打开http://localhost:9200/_plugin/head/http://localhost:5601即可查看新增的日志数据

    附:

    测试数据(2017120713.TXT)

    2017-12-07 13:00:24,330 [service_FlightInfoDeptDateCalculater0] INFO DispatchAssist.ACARSMonitorNew.FlightInfoDeptDateCalculater [Save] : 共有22条数据需要更新
    2017-12-07 13:00:25,220 [service_ACARSMonitorNew0] INFO DispatchAssist.ACARSMonitorNew.ACARSParser [ACARSReportMatches] : M11开始解析............. QU SHAITMU
    .BJSXCXA 070500
    M11
    FI MU2412/AN B-1018
    DT BJS LHW 070500 M42A
    - POS
    CAS 288,LAT N 38.388,LON E105.944,ALT 25580,FOB 15960,UTC 050023
    2017-12-07 13:30:41,718 [service_ACARSMonitorNew0] INFO Ceair.Operations.WindowsServiceClient.Program [SingleThreadTask] : 下次执行时间:2017-12-07 13:30:41
    2017-12-07 13:30:41,718 [service_ACARSMonitorNew0] INFO Ceair.Operations.WindowsServiceClient.Program [SingleThreadTask] : Sleep:30000

  • 相关阅读:
    如何让我domain里的机器都跟domain controller的时间保持一致?
    [PowerShell Utils] Create a list of virtual machines based on configuration read from a CSV file in Hyper-V
    Reboot server stuck at “Press ESC in 1 seconds to skip startup.nsh”
    [PowerShell Utils] Remotely install Hyper-V and Failover Cluster feature on a list of windows 2012 servers
    [PowerShell Utils] Automatically Change DNS and then Join Domain
    SharePoint 2016 IT Preview的新feature列表
    LeetCode Permutations问题详解
    Rotate Image 旋转图像
    单链表的快速排序(转)
    anagrams 查找序列里具有相同字符但顺序不同的单词
  • 原文地址:https://www.cnblogs.com/byfcumt/p/8023225.html
Copyright © 2020-2023  润新知