CentOS 7 安装 ELK 7.4.2

日志主要包括系统日志和应用程序日志,运维和开发人员可以通过日志了解服务器中软硬件的信息,检查应用程序或系统的故障,了解故障出现的原因,以便解决问题。分析日志可以更清楚的了解服务器的状态和系统安全状况,从而可以维护服务器稳定运行。
​ 但是日志通常都是存储在各自的服务器中。如果管理数十台服务器, 查阅日志需要依次登陆不同的服务器,查看过程就会很繁琐从而导致工作效率低下。虽然可以使用 rsyslog 服务将日志汇总。但是统计一些日志中的数据或者检索也是很麻烦的,一般使用grep、awk、wc、sort等Linux命令来统计和检索。如果对数量巨大的日志进行统计检索,人工的效率还是十分低下。

通过我们对日志进行收集、汇总到一起,完整的日志数据具有非常重要的作用:
信息查找。通过检索日志信息,查找相应的报错,可以快速的解决BUG。
数据分析。如果是截断整理格式化后的日志信息,可以进一步对日志进行数据分析和统计,可以选出头条,热点,或者爆款。
系统维护。对日志信息分析可以了解服务器的负荷和运行状态。可以针对性的对服务器进行优化。

ELK实时日志收集分析系统可以完美的解决以上问题。ELK作为一款开源软件可以免费使用,也有强大的团队和社区对它实时更新。

ELK主要由ElasticSearch、Logstash和Kibana三个开源工具组成,还有其他专门由于收集数据的轻量型数据采集器Beats。

Elasticsearch :分布式搜索引擎。具有高可伸缩、高可靠、易管理等特点。可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 是用Java 基于 Lucene 开发,现在使用最广的开源搜索引擎之一,Wikipedia 、StackOverflow、Github 等都基于它来构建自己的搜索引擎。
在elasticsearch中,所有节点的数据是均等的。
Logstash :数据收集处理引擎。支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储以供后续使用。
Kibana :可视化化平台。它能够搜索、展示存储在 Elasticsearch 中索引数据。使用它可以很方便的用图表、表格、地图展示和分析数据。
Filebeat:轻量级数据收集引擎。相对于Logstash所占用的系统资源来说,Filebeat 所占用的系统资源几乎是微乎及微。它是基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 Agent 的第一选择。Elasticsearch、Logstash、Kibana、Filebeat安装的版本号必须全部一致,不然会出现kibana无法显示web页面。

Filebeat在APP Server端收集日志
Logstash处理过滤Filebeat收集过来的日志
Elasticsearch存储Logstash提供的处理之后的日志,用以检索、统计
Kibana提供web页面,将Elasticsearch的数据可视化的展示出来

配置ELK yum源

# cat <<EOF | sudo tee /etc/yum.repos.d/elasticsearch.repo 
[elasticsearch]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=0
autorefresh=1
type=rpm-md
EOF

安装Elasticsearch

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
yum -y --enablerepo=elasticsearch install elasticsearch

配置JVM

# vim /etc/elasticsearch/jvm.options
-Xms1g
-Xmx1g

-Xms和-Xmx值根据内存大小实际情况来设置,官方建议设置最大不要超过32G

配置Elasticsearch参数

# vim /etc/elasticsearch/elasticsearch.yml
#集群名称
cluster.name: my-application
#节点名称
node.name: node-1
#绑定IP地址
network.host: 127.0.0.1
#配置集群配置,填写集群节点,会自动发现节点
cluster.initial_master_nodes: ["node-1"]

启动Elasticsearch

# systemctl start elasticsearch.service

9300端口用于集群通信,9200端口用于数据传输。

Elasticsearch API

  • 集群状态:http://127.0.0.1:9200/_cluster/health?pretty
  • 节点状态:http://127.0.0.1:9200/_nodes/process?pretty
  • 分片状态:http://127.0.0.1:9200/_cat/shards
  • 索引分片存储信息:http://127.0.0.1:9200/index/_shard_stores?pretty
  • 索引状态:http://127.0.0.1:9200/index/_stats?pretty
  • 索引元数据:http://127.0.0.1:9200/index?pretty

安装Kibana

# yum -y --enablerepo=elasticsearch install kibana

配置Kibana

vim /etc/kibana/kibana.yml
server.port: 5601
server.host: "172.16.1.50"
elasticsearch.hosts: ["http://127.0.0.1:9200"]
logging.dest: /var/log/kibana/kibana.log # 配置kibana日志输出到哪里

启动Kibana

# systemctl start kibana.service

安装Logstash

# yum -y --enablerepo=elasticsearch install logstash

配置logstash

vim /etc/logstash/conf.d/syslog.conf
input{
    syslog {
        host => "0.0.0.0"
        port => "514"
        type => "syslog"
    }
}

output {
    stdout {
        codec => rubydebug
    }
} 

启动Logstash

# systemctl start logstash.service

配置开机启动

# systemctl enable elasticsearch.service
# systemctl enable kibana.service
# systemctl enable logstash.service