设为首页 收藏本站
查看: 865|回复: 0

[经验分享] ELK日志收集平台部署

[复制链接]

尚未签到

发表于 2019-1-28 08:41:18 | 显示全部楼层 |阅读模式
  需求背景
  一位朋友的公司研发最近有一些苦恼。由于他们公司的后台服务有三台,每当后台服务运行异常,需要看日志排查错误的时候,都必须开启3个ssh窗口进行查看,研发们觉得很不方便,于是便有了统一日志收集与查看的需求。
  这里,我用ELK集群,通过收集三台后台服务的日志,再统一进行日志展示,实现了这一需求。
  当然,当前只是进行了简单的日志采集,如果后期相对某些日志字段进行分析,则可以通过logstash以及Kibana来实现。
  部署环境
  系统:CentOS 7
  软件:
  elasticsearch-6.1.1
             logstash-6.1.1
             kibana-6.1.1
  下载地址:https://www.elastic.co/cn/products
  搭建步骤
  一:elasticsearch:
  elasticsearch是用于存储日志的数据库。
  下载elasticsearch软件,解压:
# tar -zxvf elasticsearch-6.1.1.tar.gz
# mv elasticsearch-6.1.1 /opt/apps/elasticsearch  由于elasticsearch建议使用非root用户启动,使用root启动会报错,故需创建一个普通用户,并进行一些简单配置:

  
# useradd elk
# vi /opt/apps/elasticsearch/config/elasticsearch.yml
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"  启动,并验证:
# su - elk
$ nohup /opt/apps/elasticsearch/bin/elasticsearch &
# netstat -ntpl | grep 9200
tcp        0      0 0.0.0.0:9200            0.0.0.0:*               LISTEN      6637/java   
#curl 'localhost:9200/_cat/health?v'
epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1514858033 09:53:53  elasticsearch yellow          1         1    241 241    0    0      241             0                  -                 50.0%  二:logstash
  logstash用于收集各服务器上的日志,然后把收集到的日志,存储进elasticsearch。收集日志的方式有很多种,例如结合redis或者filebeat,这里我们使用redis收集的方式。
  安装logstash:
在所有服务器上:
# tar -zxvf logstash-6.1.1.tar.gz
# mv logstash-6.1.1 /opt/apps/logstash/  配置后台服务器,收集相关的日志:

在三台后台服务器上新建logstash文件,配置日志收集:
# vi /opt/conf/logstash/logstash.conf   
input {
        file {
                        #指定type
                type => "web_stderr"      
                #匹配多行的日志        
                codec => multiline {
                        pattern => "^[^0-9]"
                        what => "previous"
                }
                #指定本地的日志路径
                path => [ "/opt/logs/web-stderr.log"]
                sincedb_path => "/opt/logs/logstash/sincedb-access"
        }
        file {
                type => "web_stdout"
                codec => multiline {
                        pattern => "^[^0-9]"
                        what => "previous"
                }
                path => [ "/opt/logs/web-stdout.log"]
                sincedb_path => "/opt/logs/logstash/sincedb-access"
        }
        #收集nginx日志
        file {
                type => "nginx"
                path => [ "/opt/logs/nginx/*.log"]
                sincedb_path => "/opt/logs/logstash/sincedb-access"
        }
}
output {
    #指定输出的目标redis
  redis {
    host => "xx.xx.xx.xx"
    port => "6379"
    data_type => "list"
    key => "logstash"
  }
}  配置elk日志服务器上的logstash,从redis队列中读取日志,并存储到elasticsearch中:
# vi /opt/conf/logstash/logstash-server.conf
#配置从redis队列中读取收集的日志
input {
  redis {
    host => "xx.xx.xx.xx"
    port => "6379"
    type => "redis-input"
    data_type => "list"
    key => "logstash"
    threads => 10
  }
}
#把日志输出到elasticsearch中
output {
        elasticsearch {
                        hosts => "localhost:9200"
                        index => "logstash-%{type}.%{+YYYY.MM.dd}"
        }
        #这里把日志收集到本地文件
        file {
                path => "/opt/logs/logstash/%{type}.%{+yyyy-MM-dd}"
                codec => line { format => "%{message}"}
        }
}  启动logstash进程:

后台服务器:
# nohup /opt/apps/logstash/bin/logstash -f /opt/conf/logstash/logstash.conf --path.data=/opt/data/logstash/logstash &
elk日志服务器:
# nohup /opt/apps/logstash/bin/logstash -f /opt/conf/logstash/logstash-server.conf --path.data=/opt/data/logstash/logstash-server &  三:kibana
  kibana用于日志的前端展示。
  安装、配置kibana:
# tar -zxvf kibana-6.1.1-linux-x86_64.tar.gz
# mv kibana-6.1.1-linux-x86_64 /opt/apps/kibana
配置elasticsearch链接:
# vi /opt/apps/kibana/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
#配置elasticsearch链接:
elasticsearch.url: "http://localhost:9200"  启动kibana:
nohup /opt/apps/kibana/bin/kibana &  访问kibana:
  http://localhost:5601

  可以根据我们在logstash中配置的type,创建索引:

  可以根据我们创建的索引,进行查看(这里查看nginx日志):

  后记:
  当然了,结合logstash和kibana不单单仅能实现收集日志的功能,通过对字段的匹配、筛选以及结合kibana的图标功能,能对我们想要的字段进行分析,实现相应的数据报表等。
  ELK的功能十分强大,以后有机会,继续和大家探讨!!




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-668491-1-1.html 上篇帖子: elk报错记录 下篇帖子: ELK的安装配置使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表