1. 简介
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:
ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。在elasticsearch中,所有节点的数据是均等的。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
2. 安装elasticsearch
下载elasticsearch、logstash、kibana三个软件安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.3.tar.gz wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.3-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.3.tar.gz
解压安装包
tar -zxvf elasticsearch-6.5.3.tar.gz -C /usr/local/bin
配置master主机上的elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
添加这一段配置文件
log4j.appender.D.Threshold = INFO log4j.appender.D.layout = org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] -[ %p ] %m%n
配置数据节点主机上的elasticsearch
vim /etc/elasticsearch/elasticsearch.yml
添加这一段配置文件
cluster.name: es-cluster node.name: data-node1 node.master: false node.data: true network.host: 192.168.134.130 http.port: 9200 discovery.zen.ping.unicast.hosts: ["192.168.134.129", "192.168.134.130"]
修改系统最大文件打开数
ulimit -Hn //通过这个命令查看系统最大文件打开数的限制
vim /etc/security/limits.conf
user soft nofile 65536 wuhao hard nofile 65536 wuhao soft nproc 2048 wuhao hard nproc 4096
vim /etc/sysctl.conf
添加
vm.max_map_count=655360
加载配置sysctl -p
elasticsearch不能用root用户启动
创建用户 useradd wuhao
设置密码 passwd wuhao
切换用户 su wuhao
给文件夹授权 chmod -R 777 /usr/local
后台启动
bin/elasticsearch -d
查看es集群情况
curl '192.168.134.129:9200/_cluster/health?pretty'
status为green则代表健康没问题,如果是yellow或者red则是集群有问题。
查看集群的详细信息
curl '192.168.134.129:9200/_cluster/state?pretty'
3. 安装kibana
编辑配置文件
tar -zxvf kibana-6.5.3-linux-x86_64.tar.gz -C /usr/local/bin/kibana
vim /usr/local/bin/kibana/config/kibana.yml
server.port: 5601
server.host: 192.168.1.134
elasticsearch.url: "http://192.168.1.134:9200"
启动kibana服务
nohup bin/kibana &
在浏览器访问http:// http://192.168.1.134:5601/
x-pack
4. 安装logstash
新建logstash-index配置文件:
vim /usr/local/logstash/config/logstash-index.conf
input {
beats {
port => "5044"
type => "self-stock"
codec=> plain{
charset=>"UTF-8"
}
}
}
output {
if[type]=="self-stock"{
elasticsearch {
hosts => "192.168.1.134:9200"
index => "self-stock-%{+YYYY.MM.dd}"
codec=> plain{
charset=>"UTF-8"
}
}
}
}
5. 安装filebeat
由于客户端主机是windows系统,这里下载64位windows版本的filebeat客户端
修改配置文件 filebeat.yml
filebeat.inputs:
- type: log
paths:
- C:\workspace\server-self-stock\log\*
multiline.pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}'
multiline.negate: true
multiline.match: after
setup.template.name: "self-stock"
setup.template.pattern: "self-stock-*"
#output.elasticsearch:
# hosts: ["192.168.134.129:9200"]
#index: "self-stock-%{+yyyy.MM.dd}"
output.logstash:
hosts: ["192.168.1.134:5044"]
客户端的filebeat访问服务器的5044端口,在服务器设置开放这个端口
firewall-cmd --permanent --zone=public --add-port=5044/tcpsy
重启生效 stemctl restart firewalld.service
查看是否开放成功 firewall-cmd --query-port=5044/tcp
6. log4j修改日志编码
将.log后缀的文件上传到linux服务器上,使用file filename命令可以看到文件格式,这里我们统一为
UTF-8格式
编辑log4j.properties
log4j.appender.D.File = C://workspace//server//self-stock//log//self-stock-server.log
log4j.appender.D.Encoding=UTF-8