zabbix使用python mail报警

zabbix使用python mail报警

前提: 好久不弄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]
zabbix 

牛刀小试之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容器系列(六)

牛刀小试之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]
docker 

使用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 »
[Read More]

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]
git 

牛刀小试之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:/#
[Read More]
docker 

牛刀小试之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创建容器的方式:

	默认情况下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 ~]#
[Read More]
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容器系列(五)

牛刀小试之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]
docker 

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包,安装步骤省略

设置环境变量

elk

解压logstash-1.4.2.zip包文件到C:/logstash-1.4.2 省略

[Read More]
ELK 

使用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]