• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Fork me on GitHub
            隨筆 - 215  文章 - 13  trackbacks - 0
            <2016年9月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678


            專注即時通訊及網游服務端編程
            ------------------------------------
            Openresty 官方模塊
            Openresty 標準模塊(Opm)
            Openresty 三方模塊
            ------------------------------------
            本博收藏大部分文章為轉載,并在文章開頭給出了原文出處,如有再轉,敬請保留相關信息,這是大家對原創作者勞動成果的自覺尊重!!如為您帶來不便,請于本博下留言,謝謝配合。

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            相冊

            Awesome

            Blog

            Book

            GitHub

            Link

            搜索

            •  

            積分與排名

            • 積分 - 216726
            • 排名 - 118

            最新評論

            閱讀排行榜

            http://blog.chinaunix.net/uid-17291169-id-5212576.html

            公司部分業務放在阿里云上面,雖然阿里云管理平臺本身有自己的監控后臺,但是公司也有自己獨立的zabbix監控系統,目前要做的就是把阿里云的監控轉移到自己公司的監控系統,需要使用到阿里云的API,API的使用分以下2種方式

            1.使用阿里云的Python SDK(python2.7),具體參考http://develop.aliyun.com/sdk/python?spm=5176.100054.0.0.tcU93U,示例代碼:

            #!/usr/local/bin/bin/python2.7
            #
            coding:utf-8

            from aliyunsdkcore import client
            from aliyunsdkrds.request.v20140815 import DescribeRegionsRequest

            clt 
            = client.AcsClient('access_key','access_secret','cn-hangzhou')
            request
            =DescribeRegionsRequest.DescribeRegionsRequest()
            request.set_accept_format(
            'json')
            #request.set_action_name("DescribeDBInstancePerformance")
            request.set_action_name("DescribeResourceUsage")
            #request.set_query_params(dict(DBInstanceId="rdsid",key="MySQL_NetworkTraffic",StartTime="2015-10-13T15:00Z",EndTime="2015-10-14T15:00Z"))
            request.set_query_params(dict(DBInstanceId="rdsid",StartTime="2015-10-13T15:00Z",EndTime="2015-10-14T15:00Z"))
            print(clt.do_action(request))


            2.使用原生的API,示例代碼:

             

            #!/usr/bin/python
            #
            coding:utf-8

            tryimport httplib
            except ImportError:
                
            import http.client as httplib
            import sys
            import urllib
            import urllib2
            import time
            import json
            import itertools
            import mimetypes
            import base64
            import hmac
            import uuid
            from hashlib import sha1

             


            class AliyunMonitor:


                
            def __init__(self,url):
                    self.access_id 
            = 'access_id'
                    self.access_secret 
            = 'access_secret'
                    self.url 
            = url
                
            ##簽名
                def sign(self,accessKeySecret, parameters):
                    sortedParameters 
            = sorted(parameters.items(), key=lambda parameters: parameters[0])
                    canonicalizedQueryString 
            = ''
                    
            for (k,v) in sortedParameters:
                        canonicalizedQueryString 
            += '&' + self.percent_encode(k) + '=' + self.percent_encode(v)

                    stringToSign 
            = 'GET&%2F&' + self.percent_encode(canonicalizedQueryString[1:]) #使用get請求方法

                    h 
            = hmac.new(accessKeySecret + "&", stringToSign, sha1)
                    signature 
            = base64.encodestring(h.digest()).strip()
                    
            return signature

                
            def percent_encode(self,encodeStr):
                    encodeStr 
            = str(encodeStr)
                    res 
            = urllib.quote(encodeStr.decode(sys.stdin.encoding).encode('utf8'), '')
                    res 
            = res.replace('+''%20')
                    res 
            = res.replace('*''%2A')
                    res 
            = res.replace('%7E''~')
                    
            return res

                
            def make_url(self,params):
                    timestamp 
            = time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())
                    parameters 
            = {
                        
            'Format' : 'JSON',
                        
            'Version' : '2014-08-15',
                        
            'AccessKeyId' : self.access_id,
                        
            'SignatureVersion' : '1.0',
                        
            'SignatureMethod' : 'HMAC-SHA1',
                        
            'SignatureNonce' : str(uuid.uuid1()),
                        
            'TimeStamp' : timestamp,
                    }
                    
            for key in params.keys():
                        parameters[key] 
            = params[key]

                    signature 
            = self.sign(self.access_secret,parameters)
                    parameters[
            'Signature'= signature
                    url 
            = self.url + "/?" + urllib.urlencode(parameters)
                    
            return url

                
            def do_request(self,params):
                    url 
            = self.make_url(params)
                    
            print(url)
                    request 
            = urllib2.Request(url)
                    
            try:
                        conn 
            = urllib2.urlopen(request)
                        response 
            = conn.read()
                    
            except urllib2.HTTPError, e:
                        
            print(e.read().strip())
                        
            raise SystemExit(e)
                    
            try:
                        obj 
            = json.loads(response)
                    
            except ValueError, e:
                        
            raise SystemExit(e)
                    
            print obj

            if __name__ == "__main__":
                T 
            = AliyunMonitor("https://rds.aliyuncs.com")
                T.do_request({
            "key":"MySQL_NetworkTraffic","Action":"DescribeDBInstancePerformance","DBInstanceId":"rds_id","StartTime":"2015-10-13T15:00Z","EndTime":"2015-10-14T15:00Z"})


            注意事項:確保運行腳本的主機時區時間無誤(yum install ntpdate  && ntpdate  time.windows.com)


            =========================阿里云相關文檔參考===========================

            阿里云API文檔:https://develop.aliyun.com/
            點擊【創建/管理 Acccesskey】
            通過【訪問控制(Resource Access Management)】產品獲得【受限的】AcccessKey和AccessSecret,以用于后續API調用
            https://www.aliyun.com/product/ram?spm=5176.doc28636.2.2.4DV89b

            阿里云SDK下載(Python):
            https://develop.aliyun.com/sdk/python?spm=5176.7926450.210367.2.x1p7Zk
            還有其他版本SDK的下載
            Python SDK安裝:
            https://zhidao.baidu.com/question/544414713.html

            查詢實例列表:
            https://help.aliyun.com/document_detail/25506.html?spm=0.0.0.0.QjVZTI
            查詢伸縮組內實例列表:
            https://help.aliyun.com/document_detail/25942.html?spm=0.0.0.0.IeaTQA

            相關筆記:《Ansible+SVN 自動部署》(解決彈性伸縮工作中不定數目的ECS實例更新部署問題)
            http://www.shnenglu.com/kenkao/archive/2017/03/01/214717.html

            監控與自動化部署:(解決ECS實例新彈出時的自動部署問題)
            PS:如果--level 6不生效,則可以執行chkconfig test on開啟全部等級(測試中,弊端不明...)
            PS:前面我的說明有一個地方不太嚴謹,大多數情況下都配置35,很少有配置4的。(來自阿里售后工程師

            https://help.aliyun.com/document_detail/25971.html?spm=0.0.0.0.QjVZTI

            彈性伸縮在使用報警任務之前,需要在ECS的鏡像里安裝新版本的云監控程序
            https://help.aliyun.com/knowledge_detail/38830.html

            關于彈性伸縮自動創建實例的密碼與登錄問題:
            創建云主機的時候,主機密碼都不是自定義鏡像中的密碼。為了保證密碼的安全性,推薦您通過設置”公私鑰”認證的方式來進行SSH免密碼登錄。
            如果您不需要通過設置”公私鑰”認證的方式來進行SSH免密碼登錄,則需要在控制臺重置密碼(重啟生效)才能登錄。

            配置Linux主機SSH無密碼訪問:
            # 在master上生成密鑰對
            #
             ssh-keygen
            #
             通過ssh-copy-id下發公鑰到servant鏡像
            #
             ssh-copy-id -i /root/.ssh/id_rsa.pub root@servanthost
            #
             <輸入root@servanthost口令>
            #
             嘗試無密碼登錄
            #
             ssh root@servanthost
            以servant鏡像為藍本創建的彈性ECS實例,皆可在master上無密碼登錄

            相關筆記:《阿里云ECS服務器搭建Nginx+PHP+MySql環境詳細步驟(CentOS7環境)》
            http://blog.csdn.net/kenkao/article/details/53333595

            Ecs部署:
            master servant(鏡像)
            1.安裝svn 1.安裝svn svn拉取部署
            2.安裝ansible 運維工具搭建
            3.生成密鑰對 3.下發得到公鑰 無密碼訪問
            4.nginx+php環境搭建 基本服務環境
            5.部署腳本 5.部署自啟腳本并開啟 自動運維腳本
            6.nginx調優 運行環境調優

            SVN及Ansible安裝:
            http://blog.chinaunix.net/uid-21146222-id-5761320.html
            http://blog.chinaunix.net/uid-21146222-id-5757647.html

            相關筆記:
            阿里云自定義監控的使用》(關注其中python腳本部分)
            《通過crontab為linux添加定時任務》http://blog.chinaunix.net/uid-21146222-id-4326110.html
            總結:
            可以直接 vim /etc/crontab ,并添加類似 */1 * * * * root /home/scripts/report.sh 的定時任務,與 crontab -e 的區別在于需要顯示指定所屬用戶 root
            /sbin/service crond restart 重啟crond服務
            tail -f /var/log/cron 動態查看crond日志

            關于《阿里云自動告警》機制中遇到的坑:(crontab定時執行python的坑)
            https://bbs.aliyun.com/read.php?tid=135851&page=1
            http://blog.bomobox.org/2016-10-06/crontab-python/
            http://blog.csdn.net/shanliangliuxing/article/details/7980298
            總結:
            通過crontab定時執行python腳本失敗的根本原因在于crontab的運行時環境有別于root用戶的python環境
            解決方法:
            1. 編寫shell腳本掛載python腳本,而后crontab定時執行shell腳本(crontab對于shell腳本擁有更好的親和力
            2. 編輯/etc/hosts文件,把::1條目注釋掉(解決ipv6沖突問題,該步驟是否必須有待考證..)

            關于解決shell腳本正常執行,但是crontab執行失敗的土辦法:先cd到相關目錄下,在./執行相關命令行。例如:
            /home/loganalysis/dealexcel.sh
            修改為
            cd /home/loganalysis/ && ./dealexcel.sh
            參考:http://blog.csdn.net/jkunzhang/article/details/7440215


            附件下載:
            >> xxxxansible.zip
            >> xxxxwarning.zip
            posted on 2017-03-28 11:29 思月行云 閱讀(826) 評論(0)  編輯 收藏 引用 所屬分類: Python服務器\Ops
            精品无码久久久久国产动漫3d| 99久久精品国内| 少妇久久久久久被弄到高潮 | 99蜜桃臀久久久欧美精品网站 | 国内精品久久久久影院网站| 久久久不卡国产精品一区二区| 亚洲欧美国产日韩综合久久| 久久w5ww成w人免费| 久久性生大片免费观看性| 影音先锋女人AV鲁色资源网久久 | 亚洲乱码日产精品a级毛片久久| 亚洲综合精品香蕉久久网| 久久精品国产亚洲欧美| 久久人做人爽一区二区三区| 香港aa三级久久三级| 国产A三级久久精品| 久久久久久A亚洲欧洲AV冫| 久久久久久国产精品无码超碰| 久久国产成人午夜aⅴ影院| 久久久久久国产精品免费无码 | 久久综合九色综合欧美就去吻| 国内精品久久久人妻中文字幕| 人妻无码αv中文字幕久久琪琪布| 欧美日韩中文字幕久久伊人| 久久99热这里只有精品国产| 久久久受www免费人成| 天天久久狠狠色综合| 久久久久久综合一区中文字幕| 日产精品99久久久久久| 日本欧美久久久久免费播放网| 国产69精品久久久久APP下载| 人人狠狠综合久久亚洲| 精品久久人人爽天天玩人人妻| 国产精品亚洲综合专区片高清久久久| 久久精品国产亚洲av影院| 久久午夜伦鲁片免费无码| 99久久久精品| 国产ww久久久久久久久久| 久久丝袜精品中文字幕| 久久伊人色| 无码AV波多野结衣久久|