Welcome to the K-free blog;|

k-free

园龄:5年8个月粉丝:5关注:7

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就完成啦!

本文作者:k-free

本文链接:https://www.cnblogs.com/k-free-bolg/p/12058526.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   k-free  阅读(1040)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 新時代 (ウタ from ONE PIECE FILM RED) Ado
新時代 (ウタ from ONE PIECE FILM RED) - Ado
00:00 / 00:00
An audio error has occurred.

作词 : 中田ヤスタカ

作曲 : 中田ヤスタカ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

ジャマモノ やなもの なんて消して

ジャマモノ やなもの なんて消して

この世とメタモルフォーゼしようぜ

ミュージック

キミが起こす マジック

目を閉じれば未来が開いて

目を閉じれば未来が開いて

いつまでも終わりが来ないようにって

この歌を歌うよ

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな旋律

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代はこの未来だ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

果てしない音楽がもっと届くように

夢は見ないわ キミが話した

「ボクを信じて」

あれこれいらないものは消して

あれこれいらないものは消して

リアルをカラフルに越えようぜ

ミュージック

今始まる ライジング

目をつぶりみんなで逃げようよ

目をつぶりみんなで逃げようよ

今よりイイモノを見せてあげるよ

この歌を歌えば

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな運命

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代わ この未来を

新時代わ この未来を

世界中全部 変えてしまえば 変えてしまえば

果てしない音楽がもっと届くように

夢を見せるよ 夢を見せるよ

新時代だ

新時代だ

新時代だ