DevOps-Ansible自动化运维

DevOps-Ansible自动化运维

Read More

CentOS 6 上 Zabbix 3.x安装

安装可通过更新Yum源或通过源码进行安装,这里选择源码安装

访问http://www.zabbix.com/download页面下载最新版的源码安装包,当前最新版本为3.2.6

# 添加用户
groupadd zabbix
useradd -g zabbix zabbix
# 下载安装包
wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.2.6/zabbix-3.2.6.tar.gz
tar -xzvf zabbix-3.2.6.tar.gz 
cd zabbix-3.2.6
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2
# 报错
configure: error: Invalid Net-SNMP directory - unable to find net-snmp-config
#安装
yum install net-snmp-devel -y

没有问题就会出现如下提示

Zabbix安装

# 编译安装
make install
# 拷贝web文件
cp -R frontends/php/ /var/www/zabbix
# 启动服务端
zabbix_server
# 启动客户端
zabbix_agentd

Apache的配置这里略过,接下来需要进行数据库的安装
数据库安装

create database zabbix;
# 可单独为该数据库创建用户,此处略过

回到刚刚的安装目录,可以在database/mysql下看到以下三个sql文件
data.sql
images.sql
schema.sql

# 导入数据
mysql -uroot -p zabbix < database/mysql/schema.sql 
mysql -uroot -p zabbix < database/mysql/images.sql
mysql -uroot -p zabbix < database/mysql/data.sql 

在浏览器中访问配置的域名,按步骤来完成安装
Zabbix安装初始页面Zabbix安装检测页面

出现如上报错,处理方法如下:

vi /etc/php.ini
post_max_size = 16M
max_execution_time = 300
max_input_time = 300
date.timezone = Asia/Shanghai
# 执行 yum list | grep bcmath 查找对应的名称并执行yum安装,如
yum install php-bcmath

接下来进行数据库及相关配置,不再赘述,安装后默认的用户名密码分别为admin和zabbix,在生产环境下请记得修改

Zabbix仪表盘

Zabbix Agent安装

rpm -Uvh http://repo.zabbix.com/zabbix/3.2/rhel/6/x86_64/zabbix-release-3.2-1.el6.noarch.rpm
# rpm -Uvh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
yum -y install zabbix zabbix-agent
# 配置文件
vi /etc/zabbix/zabbix_agentd.conf
#Server=[zabbix server ip]
#Hostname=[ Hostname of client system ]
#启动服务
/etc/init.d/zabbix-agent start
# systemctl start zabbix-agent #CentOS 7
# 设置开机自启动
chkconfig zabbix-agent on
# systemctl enable zabbix-agent

Ubuntu 14.04

wget http://repo.zabbix.com/zabbix/3.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_3.2-1+trusty_all.deb
sudo dpkg -i zabbix-release_3.2-1+trusty_all.deb
sudo apt-get update
sudo apt-get install zabbix-agent
# 配置文件
vi /etc/zabbix/zabbix_agentd.conf
#Server=[zabbix server ip]
#Hostname=[ Hostname of client system ]
#启动服务
/etc/init.d/zabbix-agent start

Windows Server
http://www.zabbix.com/download下载监控客户端
解压bin下分别放着32位和64位的安装包,conf下放着配置文件,将这两个文件拷贝到C盘的zabbix目录下,修改conf中如下内容

EnableRemoteCommands=1           #允许在本地执行远程命令
LogRemoteCommands=1              #执行远程命令是否保存操作日志
Server = x.x.x.x              #填写zabbix服务器IP地址
Hostname=wintest01               #zabbix_agent客户端计算机名 (被监控主机)

在命令行中执行

C:\zabbix\zabbix_agentd.exe -i -c C:\zabbix\zabbix_agentd.win.conf               #安装zabbix客户端
#正常安装会提示service [Zabbix Agent] installed successfully
C:\ zabbix\ zabbix_agentd.exe -s -c C:\zabbix\zabbix_agentd.win.conf             #启动zabbix服务
#正常启动会提示service [Zabbix Agent] started successfully

注意:要在防火墙中开启10050端口的访问

 

Zabbix及监控知识总结

建议

Zabbix Server对时间的精准的要求比较高,所以设置好ntp自动同步或添加crontab

流量监控

百度统计、Google Analytics…

Piwik

Piwik安装后演示效果

Read More

OpenVPN学习笔记

SSL VPN开源软件:OpenVPN(使用OpenSSL协议)
IPSEC VPN开源软件:OpenSwan

PPTP, L2TP, IPSEC, SSH, LVS, TUN(ipip)

OpenVPN实现方案图解

跨机房、跨办公室IPSEC/VPN实现方案图

安装步骤

配置VPN服务器时间同步

为了让VPN连接不会失败,应确保服务器之间时间上的同步

#手动执行
/usr/sbin/ntpdate pool.ntp.org (ntpdate未安装请自行安装)
#设置定时任务自动执行
echo '#sync time' >> /var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1' >> /var/spool/cron/root

定时任务可能过crontab -l进行查看

部署安装OpenVPN服务器

#按照个人习惯创建一个软件目录
mkdir -p /home/alan/openvpn
cd /home/alan/openvpn/
#安装lzo压缩模块
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gz
tar zxf lzo-2.06.tar.gz
cd lzo-2.06
./configure
make
make install
cd ../
#安装OpenSSL
yum install openssl* -y
#安装OpenVPN 官方下载地址http://www.openvpn.net/release/openvpn-2.2.2.tar.gz
wget http://swupdate.openvpn.org/community/releases/openvpn-2.2.2.tar.gz
tar zxf openvpn-2.2.2.tar.gz
cd openvpn-2.2.2
./configure --with-lzo-headers=/usr/local/include --with-lzo-lib=/usr/local/lib
make
make install
cd ../

注:想要确定指定是否正确执行,输入echo $?看是否返回0即可

执行 which openvpn,返回如下表示OpenVPN安装成功

/usr/local/sbin/openvpn

常见问题

1.configure: error: OpenSSL Crypto headers not found.
这时由于OpenVPN依赖于OpenSSL,应执行yum install openssl* -y安装OpenSSL完整包

route
tcpdump

Python自动化运维学习笔记

Python基础

# 导入模块
import math
# 导入模块中的某些函数
from math import pow, sin
# 如cStringIO不存在则导入StringIO模块
try:
    from cStringIO import StringIO
except ImportError:
    from StringIO import StringIO
# 试用新版本新特性
from __future__ import ...
# 安装第三方模块
pip install ...

# -*- coding:utf-8 -*-

# Python类的继承
Class SubClass(ParentClassName):
	def __init__(self, args):
		super(SubClass, self).__init__(args)

*args, **kw
装饰器
@classmethod

文件处理

f = open('file.txt', 'r') //写w,追加a 或者用f = open('file.txt', 'r')
c = f.read() //写f.write('....'),读取一行f.readline(),f.tell()查看指针,f.seek(n)指针指向第n位如f.seek(0)
c = split('\n')[n] //读取第n行数据,另一种方法c = f.readlines()然后调用c[n],大文件用xreadlines()
f.close() //关闭文件
f.flush()

Python DB API

https://www.python.org/dev/peps/pep-0249/

MySQL Connector: https://sourceforge.net/projects/mysql-python/
Mac:

brew install mysql-connector-c
pip install mysql-python #Python 3.5使用pip install PyMySQL

运维常用命令

ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap

psutil

#『安装方法』
wget https://pypi.python.org/packages/source/p/psutil/psutil-2.0.0.tar.gz --no-check-certificate
tar -xzvf  psutil-2.0.0.tar.gz 
cd psutil-2.0.0
python setup.py install

技巧一:建议安装方法

技巧二:配置Tab方便Python命令行中的操作

参见Python基础知识及常见问题 部分

Shell下查看已使用内存和总内存的方法

IPy

 

SVN学习笔记

安装

yum -y install subversion

通过rpm -qa subversion可确认是否已安装
小帖士:如需保留yum安装包的话只需修改/etc/yum.conf中的keepcache的值即可

#修改
sed -i 's#keepcache=1#keepcache=0#g' /etc/yum.conf
#查看
grep keepcache /etc/yum.conf

配置并启动

创建两个目录,分别用于存储数据和用户、密码

mkdir -p /application/svndata
mkdir -p / application/svnpasswd

使用svnserve来启动SVN服务,相关参数可通过svnserve –help来查看用途

svnserve -d -r /application/svndata/
#查看服务是否启动
ps -ef | grep svn
#通过端口方式来查看服务是否启动
netstat -lnpt | grep 3690
#或者(CentOS 6默认未安装)
lsof -i :3690

svn-netstat

创建版本库

创建版本库使用命令svnadmin

svnadmin create /application/svndata/sadoc

通过tree /application/svndata可以查看到版本库基本的目录结构

/application/svndata/
└── sadoc
    ├── conf
    │   ├── authz
    │   ├── passwd
    │   └── svnserve.conf
    ├── db
    │   ├── current
    │   ├── format
    │   ├── fsfs.conf
    │   ├── fs-type
    │   ├── min-unpacked-rev
    │   ├── rep-cache.db
    │   ├── revprops
    │   │   └── 0
    │   │       └── 0
    │   ├── revs
    │   │   └── 0
    │   │       └── 0
    │   ├── transactions
    │   ├── txn-current
    │   ├── txn-current-lock
    │   ├── txn-protorevs
    │   ├── uuid
    │   └── write-lock
    ├── format
    ├── hooks
    │   ├── post-commit.tmpl
    │   ├── post-lock.tmpl
    │   ├── post-revprop-change.tmpl
    │   ├── post-unlock.tmpl
    │   ├── pre-commit.tmpl
    │   ├── pre-lock.tmpl
    │   ├── pre-revprop-change.tmpl
    │   ├── pre-unlock.tmpl
    │   └── start-commit.tmpl
    ├── locks
    │   ├── db.lock
    │   └── db-logs.lock
    └── README.txt

修改配置文件conf/svnserve.conf(别忘了先做好备份哦)

#修改第12,13行
anon-access = none
auth-access = write
#第20行
password-db = /application/svpasswd/passwd
#第27行
authz-db = /application/svnpasswd/authz

通过diff指令对比备份文件可查看修改的内容

diff svnserve.conf.bak svnserve.conf
12,13c12,13
< # anon-access = read
< # auth-access = write --- > anon-access = none
> auth-access = write
20c20
< # password-db = passwd --- > password-db = /application/svnpasswd/passwd
27c27
< # authz-db = authz --- > authz-db = /application/svnpasswd/authz

修改完配置文件需重启SVN使配置文件生效

pkill svnserve
svnserve -d -r /application/svndata/

使用了pid file的话可以通过如下方法重启

kill -USR1 <code>cat /application/svndata/svn.pid</code>
svnserve -d -r /application/svndata --pid-file=/application/svndata/svn.pid

接下来将conf文件夹下的passwd和authz文件拷贝到/application/svnpasswd目录下

cp passwd authz /application/svnpasswd/

注:为保持安全性可将拷贝到/application/svnpasswd/下的这两个文件设置700的权限

在passwd中配置用户名和密码,按照 user = password一行一个用户的方式添加即可
然后在authz文件中定义组设置权限:
基本格式

[<版本库>:/项目/目录]
@<用户组名> = 权限
<用户名> = 权限

#定义组-[groups]下面
sagroup = alan, david
[sadoc:/]
@sagroup = r
alan = rw

接下来就需要在本地下载SVN客户端,Windows下一般用TortoiseSVN (常用操作有SVN Update(首次为Checkout)和SVN Commit,缺省目录%APPDATA%\Subversion\auth)

Linux下客户端的操作方法

svn co svn://*.*.*.*/sadoc /local/dir/ --username=alan --password=...
svn add filename
snv ci -m "description..."
svn import /local/dir/ svn://*.*.*.*/sadoc -m "description..."

Linux下修改SVN IP地址(通过svn info可查看详细信息)

svn switch --relocate 原svn地址 新svn地址

SVN下可能过钩子来在提交前、提交后进行一些操作,默认在hooks文件夹下有如下模板,去除后面的.tmpl即可使用
post-commit.tmpl
post-lock.tmpl
post-revprop-change.tmpl
post-unlock.tmpl
pre-commit.tmpl
pre-lock.tmpl
pre-revprop-change.tmpl
pre-unlock.tmpl
start-commit.tmpl

注:从Windows上传的文件转换文本格式用dos2unix指令,钩子文件要加执行权限

以下是一个通过钩子来传送文件的简单示例

REPOS="$1"
REV="$2"
#encoding
export LC_CTYPE="en_US.UTF-8"
export LC_ALL=
#log pth
LOGPATH-"/app/log"
[ ! -d ${LOGPATH} ] && mkdir ${LOGPATH} -p
#update content with svn
SVN update --username alan -- password alanhou /data/www

if [ $? -eq 0 ]
        then
        /usr/bin/rsync -az --delete /data/www /tmp/
fi

其它:

branch, tag, trunk

svnlook

线上更新代码:先上传到临时目录,再执行mv或者使用ln软链接

Jira, Mantis

互联网大型企业代码上线发布架构方案