二丫讲梵 二丫讲梵
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)

二丫讲梵

行者常至,为者常成
首页
  • 最佳实践
  • 迎刃而解
  • Nginx
  • Php
  • Zabbix
  • AWS
  • Prometheus
  • Grafana
  • CentOS
  • Systemd
  • Docker
  • Rancher
  • Ansible
  • Ldap
  • Gitlab
  • GitHub
  • Etcd
  • Consul
  • RabbitMQ
  • Kafka
  • MySql
  • MongoDB
  • OpenVPN
  • KVM
  • VMware
  • Other
  • ELK
  • K8S
  • LLM
  • Nexus
  • Jenkins
  • 随写编年
  • 家人物语
  • 追忆青春
  • 父亲的朋友圈
  • 电影音乐
  • 效率工具
  • 博客相关
  • Shell
  • 前端实践
  • Vue学习笔记
  • Golang学习笔记
  • Golang编程技巧
  • 学习周刊
  • Obsidian插件周刊
关于
友链
  • 本站索引

    • 分类
    • 标签
    • 归档
  • 本站页面

    • 导航
    • 打赏
  • 我的工具

    • 备忘录清单 (opens new window)
    • json2go (opens new window)
    • gopher (opens new window)
    • 微信MD编辑 (opens new window)
    • 国内镜像 (opens new window)
    • 出口IP查询 (opens new window)
    • 代码高亮工具 (opens new window)
  • 外站页面

    • 开往 (opens new window)
    • ldapdoc (opens new window)
    • HowToStartOpenSource (opens new window)
    • vdoing-template (opens new window)
GitHub (opens new window)
  • Nexus系列文章

  • Jenkins系列文章

  • ELK笔记

    • ELK

      • elk基础环境安装
      • 使用rsyslog传输管理nginx日志
      • 使用filebeat管理微服务日志
        • 3,合理规划。
      • 监控告警之elastalert的配置全解
      • elk采集日志的流程引入kafka集群的配置流程
      • 记一次日志突然写不进去了的处理
    • FileBeat

    • LogStash

    • ElasticSearch

    • Kibana

  • Kubernetes笔记

  • LLM专题

  • 系列专题
  • ELK笔记
  • ELK
二丫讲梵
2019-01-05
目录

使用filebeat管理微服务日志

文章发布较早,内容可能过时,阅读注意甄别。

# 微服务日志打印。

上边是输出了 nginx 日志,从而进行展示,以及各种绘图分析,而现在的需求是,要将微服务当中的日志汇总到 elk 当中以便开发查询日志定位问题。

都知道,微服务第一个特点就是,多,不仅项目多,而且往往单台主机当中也会有多个应用,因此多个日志文件情况下,如何处理才更加快速便捷呢,这里使用了 filebeat 来作为日志转发组件。

架构如图:

image

# 1,配置 filebeat。

主机规划如下图简示:

主机 组件
192.168.100.21 spring-cloud,filebeat-6.5.3
192.168.100.21 spring-cloud,filebeat-6.5.3
192.168.10.10 logstash-6.5.3,elk

像刚刚那样,配置好 yun 源,然后直接安装。

yum -y install filebeat
1

然后来配置 filebeat。

cat > /etc/filebeat/filebeat.yml << EOF
filebeat.inputs:
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-config-server/normal/*.log
  type: "wf1-config"
  fields:
    logsource: 192.168.100.21
    logtype: wf1-config
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-eureka-server/normal/*.log
  type: "wf1-eureka"
  fields:
    logsource: 192.168.100.21
    logtype: wf1-eureka
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-gateway-server/normal/*.log
  type: "wf1-gateway"
  fields:
    logsource: 192.168.100.21
    logtype: wf1-gateway
output.logstash:
  hosts: ["192.168.10.10:5044"]
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  • 多个 input 定义多个应用日志路径,且可以用*.log 进行匹配,默认读取目录下最新的日志。
  • 每个里边都定义一个 type 类型,从而便于上下文衔接。
  • 最后定义日志输出到 elk 的 logstash 的 5044 端口。

再去配置一下另外一台主机。

cat > /etc/filebeat/filebeat.yml << EOF
filebeat.inputs:
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-activity-service/normal/*.log
  type: "wf5-activity"
  fields:
    logsource: 192.168.100.25
    logtype: wf5-activity
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-order-service/normal/*.log
  type: "wf5-order"
  fields:
    logsource: 192.168.100.25
    logtype: wf5-order
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-user-service/normal/*.log
  type: "wf5-user"
  fields:
    logsource: 192.168.100.25
    logtype: wf5-user
- input_type: log
  paths:
    - /home/ishangjie/ishangjie-thirdparty-service/normal/*.log
  type: "wf5-thirdparty"
  fields:
    logsource: 192.168.100.25
    logtype: wf5-thirdparty
output.logstash:
  hosts: ["192.168.10.10:5045"]
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  • 基本上配置与上边差不多,需要注意的一个地方就是 output 的 logstash 的端口,与上台主机不要一致,因为我们要启动多个实例进行管理的。

启动 filebeat。

systemctl enable filebeat
systemctl start filebeat
systemctl status filebeat
1
2
3

# 2,配置 logstash。

针对上边两个主机转过来的日志,在 elk 主机上添加相对应的配置进行接收。

A:

cat > /etc/logstash/conf.d/wf1.conf << EOF
input {
 beats {
   port => "5044"
   host => "192.168.100.21"
  }
}
filter {
  if [fields][logtype] == "wf1-config" {
      json {
      source => "message"
      target => "data"
    }
  }
  if [fields][logtype] == "wf1-eureka" {
    json {
      source => "message"
      target => "data"
    }
  }
  if [fields][logtype] == "wf1-gateway" {
    json {
      source => "message"
      target => "data"
    }
  }
}
output {
  if [fields][logtype] == "wf1-config" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf1-config-%{+YYYY.MM.dd}"
    }
  }
  if [fields][logtype] == "wf1-eureka" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf1-eureka-%{+YYYY.MM.dd}"
    }
  }
  if [fields][logtype] == "wf1-gateway" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf1-gateway-%{+YYYY.MM.dd}"
    }
  }
}
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

B:

cat > /etc/logstash/conf.d/wf5.conf << EOF
input {
 beats {
   port => 5052
   host => "192.168.100.25"
  }
}
filter {
  if [fields][logtype] == "wf5-activity" {
      json {
      source => "message"
      target => "data"
    }
  }
  if [fields][logtype] == "wf5-order" {
    json {
      source => "message"
      target => "data"
    }
  }
  if [fields][logtype] == "wf5-user" {
    json {
      source => "message"
      target => "data"
    }
  }
  if [fields][logtype] == "wf5-thirdparty" {
    json {
      source => "message"
      target => "data"
    }
  }
}
output {
  if [fields][logtype] == "wf5-activity" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf5-activity-%{+YYYY.MM.dd}"
    }
  }
  if [fields][logtype] == "wf5-order" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf5-order-%{+YYYY.MM.dd}"
    }
  }
  if [fields][logtype] == "wf5-user" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf5-user-%{+YYYY.MM.dd}"
    }
  }
  if [fields][logtype] == "wf5-thirdparty" {
    elasticsearch {
      hosts => ["127.0.0.1:9200"]
      index => "wf5-thirdparty-%{+YYYY.MM.dd}"
    }
  }
}
EOF
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
  • 这里通过端口作为豁口,让彼此成为连接,注意要一一对应。
  • 照单全收日志,然后转手发给本机的 es 同学。

启动这两个实例。

nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/wf1.conf --path.data=/usr/share/logstash/data5 &> /logs/logstash_nohup/wf1.out &
nohup /usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/wf5.conf --path.data=/usr/share/logstash/data9 &> /logs/logstash_nohup/wf5.out &
1
2

启动之后可以按上边演示过的步骤,在 kibana 当中添加索引,然后查看日志。

# 3,合理规划。

  • 关于索引。
    • 上边的方式是一个服务配置了一个索引,众所周知,微服务第一大特点就是多,两个环境下来,发现按这种方式分配索引的话,会导致 es 里边集聚很多的索引。这是其一。
  • 关于端口。
    • 按上边的思路,基本上是外部的一台主机,就对应启动了一个端口,这样很容易端口浪费,所以可以进行一下合理规划与配置。
  • 解决上边两个问题。
    • 索引的话,我这边规划的是一台主机一个索引,而非一个服务一个索引。如此算下来,可以从原来二三十个索引缩减到十个以内。当然还可以从其他维度来进行区分。具体操作的办法非常简单,那就是在配置 logstash 实例的时候,在 output 处索引归拢即可。
    • 端口方面,我的规划是一类环境公用一个端口,原来预发线上一共十台服务用了十个端口,现在预发用一个,线上用一个。具体操作就是 filebeat 客户端端口统一,然后 logstash 实例汇总到一起即可。
微信 支付宝
#elk#filebeat
上次更新: 2024/07/04, 22:40:37
使用rsyslog传输管理nginx日志
监控告警之elastalert的配置全解

← 使用rsyslog传输管理nginx日志 监控告警之elastalert的配置全解→

最近更新
01
记录二五年五一之短暂回归家庭
05-09
02
学习周刊-总第210期-2025年第19周
05-09
03
学习周刊-总第209期-2025年第18周
05-03
更多文章>
Theme by Vdoing | Copyright © 2017-2025 | 点击查看十年之约 | 浙ICP备18057030号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式