ELK日志分析
运维人员需要对系统和业务日志进行精准把控,便于分析系统和业务状态。日志分布在不同的服务器上,传统的使用传统的方法依次登录每台服务器查看日志,既繁琐又效率低下。所以我们需要集中化的日志管理工具将位于不同服务器上的日志收集到一起, 然后进行分析,展示。
前面我们学习过rsyslog,它就可以实现集中化的日志管理,可是rsyslog集中后的日志实现统计与检索又成了一个问题。使用wc, grep, awk等相关命令可以实现统计与检索,但如果要求更高的场景,这些命令也会力不从心。所以我们需要一套专业的日志收集分析展示系统。
认识ELK
ELK是一套开源的日志分析系统,由elasticsearch+logstash+Kibana组成。
官网说明:https://www.elastic.co/cn/products
首先: 先一句话简单了解E,L,K这三个软件
elasticsearch: 分布式搜索引擎
logstash: 日志收集与过滤,输出给elasticsearch
Kibana: 图形化展示
elk下载地址:https://www.elastic.co/cn/downloads
环境准备:
四台机器(内存建议大于1G,比如1.5G; filebeat服务器可为1G)
1,静态IP(要求能上公网,最好用虚拟机的NAT网络类型上网)
2,主机名及主机名绑定hostnamectl --static set-hostname vm1.cluster.com10.1.1.11 vm1.cluster.com kibana10.1.1.12 vm2.cluster.com elasticsearch10.1.1.13 vm3.cluster.com logstash10.1.1.14 vm4.cluster.com filebeat
3, 关闭防火墙和selinux# systemctl stop firewalld# systemctl disable firewalld# setenforce 0
4, 时间同步# yum install ntp -y# systemctl restart ntpd# systemctl enable ntpd
5, yum源(centos安装完系统后的默认yum源就OK)
elasticsearch
Elasticsearch(简称ES)是一个开源的分布式搜索引擎,Elasticsearch还是一个分布式文档数据库。所以它提供了大量数据的存储功能,快速的搜索与分析功能。
elasticsearch部署
第1步: 在elasticsearch服务器上(我这里为vm2),确认jdk(使用系统自带的openjdk就OK)
[root@vm2 ~]# yum install -y java-1.8.0-openjdk
[root@vm2 ~]# rpm -qa |grep openjdk
[root@vm2 ~]# java -version
第2步: es的安装,配置
[root@vm2 ~]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.rpm
[root@vm2 ~]# rpm -ivh elasticsearch-6.5.2.rpm
第3步: 单机es的配置与服务启动
[root@vm2 ~]# cat /etc/elasticsearch/elasticsearch.yml |grep -v "#"
cluster.name: elk-cluster 可以自定义一个集群名称,不配置的话默认会取名为elasticsearch
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0 打开注释,并修改为监听所有
http.port: 9200 打开注释,监听端口9200[root@vm2 ~]# systemctl start elasticsearch
[root@vm2 ~]# systemctl enable elasticsearch启动有点慢和卡,稍等1分钟左右,查看到以下端口则表示启动OK
[root@vm2 ~]# netstat -ntlup |grep java
tcp6 0 0 :::9200 :::* LISTEN 5329/java
tcp6 0 0 :::9300 :::* LISTEN 5329/java9200则是数据传输端口
9300端口是集群通信端口(我们暂时还没有配置集群,现在是单点elasticsearch)
第4步: 查看状态
使用curl命令或浏览器访问http://10.1.1.12:9200/_cluster/health?pretty(IP为ES服务器IP)
[root@vm2 ~]# curl http://10.1.1.12:9200/_cluster/health?pretty
{"cluster_name" : "elk-cluster","status" : "green","timed_out" : false,"number_of_nodes" : 1,"number_of_data_nodes" : 1,"active_primary_shards" : 0,"active_shards" : 0,"relocating_shards" : 0,"initializing_shards" : 0,"unassigned_shards" : 0,"delayed_unassigned_shards" : 0,"number_of_pending_tasks" : 0,"number_of_in_flight_fetch" : 0,"task_max_waiting_in_queue_millis" : 0,"active_shards_percent_as_number" : 100.0
}