前提: 好久不弄zabbix了,刚换工作,我司运维情况还在百废待兴,在zabiix使用邮件报警的适合我们使用python写得邮件报警,以前使用的是shell编写的脚本.之前的邮件报警和配置可以参考我以前写得文章.
具体相关配置请参考我以前写得文章: http://opsnotes.net/2013/12/31/install_zabbix_06/
http://opsnotes.net/2014/01/21/install_zabbix_07/
如下是python mail脚本文件: root@dgz-zabbixserver01:/usr/lib/zabbix/alertscripts# cat mail.py #!/usr/bin/env python #coding:utf-8 import smtplib from email.mime.text import MIMEText import sys mail_host = 'smtp.qq.com' mail_user = 'username' mail_pass = 'passwd' mail_postfix = 'qq.com' def send_mail(to_list,subject,content): me = mail_user+"<"+mail_user+"@"+mail_postfix+">" msg = MIMEText(content) msg['Subject'] = subject msg['From'] = me msg['to'] = to_list try: s = smtplib.SMTP() s.connect(mail_host) s.login(mail_user,mail_pass) s.sendmail(me,to_list,msg.as_string()) s.close() return True except Exception,e: print str(e) return False if __name__ == "__main__": send_mail(sys.
[Read More]
牛刀小试之docker容器系列(四)
docker commit 创建基于ubuntu的ssh镜像
Ubuntu 创建ssh容器方式 1.容器准备工作 ubuntu [root@test-devops ~]# docker run -it ubuntu:14.04 /bin/bash 2.更新安装软件 root@f7b000275a50:/# apt-get update 带宽如果慢 可以忽略 root@f7b000275a50:/# apt-get install openssh-server vim 3.创建目录启动服务 root@fb02b31b8ef1:/# mkdir -p /var/run/sshd root@fb02b31b8ef1:/# /usr/sbin/sshd -D & [1] 3237 root@fb02b31b8ef1:/# 4.查看端口 root@fb02b31b8ef1:/# netstat -atlnp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 3237/sshd root@fb02b31b8ef1:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.
[Read More]
牛刀小试之docker容器系列(六)
牛刀小试之docker数据卷容器共享
重点思想:
数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新不会影响镜像
卷会一直存在,直到没有容器使用
语法操作:
1.数据卷的使用,类似linux下面的mount操作。
在docker run 启动的时候 可以加-v参数来创建一个容器卷。注意多次创建可以使用-v标记多个数据卷。
[root@docker ~]# docker run -d -P --name web -v /webapp training/webapp echo "hello world"
d7a7b8a6e1a6f21828833ca3fc32fa15110704830ff5d19962728d0e269732b8
2.本地硬盘挂载
[root@docker ~]# docker run -d -P --name web -v /srv/webapp:/opt/webapp/ training/webapp echo "hello world"
b9136b0dbe333ac0bbdae76925db6de4cf272433ec92cf65fd17660bd59f0c19
[root@docker ~]#
3.本地硬盘挂载一个只读的 -ro参数
[root@docker ~]# docker run -d -P --name web -v /srv/webapp:/opt/webapp/:ro training/webapp echo "hello test"
252a677db3a2cfe679c11983b1a27934820a31746ba0cdb49e6c6105cf80623e
[root@docker ~]#
4.挂载一个本地主机文件作为数据卷,建议一般不要挂载一个文件
[root@docker ~]# docker run --rm -it -v ~/.bash_history:/.bash_history centos:6 /bin/bash
[root@a5570545c53f /]#
[Read More]
使用flask发送邮件
使用flask发送邮件
安装flask-mail
sudo pip install flask-mail
设置环境变量
export MAIL_USERNAME='XXXXX@qq.com' #发送邮件的邮箱
export MAIL_PASSWORD='password' #发送邮件的邮箱密码
使用flask-mail发送邮件
(venv)zhangkeyuan@opsnotes:~/Test/flask » cat flask-mail.py
#!/bin/env python
#-*- coding:utf-8 -*-
from flask import Flask, render_template
from flask.ext.mail import Mail,Message
import os
app = Flask(__name__)
####SMTP server config
app.config['MAIL_SERVER'] = 'smtp.qq.com' #电子邮件服务器的地址
app.config['MAIL_PORT'] = '25' #邮箱服务器的端口
app.config['MAIL_USE_TLS'] = True #启用安全传输
app.config['MAIL_USERNAME'] = os.environ.get('MAIL_USERNAME') #邮件账户用户名,已定义环境变量
app.config['MAIL_PASSWORD'] = os.environ.get('MAIL_PASSWORD') #邮件账密码,已定义环境变量
mail = Mail(app)
@app.route('/')
def index():
msg = Message('主题',sender=os.environ.get('MAIL_USERNAME'),recipients=['431054426@qq.com'])
msg.body = '文本 body'
msg.html = '<b>测试flask发送邮件</b>'
mail.send(msg)
return '<h1>邮件发送成功</h1>'
if __name__ == '__main__':
app.run(debug=True)
(venv)zhangkeyuan@opsnotes:~/Test/flask »
git日常使用经验总结
git日常使用经验总结
初始化一个git仓库
初始化一个仓库,用如下命令。
git init
创建一个文件
echo "Git is a version contron system."> readme.txt
提交一个文件,提交文件到仓库
git add readme.txt
git commit -m "write a readme file"
案例1:创建一个git库
[root@test-devops git]# yum install git -y
[root@test-devops git]# mkdir /home/docker/git
[root@test-devops git]# cd /home/docker/git
[root@test-devops git]# git init
[root@test-devops git]# git config --global user.name "Steven"
[root@test-devops git]# git config --global user.email "admin@opsnotes.net"
[root@test-devops git]# git add file1.txt
[root@test-devops git]# git commit -m 'add file1.txt'
[master 812c99b] add file1.txt
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 file1.txt
[root@test-devops git]#
[Read More]
牛刀小试之docker容器系列(一)
牛刀小试之docker容器的连接方式
docker容器的连接方式:
容器有三种连接方式,attach exec nsenter工具,其他工具比较简单我们重点讲解下nsenter工具。
1.首先我们已后台的方式登陆到容器。
[root@docker ~]# docker run -idt ubuntu
7d3d35cb9c40388aa799ba922f92e6f54f27c3a889a8c28d0feb42bf060766f4
You have new mail in /var/spool/mail/root
[root@docker ~]#
2.查看容器是不是启动
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d3d35cb9c40 ubuntu:14.04 "/bin/bash" 8 seconds ago Up 7 seconds elegant_brattain
6aa9905ab9bc ubuntu:14.04 "/bin/bash -c 'while 10 minutes ago Up 5 minutes jovial_elion
[root@docker ~]# docker stop 6aa
6aa
[root@docker ~]#
exec用法:
docker 1.3 版本之后自带命令,可以在容器直接运行命令,启动一个bash,
exec工具相对比较简单,
[root@docker ~]# docker exec -ti 7d3d35cb9c40 /bin/bash
root@7d3d35cb9c40:/#
牛刀小试之docker容器系列(七)
牛刀小试之docker基于容器备份与恢复之export import
导出容器是指一个已经创建的容器到一个文件,不管这个容器是否在运行状态。
先查看容器:
[root@docker tmp]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a457769fdd92 ubuntu:14.04 "/bin/bash" 33 minutes ago Up 33 minutes backstabbing_fermi
7d3d35cb9c40 ubuntu:14.04 "/bin/bash" 49 minutes ago Up 49 minutes elegant_brattain
6aa9905ab9bc ubuntu:14.04 "/bin/bash -c 'while 59 minutes ago Exited (-1) 49 minutes ago jovial_elion
10f115a0aa25 ubuntu:14.04 "/bin/bash" About an hour ago Exited (0) About an hour ago compassionate_elion
e192cf610bda ubuntu:14.04 "/bin/echo test" About an hour ago Exited (0) About an hour ago goofy_pasteur
c535b42dc3f2 ubuntu:14.04 "/bin/echo 'hello wo About an hour ago Exited (0) About an hour ago compassionate_wozniak
713e34e2b463 ubuntu:14.04 "/bin/bash" About an hour ago cocky_bell
c72ad6c5adcd ubuntu:14.04 "/bin/bash" 3 hours ago Exited (0) 3 hours ago suspicious_feynman
8703418b2dec training/webapp:latest "echo 'hello world'" 3 hours ago Exited (0) 3 hours ago pensive_curie
7f3491707dd4 ubuntu:14.04 "/bin/bash" 3 hours ago Exited (0) 3 hours ago ecstatic_poincare
[root@docker tmp]#
分别导出a457769fdd92 7d3d35cb9c40 容器到test_for_run.tar test_for_stop.tar:
可以将这些文件传输到其他机器上来实现容器的迁移。
[root@docker tmp]# docker export a457 > test_for_run.tar
[root@docker tmp]# ls test_for_run.tar
test_for_run.tar
[root@docker tmp]# docker export 7d3 > test_for_stop.tar
[root@docker tmp]# ls test_for_*
test_for_run.tar test_for_stop.tar
[root@docker tmp]#
[Read More]
牛刀小试之docker容器系列(二)
docker容器增加删除
什么是容器?
容器是docker镜像运行的一个实例,所不同的是,他带有额外的可写文件
docker的容器十分轻量级,用户可以随意删除或者创建
docker创建容器的方式:
默认情况下docker create创建的容器是停止状态,一般我们可以使用docker start命令来启动容器,使用docker stop命令来停止容器。
docker容器创建:
一、新建容器:
[root@docker ~]# docker create -it ubuntu:latest
713e34e2b4638d824cf663ee0ec7dfc1a3664d6d0ba2fafd72202d3bfdde6a50
[root@docker ~]#
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
713e34e2b463 ubuntu:14.04 "/bin/bash" 18 seconds ago cocky_bell
[root@docker ~]#
二、启动容器有两种方式
1.基于镜像新建一个容器并且启动
2.把在终止的状态容器重新启动
docker run 相当于 docker create + docker start
三、如下:
[root@docker ~]# docker run ubuntu /bin/echo "hello world"
hello world
You have new mail in /var/spool/mail/root
[root@docker ~]#
牛刀小试之docker容器系列(0)
牛刀小试之docker安装部署
安装
[root@docker-master yum.repos.d]# curl https://git.oschina.net/feedao/Docker_shell/raw/start/ali-centos.sh | sh
[root@docker-master yum.repos.d]# yum install docker-io
启动
[root@docker-master yum.repos.d]# service docker start
Starting cgconfig service: [ OK ]
Starting docker: [ OK ]
[root@docker-master yum.repos.d]# chkconfig --level 35 docker on
[root@docker-master yum.repos.d]#
查看版本
[root@test-devops mysql]#
[root@test-devops mysql]# docker version
Client version: 1.5.0
Client API version: 1.17
Go version (client): go1.3.3
Git commit (client): a8a31ef/1.5.0
OS/Arch (client): linux/amd64
Server version: 1.5.0
Server API version: 1.17
Go version (server): go1.3.3
Git commit (server): a8a31ef/1.5.0
[root@test-devops mysql]#
[Read More]
牛刀小试之docker容器系列(五)
牛刀小试之docker镜像相关配置
获取镜像
[root@docker ~]# docker pull ubuntu
Pulling repository ubuntu
6d4946999d4f: Pulling dependent layers
6d4946999d4f: Download complete
428b411c28f0: Download complete
435050075b3f: Download complete
9fd3c8c9af32: Download complete
Status: Downloaded newer image for ubuntu:latest
[root@docker ~]#
可以使用如下方法下载一个特定的镜像
[root@docker ~]# docker pull ubuntu:12.10
如上命令相当于docker pull registry.hub.docker.com/ubuntu:latest.是从docker默认的服务器下载latest镜像
也可以从dockerpool地方下载镜像
下载完成之后就可以使用镜像:
[root@docker ~]# docker run -t -i ubuntu /bin/bash
root@b89ee17998ec:/#
root@b89ee17998ec:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@b89ee17998ec:/# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:ac:11:00:02
inet addr:172.17.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link
UP BROADCAST RUNNING MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:238 (238.0 B) TX bytes:238 (238.0 B)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
root@b89ee17998ec:/#
[Read More]
elasticsearch+logstash+kibana分析windowns日志
elasticsearch+logstash+kibana分析windowns日志
项目背景
客户需求需要监控windows下面的IIS相关日志,无解只能上去安装部署了,但是这东西只在Linux上玩过,为了以后少走弯路特此记录下。
准备工作:
1台windows2008 x86_64
JAVA jdk包
nssm包
logstash包
设置环境变量
下载JAVA jdk包 选择x86_64
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
下载nssm 为了把启动logstash已服务器的方式启动
https://nssm.cc/ci/nssm-2.24-23-gfb96938.zip
下载logstash1.4.2文件
https://download.elasticsearch.org/logstash/logstash/logstash-1.4.2.zip
安装JAVA包,安装步骤省略
设置环境变量
解压logstash-1.4.2.zip包文件到C:/logstash-1.4.2 省略
[Read More]使用saltstack部署zabbix agent
使用saltstack部署zabbix agent
环境:
master:121.40.28.126
client:121.41.118.184
客户端安装配置
1.安装saltstack 客户端以及修改配置文件
[root@zy_mongo02 ~]# yum -y install salt-minion
查看zabbix模块结构
[root@srv-zy-ops salt]# tree zabbix/
zabbix/
├── config.sls
├── file
│ ├── zabbix-2.4.zip ###包需要自己去下载
│ ├── zabbix_agentd
│ └── zabbix_agentd.conf
├── init.sls
└── install.sls
1 directory, 6 files
[root@srv-zy-ops salt]#
查看top.sls配置文件
[root@srv-zy-ops salt]# cat top.sls
base:
'*':
- zabbix.install
- zabbix.config
[root@srv-zy-ops salt]#
[Read More]