ELK日志平台介绍
在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:
日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。
通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。官方网站:https://www.elastic.co/products
- Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
- Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
- Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
--------------------------------画了一个ELK工作的原理图-------------------------
如图:Logstash收集AppServer产生的Log,并存放到ElasticSearch集群中,而Kibana则从ES集群中查询数据生成图表,再返回给Browser。
ELK平台搭建
系统环境
System: Centos release 7.3
ElasticSearch: 6.2.2
Logstash: 6.2.2
Kibana: 6.2.2
Java: openjdk version "1.8"
ELK下载:https://www.elastic.co/downloads/
一、安装JDK以及系统环境
下载JDK:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
本环境是下载的64位rpm包
#rpm -vih jdk-8u151-linux-x64.rpm
创建运行ELK的用户和组
#groupadd elk
#useradd -g elk elk
#passwd elk
创建ELK存放目录
#mkdir /elk && chown -R elk:elk /elk
创建数据和日志存放目录
chown -R elk:elk /tmp/data/elasticesearch
mkdir /tmp/logs &&
二、先安装Elasticsearch
我下载的是elasticsearch-6.2.2.zip
将文件解压,并重命名放到/elk下
#unzip elasticsearch-6.2.2.zip && mv elasticsearch-6.2.2 /elk/elasticsearch
#chown -R elk:elk /elk
配置ElasticSearch
修改elasticsearch/config/elasticsearch.yml中:
#这里指定的是集群名称,需要修改为对应的,开启了自发现功能后,ES会按照此集群名称进行集群发现
cluster.name:thh_dev1
#数据目录
path.data:/home/data/elk/data
# log目录
path.logs:/home/data/elk/logs
# 节点名称
node.name: node-1
#修改一下ES的监听地址,这样别的机器也可以访问
network.host:0.0.0.0
#默认的端口号
http.port:9200
进入elasticsearch的bin目录,使用./elasticsearch -d命令启动elasticsearch。
查看进程
#ps -ef|grep elasticsearch
查看Elasticsearch的信息
#curl http://127.0.0.1:9200/
客户端网页访问可能需要关掉防火墙(阿里云等云主机添加安全组策略):
Systemctl stop firewalld.service
注意事项:
修改系统参数,确保系统有足够资源启动ES
设置内核参数
vim /etc/sysctl.conf
#增加以下参数
vm.max _map_count = 655360
执行以下命令,确保生效配置生效:
sysctl –p
设置资源参数
vim /etc/security/limits.conf
#修改
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
*hard nproc 131072
vim /etc/security/limits.d/20-nproc.conf
#设置elk用户参数
elk soft nproc 65536
如何和elasticsearch交互
安装elasticsearch-head插件,ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。
安装docker镜像或者通过github下载elasticsearch-head项目都是可以的,1或者2两种方式选择一种安装使用即可
1. 使用docker的集成好的elasticsearch-head
# docker run -p 9100:9100 mobz/elasticsearch-head:5
docker容器下载成功并启动以后,运行浏览器打开http://localhost:9100/
2. 使用git安装elasticsearch-head
# yum install -y npm
# git clone git://github.com/mobz/elasticsearch-head.git # cd elasticsearch-head
#npm install -g grunt
#npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy #使用的是国内镜像代理安装的
#由于国外镜像太慢,使用的是国内镜像代理安装
#cnpm install
# npm run start
检查端口是否起来
#netstat -antp |grep 9100
浏览器访问测试是否正常
#http://IP:9100/
三、Logstash简介和安装配置
Logstash是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。
工作流程
Logstash工作的三个阶段:
input数据输入端,可以接收来自任何地方的源数据。
* file:从文件中读取
* syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。
* redis:从redis-server list中获取
* beat:接收来自Filebeat的事件
Filter数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。
* grok:通过正则解析和结构化任何文本。Grok目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。
* mutate:在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。
* drop:完全丢弃事件,如debug事件。
* clone:复制事件,可能添加或者删除字段。
* geoip:添加有关IP地址地理位置信息。
output是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:
* elasticsearch:发送事件数据到Elasticsearch,便于查询,分析,绘图。
* file:将事件数据写入到磁盘文件上。
* mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。
* redis:将数据发送至redis-server,常用于中间层暂时缓存。
* graphite:发送事件数据到graphite。http://graphite.wikidot.com/
* statsd:发送事件数据到statsd。
其他介绍:
ELK日志监控分析系统Logstash详解之——input模块
ELK日志监控分析系统Logstash详解之——filter模块
ELK日志监控分析系统Logstash详解之——output模块
----开始安装配置----
1、将下载的logstash 6.2.2解压并放到指定位置
#unzip logstash-6.2.2.zip -d /elk/
#mv /elk/logstash-6.2.2 /elk/logtash
2、创建一个软连接,每次执行命令的时候不用在写安装路径
#ln -s /elk/logstash/bin/logstash /bin/logstash
3、对配置文件进行配置,可以新建一个配置文件
1. Input插件 权威指南:https://www.elastic.co/guide/en/logstash/current/input-plugins.html
file插件的使用
# vim /elk/logstash/conf.d/elk.conf
添加如下配置
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.1.202:9200"]
index => "system-%{+YYYY.MM.dd}"
}
}
运行logstash指定elk.conf配置文件,进行过滤匹配
#logstash -f /elk/logstash/conf.d/elk.conf
可以依据上面的参数介绍,自己进行增改。
四、Kibana的安装及使用
安装kibana:
解压kibana源码包到/elk/kibana
配置kibana
编辑kibana.yml配置文件
/elk/kibana/config/kibana.yml
修改以下参数:
#开启默认端口5601如果5601被占用可用5602或其他
server.port:5601
server.host:“localhost”#站点地址
elasticsearch.url:http://localhost:9200#指向elasticsearch服务的ip地址
kibana.index:“.kibana”
运行cd /home/parallels/Desktop/kibana/bin运行./kibana
通过kibana窗口观察你的结果:
http://localhost:5601 ###公网请用公网IP(阿里云腾讯云需要开放安全策略)