Welcome to Rolland Town which Record fire's life.
2016年05月27日Olivia

要查看留言请输入您的密码。

密码保护:「己所不欲,勿施于人」

这是一篇受密码保护的文章,您需要提供访问密码:

Cacti监控HAProxy(HOW TO MONITOR HAPROXY WITH CACTI)

—————————–FOR CHINESE—————————–
环境:
1.CentOS 7.2-1511
2.开启firewalld服务,开启161端口。

检查相关包并安装
# yum -y install net-snmp net-snmp-libs net-snmp-utils net-snmp-devel
# rpm -qa | grep net-snmp*
net-snmp-libs-5.7.2-24.el7.x86_64
net-snmp-5.7.2-24.el7.x86_64
net-snmp-agent-libs-5.7.2-24.el7.x86_64
net-snmp-devel-5.7.2-24.el7.x86_64
net-snmp-utils-5.7.2-24.el7.x86_64

# yum install -y net-snmp-perl

# rpm -qa | grep perl*
# yum provides ‘*/Net/SNMP.pm’
# yum install -y epel-release
# yum install -y perl-Net-SNMP

创建一个snmpv3用户,只读,使用MD5,用户名为snmptestuser,密码为snmp@test。
注意:运行之前请先停用net-snmp服务。

# net-snmp-config –create-snmpv3-user -ro -A snmp@test -a MD5 snmptestuser
adding the following line to /var/lib/net-snmp/snmpd.conf:
createUser swpujwjk MD5 “snmp@test” DES
adding the following line to /etc/snmp/snmpd.conf:
rouser snmptestuser

上传haproxy对应版本的perl脚本
contrib/netsnmp-perl目录下的
haproxy.pl

# cp haproxy.pl /etc/snmp/
检查权限
# ls -ll /etc/snmp/haproxy.pl
-rw-r–r– 1 root root 5554 Apr 23 10:53 haproxy.pl

修改haproxy配置文件
# vi /etc/haproxy/haproxy.cfg
增加下面内容
# turn on stats unix socket
stats socket /var/run/haproxy.stat mode 666
stats bind-process 1
注意:
stats bind-process 1
在多线程模式下的haproxy必须指定socket只使用一个线程,否则会报错,报错信息也是让增加这个参数设置。
另外,这里的socket必须和上传的perl文件中设置的一样。

修改snmp配置
# grep -q “disablePerl false” /etc/snmp/snmpd.conf || echo “disablePerl false” >> /etc/snmp/snmpd.conf
# echo “perl do ‘/etc/snmp/haproxy.pl’;” >> /etc/snmp/snmpd.conf

重启snmp和haproxy服务
# systemctl restart snmpd
# systemctl restart haproxy

检查重启后服务是否正常,有报错必须解决后再次重启
# systemctl status snmpd -l
# systemctl status haproxy -l
Cacti中导入下面两个模板
cacti_data_query_haproxy_backends.xml
cacti_data_query_haproxy_frontends.xml

将下面三个文件放在cacti的resource目录下。
注意:这个目录下有三个文件夹script_queries、script_server和snmp_queries
每个文件夹下都要放一份
haproxy_backend.xml
haproxy_frontend.xml
haproxy_socket.xml
最后,就可以到Cacti中去创建监控了。

 

—————————–FOR ENGLISH —————————–

Environment:
1.CentOS7.2-1511
2.firewalld service on, open port 161.

Check and Install package

# yum -y install net-snmp net-snmp-libs net-snmp-utils net-snmp-devel
# rpm -qa | grep net-snmp*
net-snmp-libs-5.7.2-24.el7.x86_64
net-snmp-5.7.2-24.el7.x86_64
net-snmp-agent-libs-5.7.2-24.el7.x86_64
net-snmp-devel-5.7.2-24.el7.x86_64
net-snmp-utils-5.7.2-24.el7.x86_64

# yum install -y net-snmp-perl

# rpm -qa | grep perl*
# yum provides ‘*/Net/SNMP.pm’
# yum install -y epel-release
# yum install -y perl-Net-SNMP

Create a snmpv3 user, read-only, use MD5, user name is snmptestuser, password is snmp @ test.
Note: Please disable SNMP service before running.

# net-snmp-config –create-snmpv3-user -ro -A snmp@test -a MD5 snmptestuser
adding the following line to /var/lib/net-snmp/snmpd.conf:
createUser swpujwjk MD5 “snmp@test” DES
adding the following line to /etc/snmp/snmpd.conf:
rouser snmptestuser

Upload haproxy corresponding version of perl scripts and Copy haproxy.pl to snmp folder
contrib/netsnmp-perl
haproxy.pl

# cp haproxy.pl /etc/snmp/
Check permissions
# ls -ll /etc/snmp/haproxy.pl
-rw-r–r– 1 root root 5554 Apr 23 10:53 haproxy.pl

Edit HAProxy configuration file
# vi /etc/haproxy/haproxy.cfg
add/edit the following content 
# turn on stats unix socket
stats socket /var/run/haproxy.stat mode 666
stats bind-process 1
Note:
stats bind-process 1
HAProxy in multi-process mode must specify the socket to use only one thread.In addition, the socket parameters must be set in the path of the perl file(haproxy.pl file $ sa definitions).

Edit SNMP configuration file
# grep -q “disablePerl false” /etc/snmp/snmpd.conf || echo “disablePerl false” >> /etc/snmp/snmpd.conf
# echo “perl do ‘/etc/snmp/haproxy.pl’;” >> /etc/snmp/snmpd.conf

Restart SNMP &HAProxy  service
# systemctl restart snmpd
# systemctl restart haproxy

Check again after the restart to restart the service is normal, there is an error to be resolved
# systemctl status snmpd -l
# systemctl status haproxy -l
Import the following two templates to Cacti
cacti_data_query_haproxy_backends.xml
cacti_data_query_haproxy_frontends.xml

Copy cacti XML files from haproxy installation files to cacti resource folders
Note:This directory has three folders script queries, script_server and snmp_queries.Each folder should be placed.
haproxy_backend.xml
haproxy_frontend.xml
haproxy_socket.xml

 

Finally, you can go to Cacti created a monitor HAProxy.

Reference:https://guynaftaly.wordpress.com/2016/03/27/how-to-monitor-haproxy-with-cacti/

2015年01月5日代码生活

汉字转拼音(Oracle函数实现)已关闭评论

汉字转拼音(Oracle函数实现)

很多MIS都有汉字转拼音,但是基本都用字库来实现的,这种方式最大的问题就是字库决定一切。字库不全就会导致结果不好。

工作关系今天刻意要做这个事情,所以到网上G了下,发现Oracle中文转拼音函数比较靠谱,但是有几个问题。

  1. heng读音的转换不正确;
  2. 缺少空格;
  3. 里面有些拼音我觉得不应该存在;

所以我擅自拿来改动了一下,适应我的需求,并修正了上面的三个问题。代码共享出来,给有需要的朋友。
继续阅读 »

2014年05月23日代码生活

CentOS6.4下Cacti的安装配置已关闭评论

CentOS6.4下Cacti的安装配置

最近重新部署Cacti,偷懒直接yum部署,结果发现好多问题。
总的来说,应该是yum的方便快捷,导致了思维僵化。因为第一次用yum(之前都是编译安装的。这次真心想偷懒),安装后配置、安装目录等都不清楚。顺手写了一个实施文档。能看的凑活看看吧,Cacti的部署网上一搜一大把。
注:x是打码而已,请勿直接复制相关命令
———————————-
服务器IP-192.168.x.x
———————————-
用户信息-
root/xxx
mysql-root/xxx
mysql-cactiuser/xxx
———————————-
Cacti信息
http://192.168.x.x/cacti/
admin/xxx
———————————-
实施总结及说明:
1、配置好的Cacti只额外加载了Linux和Solaris的监控模板。如果需要其他模板,可自行搜索下载后导入即可。
2、监控主机必须开启snmp服务,默认161端口,不管是Linux或者Windows。
3、之前安装了phpMyAdmin,后来直接按照Cacti官方文档加载的数据库,所以最后删除了。但是保留了MySQL的root用户远程登录权限。可以使用其他客户端管理数据库。不一定用phpMyAdmin。
4、配置的过程中,可能出现意外问题,可以查看相关日志文件查找原因。yum安装很方便,但是一旦出现问题,查找很麻烦,还是编译安装比较实在,从编译参数到配置到安装路径都在掌握中。
5、请勿删除、更改已有监控模板以监控设置。
6、略…….
———————————-
继续阅读 »

2014年01月12日Olivia

1 Comments

写在岁末年初

2012到2013这一年来,或者说到目前为止,经历着各种意外,承受着各种压力,担负着各种责任。不管最后如何,我只能坚持,因为这就是我的人生。在这岁末年初,只能胡乱码一些字,算是一种回顾和倾泻吧。

我不想吐槽体制,不想吐槽医保,更不想吐槽医生,我只想说出亲身的经历,是非对错也只能是个人看法。

Oli在8个多月的时候开始拉肚子,中间伴随上呼吸道感染症状的发烧,最开始仅仅是拉稀便而已,后来开始带血丝,辗转本地各个医院,在经历5个多月的折腾后,终于有一个医院的医生经过一系列的检查,怀疑是免疫系统的疾病,他们怀疑是炎症性肠病,因为几个医生之间有争论,无法确定到底是溃结还是克罗恩。准备给丫头上诊断性治疗。我当即google了一下,找到全国最好的几家医院,然后找医生商量,最后到上海xx医院儿科进一步确诊。最后确诊为白塞氏病。有几个细节不得不说。
1、Oli在10个多月的时候发烧住院,伴随稀便带血丝。那时候血小板就一直很高,但是医院一直找不到原因。
2、在另外一个医院检查,医生曾经说指尖血那个血小板本来就不准。
3、当地唯一能做肠镜的医院,全麻肠镜做了一个多小时。在上海肠镜胃镜一起做,加起来不超过15分钟。
4、确诊后医生说,这个病很多医生也许一辈子没见过。
5、当然上海也要看医院看医生。遇到一家人,说孩子5个月开始拉肚子,也是当地医院看不好,到上海来看了两家医院,花了20多万,最后到这个医院后,xx医生看了一次开了药就好了,这次是又拉肚子,直接来找xx医生来的。

还要说说医保。一般当地的医保都是不能出市的。要转院要开转院证明,整个过程看似简单,实际上非常麻烦。
首先,医院医生填写转院证明,要写明转院的医院名字。如果这个医院没资质(医保部门规定的资质),则需要先转到有资质的医院。
1、有资质的医院,医院的医保办公室都非常的谨小慎微,一般都不愿写明,那手续就办不下去了。
2、没资质的医院,只能让你去有资质的医院。那意味着病人要再做一些列的检查后,如果不能确诊,再开转院证明,如果这个医院的医保办公室再刁难下,估计也办不下去了。

这对真的是当地所有医院都无法确诊的病,是一个极大的时间浪费,对病人及家庭负担也非常重。一方面耽搁了病情,一方面承担了没有必要的经济损失。

其次,如果转院证明开出来了,还要到医保所在地的医保部门盖章审核。我不知道这些部门是刁难,还是不清楚相关规定,反正我遇到了说必须要盖转出医院的行政章的。然后两边扯皮,转出医院说没必要盖,医保所在地医院说要盖。

最后,还要到转院证明指定的这个医院的医保管理部门审批盖章。我说,一个人生地不熟的地方,你让老百姓咋弄咋问咋办?

医生这个职业实在是个高精细的活儿。不是说新来的拜师几年就能学的走的。

这个病当时在上海住院时,我去询问住院部的医生,都说首选激素治疗。可时至今日,Oli还是一丁点儿激素没吃,病情也得到了控制。实在佩服那个老太太!这个老太太不就是Oli的豪斯医生呢?老太太的徒弟们基本跟着干几年就离开,如同豪斯医疗团队里出出进进的医生们。但又有所不同!据说老太太的徒弟中居然有海龟博士最后辞职卖药的,我除了惋惜就是无奈。老太太临近退休了,可真正能承接其衣钵的居然没有一个人。再看看我们住院的上海那个医院,白发苍苍的老头专家不是少数。如果一个医院还依靠着这些将古之人,或者说一个国家的医疗体系还依靠着将古之人,那必定它们会随之将古。

看病难,病难看。有太多太多能东拉西扯的地方。我只希望我的Oli可以健康的成长起来,每每说到“健康”,我都会想起对于一个小孩来说,在Oli经历了这些之后,也许真的健康才是最重要的,不健康其他的都只能扯淡。

2013年05月10日代码生活

从FTP服务器自动获取备份已关闭评论

从FTP服务器自动获取备份

最近新败了一个希捷3T的移动硬盘来做数据备份。原来硬盘太小所以一直都手动下载,然后刻盘,但是现在有了3T,就想能不能自动从FTP获取备份呢?反正要装满3T估计需要点时间。

开始满世界google有没有类似的软件,结果貌似只有收费的可以满足我的需求。windows的批处理呢,我又觉得太简陋,索性用不太熟悉的Perl写了一个脚本,不过Perl网站的文档帮了很大忙,详见Net::FTP模块。主要代码都来自文档。

# 每天定时从服务器下载昨天的dmp数据
#! /usr/bin/perl
use strict;
use warnings;
use Net::FTP;

#获取日志时间
sub get_log_time{
my @sysdate = localtime(time());
my $fsysdate = sprintf(“%04d-%02d-%02d %02d:%02d:%02d”,$sysdate[5]+1900,$sysdate[4]+1,$sysdate[3],$sysdate[2],$sysdate[1],$sysdate[0]);
return ($fsysdate);
}
#构建需要下载的文件名,下载的是昨天的,所以要-86400
my ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst) = localtime(time()-86400);
$year += 1900; $mon += 1;
if (length($mon) == 1){
$mon=”0″ . $mon;
}
$day = ($day < 10)? “0$day”:$day;
my $date = “$year$mon$day”;
my $dmpfilename1 = $date . “.gz”;
my $logfilename1 = $date . “.log”;
#下载日志文件
my $logfile = “yourLocalLOGDIR” . $date . “.log”;
open(STDOUT, “>$logfile”) or die “日志文件错误!\n”;
my @fileList = ($dmpfilename1,$logfilename1);
#循环下载
#尝试过只循环$ftp->get($file,$loc_filename) or die “无法获取文件$file.\n”;
#发现下载完一个之后报错unable to close datastream
#google无果,每下载一个文件后重新建立连接。
for my $file (@fileList){
my $ftp = Net::FTP->new(“your-FTPserver”,Timeout=>30) or die “无法连接FTP-Sever.\n”;
my $username = “username”;
my $password = “password”;
$ftp->login($username,$password) or die “无法登陆FTP-Sever.\n”;
$ftp->cwd(‘yourFTPDIR’);
$ftp->binary ();
$ftp->pasv();
#获得服务器上文件的创建时间
my $mtime = $ftp->mdtm($file);
my $loc_filename = “yourLocalDIR” . $file;
$ftp->get($file,$loc_filename) or die “无法获取文件$file.\n”;
print &get_log_time . ” 下载” . $file . “完成。\n”;
#下载完成后将文件创建时间修改为FTP上的文件时间。
utime $mtime,$mtime,$loc_filename;
$ftp->quit;
}

最后,添加windows的计划任务,每天凌晨执行。本来想写的更晚上,添加上文件检查。后来想想反正都是覆盖,也没所谓了。只要定期看看下载的日志文件就好了。调试过程感谢@webbird帮忙。

返回顶部