• <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://m.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
            久久久久国产一级毛片高清板 | 2021精品国产综合久久| 国产亚洲色婷婷久久99精品| 青青青伊人色综合久久| 99久久久久| 香蕉久久夜色精品国产2020| 国产精品久久久久久五月尺| 青青国产成人久久91网| 欧美亚洲另类久久综合婷婷| 久久久青草青青亚洲国产免观| 久久国产综合精品五月天| 久久久久亚洲精品日久生情 | 久久无码专区国产精品发布| 久久久久久亚洲Av无码精品专口| 久久久黄片| 996久久国产精品线观看| 亚洲国产成人久久综合碰| 99久久免费只有精品国产| 性高湖久久久久久久久| 日韩十八禁一区二区久久| 91精品国产综合久久精品| 亚洲色婷婷综合久久| 久久久久久久久久久久久久| 国产69精品久久久久9999| 久久最近最新中文字幕大全| AV无码久久久久不卡蜜桃| 香蕉久久AⅤ一区二区三区| 久久99精品九九九久久婷婷| 久久97久久97精品免视看秋霞| 久久精品亚洲精品国产色婷 | 久久99国产综合精品女同| 久久久www免费人成精品| 亚洲欧洲久久av| 亚洲精品视频久久久| 久久高潮一级毛片免费| 91精品国产综合久久四虎久久无码一级| 色8久久人人97超碰香蕉987| 国产产无码乱码精品久久鸭| 久久精品国产99久久久| 韩国免费A级毛片久久| 国产99久久精品一区二区|