ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。
Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
Filebeat隶属于Beats。目前Beats包含四种工具:
Packetbeat(搜集网络流量数据) Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据) Filebeat(搜集文件数据) Winlogbeat(搜集 Windows 事件日志数据)
通过filebeat采集日志到
redis
;通过logstash抽取redis日志到es
环境要求
主机 es-1: kinbana-1 ,head-1,elasticsearch-1
主机 es-2: elasticsearch-2
主机 es-3:elasticsearch-3,logstash-3
主机 redis-1:redis-server-1
客户端: filebeat
部署配置
官方yum包部署: https://www.elastic.co/downloads
安装java
salt "*es*" state.sls saltenv='prod' jdk.jdk8
elasticsearch (2个master3个data)
salt "*es*" state.sls saltenv='prod' elk.elasticsearch.install
/etc/elasticsearch/elasticsearch.yml
node.name: es-1 #本机名称,集群内不可重复
cluster.name: es-cluster #定义集群名称
...
node.master: true #定义是否参与master选举
node.data: true #定义是否为 data node
systemctl enable elasticsearch && systemctl start elasticsearch
# 启动服务
curl -XGET 'http://127.0.0.1:9200/_cat/nodes'
# 查看状态;* es-1 已经推选master
安装redis 收集日志
yum install reids
filebeat采集日志
salt "*web*" state.sls saltenv='prod' elk.filebeat.install
logstash 将数据从broker里面抽到es集群
salt "*es*" state.sls saltenv='prod' elk.logstash.install
logstash调试
nginx-indexer.conf
output {
stdout { codec => rubydebug } #先输出测试一下看看格式
}
调试配置
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/nginx-indexer.conf -t |grep -i error
/etc/kibana/kibana.yml
tilemap.url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
#中文地图
kibana安装
kibana 默认没有登录设置,可yum装httpd-tools设置Apache密码认证
salt "*es*" state.sls saltenv='prod' elk.kibana.install
head插件查看集群分片
vi Gruntfile.js
server: {
options: {
hostname:'172.16.140.XX',
port: 9100,
base: '.',
keepalive: true
}
Head插件 安装 nvm -> node nvm install v8.12 npm install -g express git clone git://github.com/mobz/elasticsearch-head.git cd elasticsearch-head npm install npm install grunt --save npm run start
grunt server & #后台运行
web展示界面
创建索引
Management - Index Patterns
绘图形
PV,UV 走势图 饼图 热点url IP访问量 IP排行 访问记录
地图 高德中文地图
/usr/share/logstash/bin/logstash-plugin install logstash-filter-geoip
效果图
老版本
全站大屏 openresty 软waf
日常查询
通过收集的日志关键字
搜索;也可以根据右上角
时间轴过滤范围
-
Discover 菜单 搜索IP: http_x_forwarded_for : 122.224.xx.xx 搜索IP和域名: http_x_forwarded_for : 122.224.xx.xx AND server_name: dev.ops.com
-
更多查询
server_name : device*
# 终端设备
geoip.city_name : haikou
# 城市查询
维护管理
状态
curl -XGET 'http://127.0.0.1:9200/_cat/nodes?v'
# 集群详细状态显示
curl -XGET 'http://127.0.0.1:9200/_cluster/health?pretty'
# 集群健康查看
定期删除数据 /opt/es_clean.sh
#!/bin/bash
day3=`date +%Y.%m.%d -d "30 days ago"`
#echo "${day3}"
curl -XDELETE "172.16.1.xx:9200/logstash-nginx-access-${day3}"
curl -XDELETE "172.16.1.xx:9200/packetbeat-6.4.1-${day3}"
curl -XDELETE "172.16.1.xx:9200/tomcat-${day3}"
#清理记录;可 elasticsearch-head查看索引数据
salt管理命令
salt -E "web" service.stop filebeat
# 服务关闭
来源:oschina
链接:https://my.oschina.net/u/2711635/blog/2052927