如题,先来张最终效果运营日报
下面介绍下实现过程
【前期准备】
kibana配置视图,并做好条件过滤视图,这里就是做介绍,可以参考博文,
视图做好后生成一个短链接,这里我们生成的是
http://10.0.0.110:5601/goto/4d641c075d7cbf2c7d70a82b16436769
1、安装配置PhantomJS
# yum -y install gcc gcc-c++ make flex bison gperf ruby \ openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \ libpng-devel libjpeg-devel # wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2 # tar xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/share/ # ln -s /usr/local/share/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/ # phantomjs --version 2.1.1
2、PhantomJS截图脚本
创建TimeOut2s.js
var page = require('webpage').create(); var address = 'http://10.0.0.110:5601/goto/4d641c075d7cbf2c7d70a82b16436769'; var output = 'TimeOut2s.png'; page.viewportSize = { width: 1600, height: 600 }; page.open(address, function (status) { if (status !== 'success') { console.log('Unable to load the address!'); phantom.exit(); } else { window.setTimeout(function () { page.render(output); phantom.exit(); }, 20000); } });
做完以上工作 ,我们先测试下,是否可以正常截图
#/data/programs/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /data/scripts/reports/TimeOut2s.js
果然在路径下产生了一个TimeOut2s.png,截图成功
好了,截图过程很简单吧,接下来配置phpmailer发送邮件过程
Phpmailer组件的好处不做累述,总之呢可以发送图片到邮件内容中,
下载phpmailer后,我们只用到以下这几个文件:
class.phpmailer.php 、class.pop3.php、class.smtp.php、 mailer.php
首先要配置的是mailer.php, 在这里我配置的是阿里的邮箱地址
<?php header("content-type:text/html;charset=utf-8"); ini_set("magic_quotes_runtime",0); require 'class.phpmailer.php'; $foo = date("Y-m-d"); try { $mail = new PHPMailer(true); $mail->IsSMTP(); $mail->CharSet='UTF-8'; //设置邮件的字符编码,这很重要,不然中文乱码 $mail->SMTPAuth = true; //开启认证 $mail->Port = 25; $mail->Host = "smtp.mxhichina.com"; $mail->Username = "monitor@***.com"; $mail->Password = "********"; $mail->From = "monitor@***.com"; $mail->FromName = "Monitor"; $to = "mailerto@yourdomain.com"; //发送邮件 $mail->AddAddress($to); $mail->addcc("mailerto@yourdomain.com"); //抄送邮件 $mail->Subject = "**官网性能数据TimeOut2s日报$foo"; $mail->AddEmbeddedImage('TimeOut2s.png', 'logoimg', 'TimeOut2s.png'); $mail->Body = " <h1>Test 1 of PHPMailer html</h1> <p>This is a test picture: <img src=\"cid:logoimg\" /></p>"; $mail->AltBody="This is text only alternative body."; $mail->WordWrap = 80; // 设置每行字符串的长度 //$mail->AddAttachment("f:/test.png"); //可以添加附件 $mail->IsHTML(true); $mail->Send(); echo '邮件已发送'; } catch (phpmailerException $e) { echo "邮件发送失败:".$e->errorMessage(); } ?>
上面配置很简单吧,确保生成的图片和phpmail.php是同一路径,测试下
/usr/bin/php /data/scripts/reports/mailer.php
果然收到邮件了。
接下来无非就是调下邮件的格式,加到自动执行脚本里,每天发送日报。
以上大致就是利用PhantomJS 自动截图Kibana ,phpmailer发送网站运营日报 ,如有问题请多多关注博文。
补充一个问题:
发现PhantomJS 对中文不能显示,是因为系统少了中文字体,
用phantomjs截图时中文乱码的解决方案:
解决办法就是安装字体。
在centos中执行:yum install bitmap-fonts bitmap-fonts-cjk
在ubuntu中执行:sudo apt-get install xfonts-wqy
这样再去截图中文的页面就不会出现一堆的方框了。
© 版权声明
文章版权归作者所有,未经允许请勿转载。