精简系统日志统一平台设计
一、平台背景
现在常用的日志统一汇总系统日志平台有几种:ELK、graylog或syslog-ng + 二次开发、ELK相关组件二次开发等。本篇的重点主要关注需要收集日志的一端。开始之前,先说下需求:现网有设备基本有5000台左右,系统运维和应用运维是分开来的。所以站在系统运维的角度来说,一般只关心和OS及系统自带的软件部分的报错。应用的日志不需要去管。所以这里设计的简单架构如下:
二、架构设计
如果把主机上的所有日志*.*全部发送给服务器端,客户端确实是省事了,不过这会增加服务端的数据存储量,所以这里选择使用 kern.*;*.warn只收集有关告警以上级别和kernel级的日志,这就过滤掉了大部分的日志。我们按每台每天平均假设有1000条这样的消息(实际主机上不出问题,基本是不会产生此类日志的),5000台主机30天的数据也就是1000 * 5000 * 30 = 1亿5千万条,这个记录对于数据库来说并不算多。
这部分日志这里选择直接使用linux上自带的rsyslog进行处理,并通过tcp或udp传给logstash(也可以在主机安装filebeat,通过filebeat直接实入elasticsearch),这样做的好处是省去了再安装其他软件的麻烦。几千台机器同时传给logstash如果感觉处理的慢了,可以增加kafaka或redis进行缓存。这样做还有一个好处,就是有些主机如果发送的有某些无意义的告警,可以再加上关键字过滤进行排除。
入Elasticsearch库后,可以选择的前台展示方式,可以选择Kibana也可以选择Rraylog(开源版有限制)。同时告警也可以使用ELK中的sentinl组件实现。
三、demo配置
这里给出个大框架型的配置方法,现网使用的时候可以根据具体情况调整。
1、rsyslog配置
1# cat /etc/rsyslog.d/systemlog.conf
2kern.*;*.warn /var/log/kern.log
3kern.*;*.warn @10.212.52.18:514
上面不想要本地输出,也可以去掉本地输出,直接指定到远程主机就可以了。这里我选择了使用udp传输,也可以使用tcp进行传输。
2、ELK套件安装
1[root@localhost elk]# rpm -ivh elasticsearch-7.4.2-x86_64.rpm
2Preparing... ################################# [100%]
3Creating elasticsearch group... OK
4Creating elasticsearch user... OK
5Updating / installing...
6 1:elasticsearch-0:7.4.2-1 ################################# [100%]
7### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
8 sudo systemctl daemon-reload
9 sudo systemctl enable elasticsearch.service
10### You can start elasticsearch service by executing
11 sudo systemctl start elasticsearch.service
12future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk-10.0.2] does not meet this requirement
13Created elasticsearch keystore in /etc/elasticsearch
14[root@localhost elk]# rpm -ivh kibana-7.4.2-x86_64.rpm
15Preparing... ################################# [100%]
16Updating / installing...
17 1:kibana-7.4.2-1 ################################# [100%]
18[root@localhost elk]# rpm -ivh logstash-7.4.2.rpm
19Preparing... ################################# [100%]
20Updating / installing...
21 1:logstash-1:7.4.2-1 ################################# [100%]
22Using provided startup.options file: /etc/logstash/startup.options
23Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
24/usr/share/logstash/vendor/bundle/jruby/2.5.0/gems/pleaserun-0.0.30/lib/pleaserun/platform/base.rb:112: warning: constant ::Fixnum is deprecated
25Successfully created system startup script for Logstash
上面可以看到elasticsearch对java版本比较挑剔,这里使用的java10还提示版本低,后面换用了最新的java13。
3、ELK配置
1-- elasticsearch配置
2# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak
3# grep -vE '#|^$' /etc/elasticsearch/elasticsearch.yml
4cluster.name: elk
5node.name: elk01
6path.data: /var/lib/elasticsearch
7path.logs: /var/log/elasticsearch
8network.host: 0.0.0.0
9http.port: 9200
10cluster.initial_master_nodes: ["elk01"]
11# systemctl restart elasticsearch.service
12# curl 127.0.0.1:9200
13-- kibana 配置及启动
14# cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
15# grep -vE '#|^$' /etc/kibana/kibana.yml
16server.host: "0.0.0.0"
17i18n.locale: "zh-CN"
18# systemctl restart kibana.service
19-- logstash配置
20# systemctl restart kibana.service
21# cat conf.d/system.conf #新建一个监控系统日志的配置文件
22input {
23 tcp {
24 port => 514
25 type => syslog
26 }
27 udp {
28 port => 514
29 type => syslog
30 }
31}
32output {
33 elasticsearch {
34 hosts => ["localhost:9200"]
35 index => "logstash-systemlog-%{+YYYY.MM.dd}"
36 }
37 stdout { }
38}
39
40上面的标准输出也可以去掉,调试的时候比较有用
41可以看到如下命令,使用此命令启动:
42# /usr/share/logstash/bin/logstash --path.settings /etc/logstash
登陆 kibana web 控制台:http://:5601 ,【管理】-【索引模式】-【创建索引模式】,在【索引模式】文本框中输入system-log,在下面可以看到【成功!您的索引模式匹配 1 个索引。】,然后点击【下一步】, 在【时间筛选字段名称】中选择 【@timestamp】,点击【创建索引模式】,然后点击面板的【Discover】,即可看到日志信息
以上就先暂时建好了统一日志管理的雏形,后面要做的工作还有很多,比如:关键字匹配并告警、日志保存的时间长短、如何图形展示、logstash性能不足时,传输给redis(内存级)或kafka(磁盘级)并再中转给logstash等。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/oslog-elk/6252.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.