自动化运维之日志系统ElasticSearch篇(一) - youngperson/study-100 GitHub Wiki
1、开发人员不能登陆线上服务器查看详细日志。
日志集中在某台测试机器上,把线上的日志都同步下来。
2、日志数据量大,查询速度慢,数据不够实时
收集(Logstash)
存储(Elasticsearch、Redis、Kafka)
搜索+统计+展示(Kibana)
报警,数据分析(Zabbix)
logstash(收集)、elasticsearch(存储+搜索)、kibana(展示),我们将这三个组合起来的技术称之为ELKStack,所以说ELKStack指的是Elasticsearch、Logstash、Kibana技术栈的结合。
3、说明
被收集主机需要部署Logstash。(Nginx、java、tcp、syslog等日志)
Elasticsearch、Kibana用来分析和展示数据,这2个可以集群
3-1、实验部署说明
- node1和node2为elasticsearch集群(不部署Logstash)
- node3收集对象,Nginx、java、tcp、syslog等日志
- node4将logstash日志写入Redis,减少程序对elasticsearch依赖性,同时实现程序解耦以及架构扩展。
- 被收集主机需要部署Logstash。
| 主机名 | IP | 服务 |
|---|---|---|
| node1 | 192.168.44.10 | Elasticsearch、Kibana |
| node2 | 192.168.44.11 | Elasticsearch |
| node3 | 192.168.44.12 | Logstash、服务及程序日志 |
| node4 | 192.168.44.13 | Redis(消息队列) |
4、部署Elasticsearch
Elasticsearch、需要Java环境,所以直接使用yum安装。
1.安装java
# yum install java
# java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)
2.下载并安装GPG key
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
2.1推荐去安装新版本的
https://www.elastic.co/guide/en/elasticsearch/reference/current/rpm.html
3.添加elasticsearch的yum仓库
# vi /etc/yum.repos.d/elasticsearch.repo
[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
enabled=1
4.安装ElasticSearch
# yum install -y elasticsearch
5.yum安装需要配置limits
# vim /etc/security/limits.conf
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited
5.1、配置Elasticsearch
# mkdir -p /data/es-data #创建es数据目录
# chown -R elasticsearch.elasticsearch /data/es-data/ #授权
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-cluter #集群名称
node.name: linux-node1 #节点的名称
path.data: /data/es-data #数据存放路径
path.logs: /var/log/elasticsearch/ #日志存放日志
bootstrap.mlockall: true #不使用swap分区,锁住内存
network.host: 192.168.44.10 #允许访问的IP
http.port: 9200 #elasticsearch访问端口
5.1.1、配置logging.yml
这里有个大坑:默认的日志级别是debug,会导致日志目录和索引数据一样大,占用磁盘
把级别改为error
# vi /etc/elasticsearch/logging.yml
es.logger.level: ERROR
action: ERROR
5.2、运行Elasticsearch
# systemctl start elasticsearch
5.2.1、访问:elasticsearch_url: "http://es-mon-1:9200" (配置本地host)
5.3、Elasticsearch插件
1.安装Elasticsearch集群管理插件
# /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
2.访问head集群插件:http://es-mon-1:9200/_plugin/head/
1.安装Elasticsearch监控插件
# /usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
2.访问监控插件http://es-mon-1:9200/_plugin/kopf/
1.新版本安装xpack
https://www.elastic.co/guide/en/elasticsearch/reference/current/installing-xpack-es.html
6、elasticsearch集群
linux-node2配置一个相同的节点,通过组播进行通信,会通过cluster进行查找,如果无法通过组播查询,修改成单播即可(在另外一台机器上在安装下elasticsearch)
#vi /etc/elasticsearch/elasticsearch.yml
cluster.name: elk-cluter
node.name: linux-node2
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
bootstrap.mlockall: true
network.host: 192.168.44.11
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.44.10","192.168.44.11"] #单播(配置一台即可,生产可以使用组播方式)
7、说明
discovery.zen
代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
P2P就是指数据的传输不再通过服务器,而是网络用户之间直接传递数据。比如我们以前使用的电驴,还有迅雷
ES 采用的是一种 P2P 的 gossip 选举方式
Transport
代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。
cluster.name:elasticsearch
配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。