elk 的一些实践

elk 的一些实践

0. 序

最近干的一个事,
搞了一个elk ,用于日志分析,日志由20台web 服务器同时产生,7天产生了108,555,691 条记录,1分钟大概2w 条数据,高峰大概是这个的2到4倍。

架构演化,架构不是设计出来的,而且演化出来的。

最开始是都在一台2核2g的机器上面的,包括elasticsearch,logstash,kibana.

之后是加了个redis 做broken。redis 遇到的问题是内核参数方面的,会引起elasticsearch的故障。

随着数据量的增大,2核2G的机器已经满足不了日志的压力了。这个时候就选择升级成4核4G。

后来发现还是比较作急,因为分析的东西比较多了,比如说geoip agent 的device 等等。然后再买一台4核4G的,将elasticsearch和kibana迁到新机器上。这样腾出来的cpu和内存资源就可以让logstash多开了。

下面分开将各个组件的注意点

1. redis

非常重要,做消息队列。

  1. redis要设置内核参数 vm.overcommit_memory = 1
  2. 禁用transparent_hugepage 这个内核特性 echo never > /sys/kernel/mm/transparent_hugepage/enabled
  3. 一定要做监控,监控那个队列,我是设置超过10w队列就报警。
  4. 还有一个要注意的是占用内存,内存占用可能会非常大,2g,3g都是有可能的。
  5. 绑定端口不要绑公网ip,会有安全问题。

2. logstash

消耗cpu的大户,云主机的话配置一定要在4核以上,这东西可以多开,占用内存一般在500m左右,主要一般我们调试时候开了

stdout { codec => rubydebug }

的,但是正式运行时候一定要将其关闭,对性能影响挺大的。

3. elasticsearch

重中之重,这东西是核心。本身可以通过rest api来操作,但是不是很方便,还好有插件! 推荐2个

  1. marvel
  2. head

谁用谁知道。这2个插件网上稍微搜下就行。

一开始是用单节点的,之后搞成集群了,elasticsearch会自动将数据同步到新节点上,使每份数据存在在2个节点上,这个时间elasticsarch的状态会变成green 。

但是多节点运行,但是集群运行有个问题,就会大大的影响logstash的插入效率。后来取消了。

安装head插件:

elasticsearch/bin/plugin -install mobz/elasticsearch-head
open http://localhost:9200/_plugin/head/

查看elasticsearch状态:

curl 10.173.xx.xx:9200//_cluster/health?pretty
{
  "cluster_name" : "elasticsearch",
  "status" : "yellow",
  "timed_out" : false,
  "number_of_nodes" : 2,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 53,
  "active_shards" : 53,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 53,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值