1.开发人员不能登录线上服务器查看日志
2.各个系统都有日志,日志分散难以查找
3.日志数据量大,查找慢,数据不够实时
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash 。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。
特点:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch #导入密钥
vim /etc/yum.repos.d/elasticsearch.repo #配置yum源
[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
yum install elasticsearch -y #安装elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
cluster.name: yltx #17行 集群名称
node.name: node1 #23行 节点名称
path.data: /data/es-data #33行工作目录
path.logs: /var/log/elasticsearch #37行日志目录
bootstrap.memory_lock: true #43行 防止交换swap分区
network.host: 0.0.0.0 #54行 监听网络
http.port: 9200 #58行 端口
mkdir -p /data/es-data
chown -R elasticsearch:elasticsearch /data/es-data/
生产环境中必须要修改(注意)
vim /etc/security/limits.conf
末尾插入
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
* soft nofile 65535
* hard nofile 65535
systemctl start elasticsearch.service #启动服务
netstat -ntap | grep 9200
ps -ef |grep elasticsearch
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
http://192.168.0.102:9200/_plugin/head/
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
logstash收集日志基本流程: input-->codec-->filter-->codec-->output
1.input:从哪里收集日志。
2.filter:发出去前进行过滤
3.output:输出至Elasticsearch或Redis消息队列
4.codec:输出至前台,方便边实践边测试
5.数据量不大日志按照月来进行收集
vim /etc/yum.repos.d/logstash.repo
[logstash-2.1]
name=Logstash repository for 2.1.x packages
baseurl=http://packages.elastic.co/logstash/2.1/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enable=1
yum install logstash -y
input {
指定输入
}output {
指定输出
}
使用rubydebug方式前台输出展示以及测试
/opt/logstash/bin/logstash -e 'input { stdin {} } output { stdout { codec => rubydebug} }'
hello #输入hello测试
/opt/logstash/bin/logstash -e 'input { stdin {} } output { file { path => "/tmp/test-%{+YYYY.MM.dd}.log"} }'
cat /tmp/test-2020.02.17.log
/opt/logstash/bin/logstash -e 'input { stdin {} } output { file { path => "/tmp/test-%{+YYYY.MM.dd}.log.tar.gz" gzip => true } }'
ll /tmp/
/opt/logstash/bin/logstash -e 'input { stdin {} } output { elasticsearch { hosts => ["192.168.0.102:9200"] index => "logstash-test-%{+YYYY.MM.dd}" } }'
ll /data/es-data/yltx/nodes/0/indices
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.6.0-linux-x86_64.tar.gz
tar zxvf kibana-7.6.0-linux-x86_64.tar.gz -C /opt/
mv /opt/kibana-7.6.0-linux-x86_64/ /usr/local/kibana
vim /usr/local/kibana/config/kibana.yml
server.port: 5601 #2行 访问端口
server.host: "0.0.0.0" #5行 监听网络
elasticsearch.url: "http://192.168.0.102:9200" #12行 ES地址
kibana.index: ".kibana" #20行
/usr/local/kibana/bin/kibana &
netstat -ntap |grep 5601 #查看端口号
http://192.168.0.102:5601/
收集系统日志和收集java异常日志
vim /root/file.conf
input {
file {
path => "/var/log/messages" #收集系统日志
type => "system"
start_position => "beginning"
}
file {
path => "/var/log/elasticsearch/yltx.log" #收集java异常日志
type => "es-error"
start_position => "beginning"
codec => multiline {
pattern => "^\["
negate => true
what => "previous"
}
}
}
output {
if [type] == "system" {
elasticsearch {
hosts => ["192.168.0.102:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
if [type] == "es-error" {
elasticsearch {
hosts => ["192.168.0.102:9200"]
index => "es-error-%{+YYYY.MM.dd}"
}
}
}
/opt/logstash/bin/logstash -f /root/file.conf
ELK官网:https://www.elastic.co/cn/
中文指南:https://www.gitbook.com/book/chenryn/elk-stack-guide-cn/details
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。