微服务之分布式日志 ELK
分布式事务
- 什么是分布式事务
- 在分布式应用中,日志被分布在不同的设备上,为了方便集中管理日志并且得到相应的预期结果,这就是分布式日志.
- 为什么使用分布式日志
- 化繁为简,提高日志处理速度
ELK
-
ELK其实是Elasticsearch, Logstash, Kibana的首字母,通过它们的整合使用,将所有节点上的日志统一收集,管理,访问。其工作流程如下:
-
Elasticsearch: 是个开源分布式搜索引擎
-
解压并进入config目录, elasticsearch.yml
node.name: node-1 path.data: /usr/local/elasticsearch/elasticsearch-7.1.1/data path.logs: /usr/local/elasticsearch/elasticsearch-7.1.1/logs network.host: 127.0.0.1 http.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["127.0.0.1"] cluster.initial_master_nodes: ["node-1"]
-
创建一个用户
- useradd es
- chown -R es:es /usr/local/elasticsearch/elasticsearch-7.1.1
- su es
- /usr/local/elasticsearch/elasticsearch-7.1.1/bin/elasticsearch -d
- curl http://localhost:9200
-
Logstash: 是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据
-
解压并进入bin目录, vim logstash-elasticsearch.conf
input { stdin {} } output { elasticsearch { hosts => '192.168.88.166:9200' } stdout { codec => rubydebug } }
3.启动 ./logstash -f logstash-elasticsearch.conf
-
Kinaba: 使用 Kibana 对 Elasticsearch 索引中的数据进行搜索、查看、交互操作
-
解压并进入config目录
-
vim kibana.yml
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.88.166:9200"] kibana.index: ".kibana"
-
授权es用户: chown -R es:es /usr/local/kibana
-
切回es用户并启动 su - es
/usr/local/kibana/kibana-7.9.1-linux-x86_64/bin/kibana &
-
访问: http://192.168.88.166:5601/
-
切换为中文, 在config/kibana.yml添加
i18n.locale: "zh-CN"
-
日志收集:
1. 对应服务器安装logstash,配置规则,例如新建logstash-apache.confinput { file { path => "/home/project/logs/sys-*.log" start_position => beginning sincedb_path => "/dev/null" codec => multiline { pattern => "^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}" negate => true auto_flush_interval => 3 what => previous } } } filter { if [path] =~ "info" { mutate { replace => { type => "sys-info" } } grok { match => { "message" => "%{COMBINEDAPACHELOG}" } } date { match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ] } } else if [path] =~ "error" { mutate { replace => { type => "sys-error" } } } else { mutate { replace => { type => "random_logs" } } } } output { elasticsearch { hosts => '192.168.88.166:9200' } stdout { codec => rubydebug } }
- 启动logstash: ./logstash -f logstash-apache.conf
- 通过kibana即可看到各个服务日志情况