ELFK

搭建ELFK日志采集系统

文章目录

环境准备

操作系统信息

服务器规划

日志采集系统搭建

安装elasticsearch集群

安装 Kibana

安装logstash

安装filebeat

其它安全设置

部署测试

总结

参考

最近的工作涉及搭建一套日志采集系统,采用了业界成熟的ELFK方案,这里将搭建过程记录一下。

环境准备

操作系统信息

系统系统:centos7.2

三台服务器:10.211.55.11/12/13

安装包:

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm

https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-x86_64.rpm

https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm

服务器规划

服务器host11服务器host12服务器host13

elasticsearch(master,data,client)elasticsearch(master,data,client)elasticsearch(master,data,client)

kibana

logstashlogstashlogstash

filebeatfilebeatfilebeat

整个ELFK的部署架构图大致如下图:

日志采集系统搭建

安装elasticsearch集群

手把手教你搭建一个 Elasticsearch 集群文章所述,elasticsearch集群中节点有多种类型:

主节点:即 Master 节点。主节点的主要职责是和集群操作相关的内容,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。稳定的主节点对集群的健康是非常重要的。默认情况下任何一个集群中的节点都有可能被选为主节点。索引数据和搜索查询等操作会占用大量的cpu,内存,io资源,为了确保一个集群的稳定,分离主节点和数据节点是一个比较好的选择。虽然主节点也可以协调节点,路由搜索和从客户端新增数据到数据节点,但最好不要使用这些专用的主节点。一个重要的原则是,尽可能做尽量少的工作。

数据节点:即 Data 节点。数据节点主要是存储索引数据的节点,主要对文档进行增删改查操作,聚合操作等。数据节点对 CPU、内存、IO 要求较高,在优化的时候需要监控数据节点的状态,当资源不够的时候,需要在集群中添加新的节点。

负载均衡节点:也称作 Client 节点,也称作客户端节点。当一个节点既不配置为主节点,也不配置为数据节点时,该节点只能处理路由请求,处理搜索,分发索引操作等,从本质上来说该客户节点表现为智能负载平衡器。独立的客户端节点在一个比较大的集群中是非常有用的,他协调主节点和数据节点,客户端节点加入集群可以得到集群的状态,根据集群的状态可以直接路由请求。

预处理节点:也称作 Ingest 节点,在索引数据之前可以先对数据做预处理操作,所有节点其实默认都是支持 Ingest 操作的,也可以专门将某个节点配置为 Ingest 节点。

以上就是节点几种类型,一个节点其实可以对应不同的类型,如一个节点可以同时成为主节点和数据节点和预处理节点,但如果一个节点既不是主节点也不是数据节点,那么它就是负载均衡节点。具体的类型可以通过具体的配置文件来设置。

我部署的环境服务器较少,只有三台,因此部署在每个节点上的elasticsearch实例只好扮演master、data、client三种角色了。

在三台服务器上均执行以下命令关闭selinux:

1 setenforce 0

2  sed -i -e's/^SELINUX=.*$/SELINUX=disabled/g'/etc/selinux/config

在三台服务器上均安装java:

1 yum install -y java

在三台服务器上均安装elasticsearch的rpm包:

1 yum install -y https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.rpm

在三台服务器上修改elasticsearch的配置文件:

1cat << EOF > /etc/elasticsearch/elasticsearch.yml

cluster.name: DemoESCluster

# 注意不同节点的node.name要设置得不一样

node.name: demo-es-node-1

path.data: /var/lib/elasticsearch

path.logs: /var/log/elasticsearch

network.host: 0.0.0.0

http.port: 9200

discovery.zen.ping.unicast.hosts: ["10.211.55.11","10.211.55.12","10.211.55.13"]

discovery.zen.minimum_master_nodes: 2

gateway.recover_after_nodes: 2

EOF

在三台服务器上启动elasticsearch:

1systemctl daemon-reload

systemctlenableelasticsearch

systemctl start elasticsearch

在任意服务器上检查集群中的节点列表:

1yum install -y jq

2curl --silent -XGET'http://localhost:9200/_cluster/state?pretty'|jq'.nodes'

在上述命令的输出里可以看到集群的相关信息,同时 nodes 字段里面包含了每个节点的详细信息,这样一个基本的elasticsearch集群就部署好了。

安装 Kibana

接下来我们需要安装一个 Kibana 来帮助可视化管理 Elasticsearch,在host12上安装kibana:

1yum install -y https://artifacts.elastic.co/downloads/kibana/kibana-6.3.2-x86_64.rpm

修改kibana的配置文件:

1cat << EOF > /etc/kibana/kibana.yml

server.port: 5601

server.host:"0.0.0.0"

elasticsearch.url:"http://localhost:9200"

EOF

注意这里配置的elasticsearch.url为本机的es实例,这样其实还是存在单点故障的,官方建议在本机部署一个Elasticsearch 协调(Coordinating only node) 的节点,这里配置成协调节点的地址。

启动kibana:

1systemctl daemon-reload

systemctlenablekibana

systemctl start kibana

配置认证需要升级License,我这里是在内网使用,就不进行这个配置了。如果须要配置访问认证可参考这里

另外还可以启用SSL,可参考这里进行配置。

为了避免单点故障,kibana可部署多个,然后由nginx作反向代理,实现对kibana服务的负载均衡访问。

安装logstash

在每台服务器上安装logstash:

1yum install -y https://artifacts.elastic.co/downloads/logstash/logstash-6.3.2.rpm

修改logstash的配置文件:

1cat << EOF > /etc/logstash/logstash.yml

path.data: /var/lib/logstash

path.logs: /var/log/logstash

xpack.monitoring.enabled:true

xpack.monitoring.elasticsearch.url: ["http://10.211.55.11:9200","http://10.211.55.12:9200","http://10.211.55.13:9200"]

EOF

cat << EOF > /etc/logstash/conf.d/beat-elasticsearch.conf

input {

  beats {

    port => 5044

ssl =>false

  }

}

filter {

}

output {

  elasticsearch {

hosts => ["10.211.55.11:9200","10.211.55.12:9200","10.211.55.13:9200"]

index =>"%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"

document_type =>"%{[@metadata][type]}"

  }

}

EOF

为了从原始日志中解析出一些有意义的field字段,可以启用一些filter,可用的filter列表在这里

启动logstash:

1systemctl daemon-reload

systemctlenablelogstash

systemctl start logstash

安装filebeat

在每台服务器上安装filebeat:

1yum install -y https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.2-x86_64.rpm

修改每台服务器上的filebeat配置文件:

1# 这里根据在采集的日志路径,编写合适的inputs规则

cat << EOF > /etc/filebeat/filebeat.yml

filebeat.inputs:

-type:log

enabled:true

  paths:

- /var/log/*.log

filebeat.config.modules:

path:${path.config}/modules.d/*.yml

reload.enabled:false

output.logstash:

hosts: ["10.211.55.11:5044","10.211.55.12:5044","10.211.55.13:5044"]

ssl.enabled:false

index:'var_log'

EOF

filebeat配置文件选项比较多,完整的参考可查看这里

在每台服务器上启动filebeat:

1systemctl daemon-reload

systemctlenablefilebeat

systemctl start filebeat

其它安全设置

为保证数据安全,filebeat与logstash、filebeat与elasticsearch、logstash与elasticsearch、kibana与elasticsearch之间的通讯及kibana自身均能启用SSL加密,具体启用办法就是在配置文件中配一配SSL证书就可以了,这个比较简单,不再赘述。

kibana登录认证需要升级License,这一点比较不爽,如果考虑成本,还是在前置机nginx上配个HTTP Basic认证处理好了。

部署测试

至此一个较完整的ELFK日志采集系统就搭建好了,用浏览器访问http://10.211.55.12:5601/,在kibana的界面上简单设置下就可以查看到抓取的日志了:

总结

分布式日志采集,ELFK这一套比较成熟了,部署也很方便,不过部署起来还是稍显麻烦。好在还有自动化部署的ansible脚本:ansible-beatsansible-elasticsearchansible-role-logstashansible-role-kibana,所以如果有经常部署这一套,还是拿这些ansible脚本组建自动化部署工具集吧。

参考

https://mp.weixin.qq.com/s/eyfApIiDeg3qv-BD9hBNvw

https://www.elastic.co/guide/cn/kibana/current/production.html

https://www.ibm.com/developerworks/cn/opensource/os-cn-elk-filebeat/index.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 理想是从那“我想当一名老师、我当一名医生、我想当一名警察开始”的,再后来“我要好好学习,争取考上一个好的大学”、随...
    我是小小梨阅读 636评论 1 4
  • 在网上刚买了一本书,名字叫做《成功法则》,作者是美国的一个著名作家叫做拿破仑希尔。 这本书写了美国和其他国家一些成...
    D040小黎佛山阅读 367评论 0 3
  • 我们没有机会坐等“谁的善良”来抵挡“我的风险”。无论如何,我们都应在能自立的基础上去和人相处,和人相爱。 也许获得...
    幻术sara阅读 1,011评论 0 0
  • 【0306能量按钮】6215-瑶妈 推荐人:副营长-奕晴、KK花花老师 看完这篇文章,你有什么启发?试试用三句话总...
    双双工作坊阅读 112评论 0 0
  • 今年的五二零,伴随着多少情侣的分别而到来? 当初追我的人是你、宠着我的人是你、爱我的人是你、要娶我的人还是你……可...
    酒浓情伤阅读 256评论 0 0