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

[经验分享] 在团800运维工作总结之haproxy

[复制链接]
累计签到:29 天
连续签到:1 天
发表于 2019-1-2 08:51:31 | 显示全部楼层 |阅读模式
  一下是我在单位对haproxy进行日志分析的一整套流程
  

  我们一直都是处在维护es集群的配置,并没有把一整套流程 包括收集端的代码,全部自己搞定一次,而且线上收集日志的时候我们一般都用的logstash,但是业界很多人都说logstash不管是性能上还有稳定性上都不是很好,logstash的优点在于配置简便,这次我选用了rsyslog
  今天就这haproxy日志,我把整个流程给大家走一遍,就算是让大家了解下
  具体流程如下
  haproxy----local2级别----rsyslog----kafka---collector(消费kafka,写到es)---es---kibana展示
  1.haproxy的日志默认需要结合rsyslog
  配置文件这样的
  local2.*                                                /data1/logs/haproxy/haproxy.log
  如果我们不用rsyslog,用logstash就会存在这样的情况
  我们还是要在input里写/data1/logs/haproxy/haproxy.log这个路径,这样我认为在性能上有很大的影响
  但是我们用了rsyslog,rsyslog可以直接从local2级别里直接拆分日志,这块我只是举个例子,rsyslog和logstash的不同在于,rsyslog需要插件,而且rsyslog链接kafka的时候需要v8版本,而且不能yum安装rsyslog,需要编译的时间加载针对kafka的模块
  

  前期准备,我们需要首先让rsyslog能够把数据发送到kafka里
  如何让rsyslog支持推送到kafka,步骤如下
  /opt/test.sh
  ## Install rsyslog with omkafka.
  ## omkafka enables rsyslog to push logs to kafka, a distributed message system.
  ## see http://www.rsyslog.com/doc/master/configuration/modules/omkafka.html
  ## This installation use yum to manage packages.
  ## add rsyslog repo
  WORK_DIR=$(pwd)
  cd /etc/yum.repos.d
  wget http://rpms.adiscon.com/v8-stable/rsyslog.repo -O rsyslog.repo
  cd $WORK_DIR
  mkdir rsyslog-install
  cd rsyslog-install
  # check rsyslog version
  # rsyslog supports kafka from v8.7.0
  old_rsyslog_ver=$(rsyslogd -version |head -n 1 | awk '{print $2}')
  ## install rsyslog dependency: libestr
  yum install -y libestr-devel
  ## install rsyslog dependency: libee
  yum install -y libee-devel
  ## install rsyslog dependency: json-c
  yum install -y json-c-devel
  ## install rsyslog denpendency: uuid
  yum install -y libuuid-devel
  ## install rsyslog denpendency: liblogging-stdlog
  yum install -y liblogging-devel
  ## install rsyslog denpendency: rst2man
  yum install -y python-docutils
  ## install librdkafka for omkafka
  wget https://github.com/edenhill/librdkafka/archive/0.8.5.tar.gz -O librdkafka-0.8.5.tar.gz
  tar zxvf librdkafka-0.8.5.tar.gz
  cd librdkafka-0.8.5
  ./configure
  make
  make install
  cd ..
  ## install rsyslog
  wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-8.8.0.tar.gz -O rsyslog-8.8.0.tar.gz
  tar zxvf rsyslog-8.8.0.tar.gz
  export PKG_CONFIG_PATH=/usr/lib64/pkgconfig:/lib64/pkgconfig/
  old_executable_path=$(which rsyslogd)
  executable_dir=$(dirname "$old_executable_path")
  cd rsyslog-8.8.0
  ./configure --prefix=/usr/local/rsyslog --sbindir=$executable_dir --libdir=/usr/lib64 --enable-omkafka
  make
  make install
  ## show installation result:
  new_rsyslog_ver=$(rsyslogd -version |head -n 1 | awk '{print $2}')
  echo "Old rsyslogd version: "$old_rsyslog_ver
  echo "New rsyslogd version: "$new_rsyslog_ver
  echo "Executable: " $(which rsyslogd)
  ## References:
  ## http://www.rsyslog.com/doc/master/installation/install_from_source.html
  ## http://bigbo.github.io/pages/2015/01/21/syslog_kafka/
  ## http://blog.oldzee.com/?tag=rsyslog
  ## http://www.rsyslog.com/newbie-guide-to-rsyslog/
  ## http://www.rsyslog.com/doc/master/configuration/modules/omkafka.html
  2.cp ./rsyslog-install/librdkafka-0.8.5/src/librdkafka.so.1 /lib64/
  chmod 755 /lib64/librdkafka.so.1
  3.cp ./rsyslog-8.8.0/plugins/omkafka/.libs/omkafka.so /lib64/rsyslog/
  chmod 755 /lib64/rsyslog/omkafka.so
  4.rsyslogd -n 测试rsyslog配置文件是否正确
  5. /lib64/rsyslog/下面都是rsyslog所能加载的模块
  ok现在我们可以让rsyslog推送到kafka了
  我们现在要提前定义好数据推送到es 索引里的字段都有那些,我们根据这些字段对日志进行处理
  rsyslog针对haproxy的日志处理,当然我下面贴出的处理方法不是最好的,rsyslog还支持logstash的filter的grok中的pattern,rsyslog有自己类似的插件,用mmnormalize插件更高效

  我们现在已经对日志进行了我们所需要到es里的正确拆分
  下面我们就要往kafka里对数据了
  local2.*  action(type="omkafka" broker="[172.16.10.130:9092,172.16.10.131:9092,172.16.10.132:9092,172.16.10.139:9092,172.16.10.140:9092]" topic="EAGLEYE_LOG_HAPROXY_CHANNEL" partitions.number="15" confParam=["compression.codec=snappy","s
  ocket.keepalive.enable=true"] queue.saveonshutdown="on" queue.size="10000000" queue.type="LinkedList" queue.highwatermark="600000" queue.lowwatermark="20000" queue.discardmark="800000" queue.maxfilesize="1g" queue.maxdiskspace="10g" acti
  on.ResumeInterval="10" action.ResumeRetryCount="-1" action.reportSuspension="on" action.reportSuspensionContinuation="on" template="json_lines")
  具体这些参数大家可以去官网查看
  下面我们去看kafka的topic EAGLEYE_LOG_HAPROXY_CHANNEL是否已经有数据过来了

  可以看到数据已经写到了kafka中
  下面我们就要去编写收集端的代码
  说到收集端,实际上就是消费者还有往es里插入
  代码我就不贴出来了
  大致逻辑是起2个单独的线程 一个线程负责消费kafka,一个线程调用es的api或者restful接口的_bulk方法去批量插入json数据
  下面我们再去看es是否已经有数据了

  ok现在es集群里也已经有数据了
  下面我们去kibana里添加图表
  具体如何添加我就不在这里说了,先给大家看些图
  kibana图我就不展示了 因为有铭感信息
  

  

  可以看到总共的请求数 平均响应时间 都有那些ip链接haproxy haproxy都调用了那些ip 那些请求不正常都可以通过图表看到,还有些需求我后续都会加到kibana中
  这样整个流程就走下来了,我们现在大部分都是别人给我们提需求,我们只是去配置,但是我们能不能自己给自己提一些需求,自己来去分析一些我们认为有用的日志信息,haproxy日志分析,我认为就是个例子,供大家参考,谢谢
  





运维网声明 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-658500-1-1.html 上篇帖子: linux服务器 Haproxy搭建Web集群环境实例 下篇帖子: HAProxy同时对80和443做负载均衡
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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