• ELK+Logback进行业务日志分析查看


     

    第1章 Elasticsearch安装部署

    1.1 下载软件包并创建工作目录

    程序下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz

    下载时间过长,建议登录至服务器下载;

    ‘’’
    # 下载官方新版本软件包
    # 解压文件至指定目录并重命名
    # 创建用户且将elasticsearch程序目录属主属组设置为elasticsearch用户
    ‘’’
    
    # wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.0-linux-x86_64.tar.gz
    
    # tar zxvf  elasticsearch-7.5.0-linux-x86_64.tar.gz -C /mnt/elasticsearch
    
    # useradd elasticsearch && chown -R elasticsearch:elasticsearch /mnt/elasticsearch 

    1.2 安装Elasticsearch Head插件

    如果不安装Head插件的话,查询索引及数据等操作不太方便,所以此处安装了Head插件

    ‘’’
    1.# 到官方下载最新版本的nodejs软件包(https://nodejs.org/en/download/)
    2.# 解压压缩包
    3.# 在/etc/profile文件中配置好环境变量
    4.# 执行验证
    5.# 下载head插件并修改配置文件
    6.# 安装服务启动命令
    7.# 启动命令验证
    8.# 安装相关程序
    9.# 后台启动head插件
    10.# 查看服务是否启动成功,端口是否存在
    ‘’’

    1 # 下载过程省略。。

    2 # tar zxvf  node-v11.10.0-linux-x64.tar.gz -C /usr/local/node-v11.10.0-linux-x64

    3 # vim /etc/profile

        export NODE_HOME=/usr/local/node-v11.10.0-linux-x64

       export NODE_PATH=$NODE_HOME/lib/node_modules

       export PATH=$NODE_HOME/bin:$PATH

       export PATH

    4 # node -v

    v11.10.0

    5 # cd /mnt/elasticsearch && git clone https://github.com/mobz/elasticsearch-head.git

    5 # vim /mnt/elasticsearch/elasticsearch-head/_site/app.js (找到下列行进行修改)

    this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://ES_IP:PORT"

    5 # vim /mnt/elasticsearch/elasticsearch-head/Gruntfile.js (找到下列行进行修改)

              hostname: '0.0.0.0',

              port: 9100,

              base: '.',

              keepalive: true

    6 # npm install -g grunt

    6 # npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy

    7 # grunt --version

    grunt-cli v1.2.0

    8 # npm install

    9 # nohup grunt server &

    10 # ss -nlt | grep 9100

    1.3 Elasticsearch配置文件修改并启动

    # vim /mnt/elasticsearch/config/elasticsearch.yml
       cluster.name: my-elasticsearch                         // 集群名称(单节点用不上,但集群的话另外的ES也要配置这个名称)
       node.name: node-1                                    // 节点名称
         path.data: /mnt/elasticsearch/data                   // 数据存放路径
         path.logs: /mnt/logs/elasticsearch                   // 日志存放路径
         bootstrap.memory_lock: true                          // 防止es内存被交换出去,避免es使用swap交换分区
         network.host: IP                                     // ES的主机IP地址
         http.port: 9200                                     // ES启动后监听的端口
         cluster.initial_master_nodes: ["node-1"]             // 候选主节点的设备地址,来开启服务时就可以被选为主节点
         gateway.recover_after_nodes: 1                       // 要等几个节点启动完成后,开始初始化数据恢复
         # 使head插件可以访问ES
    http.cors.enabled: true
    http.cors.allow-origin: "*"
    
    #启动LRU法则,回收老数据
    indices.fielddata.cache.size: 20%
    #指定节点为master
    node.master: true
    # vim /mnt/elasticsearch/config/jvm.options                 // 调整ES可使用的内存大小
      -Xms512M
      -Xms512M
    
    # vim /etc/sysctl.conf
      #Elasticsearch设置,在ES启动时,限制ES可以拥有的VMA(虚拟内存区域)的数量
    vm.swappiness=0
    vm.max_map_count=262144
    # sysctl -p                // 使配置生效
    # cd /mnt/elasticsearch/bin
    # ./elasticsearch        // 前台启动ES方便发现问题并调试
    # nohup ./elasticsearch &   (这条命令可等控制台启动ES无报错后使用)
    
    访问http://IP:9100(信息均为Head插件的信息)
    # 因为我这边已经有了索引所以我的效果如下,默认应该是空的,但ES状态为Green正常(黄色也不影响,与分片相关)

    第2章 Logstash安装部署

    2.1 下载软件包并创建工作目录

    程序下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz

    下载时间过长,建议登录至服务器下载;

    ‘’’
       1. # 从官方地址下载程序包
       2. # 解压到指定目录且重命名
       3. # 创建运行用户并且修改程序目录属主属组
    ‘’’
    # wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz
    # tar zxvf  logstash-7.5.0.tar.gz -C /mnt/logstash
    # useradd logstash && chown -R logstash:logstash /mnt/logstash 

    2.2 修改配置文件并启动

    # cd /mnt/logstash/config
    # cp logstash-sample.conf logstash.conf
    # vim logstash.conf
      input {
      tcp {
        host => "IP"                            // 本机IP地址
        port => "5044"                          // Logstash所监听端口号
        mode => "server"                        // 我们为服务端,让客户端发送日志
        codec => json_lines                     // 格式固定为json_lines,否则动态变量appname无法生效
      }
    }
    
    output {
      elasticsearch {
        hosts => "http://IP:9200"                // ES的IP+Port
        action => "index"                        // 行为是索引
        index => "%{[appname]}-%{+YYYY.MM.dd}"   // 索引名称为”服务名+日期”
      }
    }
    
    # vim jvm.options           // 限制logstash使用内存大小
      -Xms512m
      -Xms512m
    # cd /mnt/logstash/bin
    # ./logstash -f /mnt/logstash/config/logstash.conf
    # nohub ./logstash -f /mnt/logstash/config/logstash.conf &    (后台启动logstash,如果担心有问题也可以先前台启动调试)

    第3章  Logback服务配置

    说明:我们的部署流程使用的是Jenkins+Gitlab+Ansible+Python来实现的,所以打包也是由Jenkins直接打包,服务较多,用的基本都是Spring boot框架,但日志方面使用的是Logback,所以以下配置使用的是Logback+Logstash这种方式;

    3.1 修改服务配置并且重新编译

    首先在Jenkins的工作空间中找到服务目录,临时修改各配置

    # cd .jenkins/workspace/$service_name/
    # vim pom.xml       // 新增下列行
            <dependency>
                    <groupId>net.logstash.logback</groupId>
                    <artifactId>logstash-logback-encoder</artifactId>
                    <version>4.10</version>
            </dependency>
    # vim src/main/resource/log/logback.xml      // logback相关配置文件,可咨询开发人员,增加以下配置文件
        
       <!-- logstash日志采集配置 --> <appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender"> <destination>IP:5044</destination> // IP为Logstash服务器的地址 <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder"> <customFields>{"appname": "test"}</customFields> // “test”为此服务名称,这是自定义的,服务名称是什么就写什么 </encoder> </appender> <root> // 下面这一段默认存在,所以只用添加省略号之间的那句话即可 <level value="${level}" /> <!--<appender-ref ref="STDOUT" />--> ...... <appender-ref ref="LOGSTASH" /> ...... </root> # mvn clean package // 重新打一个服务jar包上测试环境替换

    3.2 登录ES-Head插件验证

    访问http://IP:9100,查看索引位置是否存在自己以服务名命名的索引,如果存在则可以进行下一步操作啦,如果没有的话可以调整一下logstash的配置文件

    # vim logstash.conf
      input {
      tcp {
        host => "IP"                            // 本机IP地址
        port => "5044"                          // Logstash所监听端口号
        mode => "server"                     // 我们为服务端,让客户端发送日志
        codec => json_lines                    // 格式固定为json_lines,否则动态变量appname无法生效
      }
    }
    
    output {
      stdout {
         codec => json_lines                 
    }
    }
    
    # cd /mnt/logstash/bin
    # ./logstash -f /mnt/logstash/config/logstash.conf
    
    # 然后在测试环境重启一下服务,查看一下logstash前台是否有日志收集过来,如果没有的话,查看logback配置的logstash的地址及端口与服务所在的服务器之间是否能够正常通讯;

    第4章 Kibana安装配置及使用

    4.1 下载软件包并创建工作目录

    下载时间过长,建议登录至服务器下载;

    ‘’’
       1. # 从官方地址下载程序包
       2. # 解压到指定目录且重命名
       3. # 创建运行用户并且修改程序目录属主属组
    ‘’’
    # wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.0-linux-x86_64.tar.gz
    # tar zxvf  kibana-7.5.0-linux-x86_64.tar.gz -C /mnt/kibana
    # useradd kibana && chown -R kibana:kibana /mnt/kibana

    4.2 修改配置文件并启动

    # cd /mnt/kibana/config
    # vim kibana.yml
      server.port: 5601                             // kibana监听的端口号
      server.host: "IP"                            // kibana所在的服务器IP地址
      server.maxPayloadBytes: 1048576              // 最大请求负载(单位Byte)
      elasticsearch.hosts: ["http://IP:Port"]      // ES的网络地址
      kibana.index: ".kibana"                      // kibana默认创建的索引
      elasticsearch.requestTimeout: 30000          // 请求连接ES的最大超时时间(单位 ms)
      pid.file: /mnt/kibana/kibana.pid             // pid存放位置
      i18n.locale: "zh-CN"                        // 配置为中文界面
    # cd /mnt/kibana/bin
    # ./kibana                                // 前台启动方便发现问题
    # nohub ./kibana &                          // 调试完成后可直接后台运行

    4.3 验证是否启动成功

    1.如果访问http://IP:5601出现如下界面的话,则说明Kibana启动成功

    2. 创建索引模式用来匹配ES上的索引名称

    3. 红框中填入你要匹配的规则,类似正则表达式;

     4.默认以@timestamp作为筛选字段即可

    5. 选中左边的第一个则代表查看匹配到的数据,第二个红框代表只看message这个字段的内容

    至此,ES+Logstash+logback+Kibana就完成啦!

  • 相关阅读:
    实验 7:OpenDaylight 实验——Python 中的 REST API 调用
    实验 6:OpenDaylight 实验——OpenDaylight 及 Postman实现流表下发
    实验 5:OpenFlow 协议分析和 OpenDaylight 安装
    实验 4:Open vSwitch 实验——Mininet 中使用 OVS 命令
    实验 3:Mininet 实验——测量路径的损耗率
    软件工程第一次作业——自我介绍
    实验 2:Mininet 实验——拓扑的命令脚本生成
    实验1、Mininet 源码安装和可视化拓扑工具
    第01组 Beta版本演示
    第01组 Beta冲刺(4/4)
  • 原文地址:https://www.cnblogs.com/k-free-bolg/p/12058526.html
Copyright © 2020-2023  润新知