在小规模项目中,当我们需要查看运行日志时,通常只需查看日志文件就可以了;但是在规模较大的场景中,假设你要管理这里的多台服务器,当出现问题时,如果你再一个一个的查看日志文件那就太影响效率了,那么有什么方案可以替我们简化工作呢?
ELK(elasticsearch+logstash+kibana)就为我们提供了一整套的解决方案,也是目前一种主流的日志分析系统。
一般架构中,是使用logstash-agent先对日志文件进行筛选分类,然后输出到消息队列如kafka等来对消息进行缓存;logstash再从消息队列中拿去日志消息再进行过滤、分类并输出给elasticsearch进行存储;最后由Kibana将日志和数据呈现给用户。
是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等:
下载dokcer镜像
docker pull elasticsearch:5.6.14
修改虚拟内存映射数(不修改启动会报错)
切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置
vm.max_map_count=655300
执行命令
sysctl -p
查看vm.max_map_count是否设置成功:
cat /proc/sys/vm/max_map_count
挂载外部配置文件
cd /mnt
mkdir data
touch es.yml
vim es.yml
添加如下配置
#集群名
cluster.name: escluster
#节点名
node.name: node-111
#设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0,
#指绑定这台机器的任何一个ip
network.bind_host: 0.0.0.0
#设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,
#值必须是个真实的ip地址
network.publish_host: x.x.x.x
#设置对外服务的http端口,默认为9200
http.port: 9200
#设置节点之间交互的tcp端口,默认是9300
transport.tcp.port: 9300
#是否允许跨域REST请求
http.cors.enabled: true
#允许 REST 请求来自何处
http.cors.allow-origin: “*”
#节点角色设置
node.master: true
#是否保存数据
node.data: true
#有成为主节点资格的节点列表
discovery.zen.ping.unicast.hosts: [“x.x.x.x:9300”]
#集群中一直正常运行的,有成为master节点资格的最少节点数(默认为1)
启动es
docker run --name es -d
>-e ES_JAVA_OPTS="-Xms512m -Xmx512m"
>-p 9200:9200 -p 9300:9300
>-v /mnt/es/es.yml:/usr/share/elasticsearch/config/elasticsearch.yml
>-v /mnt/es/data/:/usr/share/elasticsearch/data
>elasticsearch:5.6.14
解释下这几个命令
主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去
下载docker镜像
docker pull logstash:5.6.14
启动logstash
docker run -d --name logstash -it --rm logstash:5.6.14
>-e 'input { stdin { } } output { elasticsearch { hosts => ["x.x.x.x:9200"] } }'
启动成功后进入logstash容器内
docker attach logstash
随便输入一串字符串按回车
出现如上输出,即代表已经将输入字符串存入到es中
一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
下载docker镜像
docker pull kibana:5.6.14
启动容器
docker run --name kibana -d
>-e ELASTICSEARCH_URL=http://x.x.x.x:9200
>-p 5601:5601
>kibana:5.6.14
访问ip:5601 点击management->index pattern
直接点击create
点击左侧导航devtool出现查询页面
这样就看到了你刚刚在logstash中输入的字符串了。
ELK原理与介绍
使用Docker搭建ElasticSearch+Logstash+Kibana环境
Docker ELK实践之Logstash
记一次Docker下安装Logstash+Elasticsearch+Kibana经历