[Zabbixの監視+ Pythonの爬虫類+シェルスクリプト]ファンドの純金融尻毎日思い出させる基盤となるファンドのボラティリティメール/釘を達成するために

前文

ただ、友人は[証券]このアプリで初めて、財務管理を初めて、2つの基金を開始するには、プレイごとに500の価格で、数日読ん市場との接触を持って、それが毎回が知らないことが発見されましたそれがネットの変更パラメータを更新する場合、を検索、または持っているたびに自身が友人との関連式を計算することができない何かを見つけるために気まぐれ後に、利益と損失、怠惰なことに、ちょっとを見て再度ログインします再度投入パラメータのネット値は、それから、より簡単に、より幸せこのウェブへ[ネットワーク毎日基金]を見つけ、それはそれを行う開いてから考えていました。

目的表示

ファンドのボラティリティプロンプト情報に時間を見つけたとき - 衰退の代表的な、正の数が増加を表します

アーキテクチャは、拡張します

容器:

ZABBIXサーバ:ドッカー

ZABBIXエージェント:CentOSのLinuxリリース1908年7月7日(コア)

バージョン:

nginx1.17 + mysql5.7.22 + PHP7 + zabbix4.2.5

python2.7.5

テクノロジーモデル

【ZABBIX】

ZABBIXこれは、パートナーが取る方法を知りませんでしたがあるとして、自分自身を構築するために、難しいことではありませんオープンソースプロジェクト以上のものを使用しないために、あなたがあなたの母親の程度について話して行くことをお勧めします、または私は前に建てZABBIX書いたものを見つけ記事が、私の記事のレベルは人ので、ない神が欲しい、ない方法、制限されていない[/泣き/]。

【パイソン】

Pythonの作品は、私がcentos7.7、ほとんど抵抗8、だったので、誰かが理由を尋ねたとして、私は知らない、ネイティブのpython2.7を使用して爬虫類、で、ヘクタール、言いたくありません。

【シェル】

このシェルは非常に簡単です、何のpythonデータは、ZABBIX投げ、はい、アクティブモードを使用する理由私はへと、アクティブモードを使用ZABBIXクロールより押し下げ、それをするよりも、私のZABBIXドッキングウィンドウが内側にスローされますので、そう、彼は関連プロセスに私の鏡と見た目に直接ZABBIXときに私は監視を設定するたびにきれいな、良いを開始します。

注意:以下の操作を実行する前に、以前にも設定していないZABBIXと私はもはや実証されています。

コードディレクトリファイルプロフィール

-rwxr-XR-X 1 ZABBIX ZABBIX 21 1月14日20時32 fund.codeファンドコード
-rwxr-XR-X 1 ZABBIX ZABBIX 119 1月14日夜10時44 fund.dictファンドコードファンド名+
ファンドのスクリーニングシェルの-rwxr-XR-X 1 ZABBIX ZABBIX 909 1月15日11時19分fund_dict2.shネット割合
-rwxr-XR-X 1 ZABBIX ZABBIX 801 1月15日9時56分fund_dict.sh正味資金スクリーニングシェル
drwxr-XR-X 2 ZABBIX ZABBIX 4096 1月15日11:50 fund_logログディレクトリ
-rwxr-XR-X 1 ZABBIX ZABBIX 1713年1月15日夜02時20分fund.py爬虫
ネット今日と昨日のスクリーニング-rwxr-XR-X 1 ZABBIX ZABBIX 1211 1月15日10:13 fund.sh

fund.code

[ルート@メールスクリプト]#猫のfund.code 
001071
003986
007244

fund.dict

[ルート@メールスクリプト]#猫のfund.dict 
001071、華インターネットメディアミックス
500 003 986、シェンワンリン文字証券Aは、エンハンスメント好ましいです
007 244、旬のコアは、混合Cをコンピテンシー

fund_dict2.sh

fund_dict.shとfund_dict2.sh基本的に同じですが、バックは同じスクリーニングパラメータはありませんが、自動的にパラメータを取得するときに、今日の純資産価値が更新された時間、今日と(今日の標準によって)昨日の時間を取得します空のパラメータは、彼が見つかったら、更新、昨日勝つかかった今回は、トリガーに上記のモニタにプッシュされますので、ファンドのネット今日は、更新されていないに関係している、ヌルGETの場合、この時間は、判断を入力しますその後、上下にあるか、今日の資金を伝えるために自分自身を思い出させます。

[ルート@メールスクリプト]#猫のfund_dict2.sh 
#************************************************* ************************
#>ファイル名:fund_dict.sh
#>著者:chenglee
#>メイン:[email protected]
#>ブログ:http://www.cnblogs.com/chenglee/
火2020年1月14日午前10時48分10秒PM CST:#>時間に作成
#************************************************* ************************
#!/ binに/ bashの

今日= `日付+ "%Y-%M-%D"`
昨日= `日は-d "昨日の$ {今日}" +%Y-%M-%D '
fund_code = $ 1

CD / ZABBIX / ZABBIXエージェント/スクリプト
todaydata = `猫fund_log /ファンド_ $ {fund_code} .logに| grepの "$ {今日}" | SEDさん/ // G '| awkの-F '|' '{$ 5印刷} `
[-z "$ todaydata"]であれば、その後、
    yesterdaydata = `猫fund_log /ファンド_ $ {fund_code} .logに| grepの "$ {昨日}" | SEDさん/ // G '| awkの-F '|' '{$ 5印刷} `
    エコー$ yesterdaydata
    #echo $ yesterdaydata> fund_log / $ {fund_code} .profit
そうしないと
    エコー$ todaydata
    #echo $ todaydata> fund_log / $ {fund_code} .profit
されます

fund_dict.sh

#************************************************* ************************
#>ファイル名:fund_dict.sh
#>著者:chenglee
#>メイン:[email protected]
#>ブログ:http://www.cnblogs.com/chenglee/
火2020年1月14日午前10時48分10秒PM CST:#>時間に作成
#************************************************* ************************
#!/ binに/ bashの

今日= `日付+ "%Y-%M-%D"`
昨日= `日は-d "昨日の$ {今日}" +%Y-%M-%D '
fund_code = $ 1

CD / ZABBIX / ZABBIXエージェント/スクリプト
todaydata = `猫fund_log /ファンド_ $ {fund_code} .logに| grepの "$ {今日}" | SEDさん/ // G '| awkの-F '|' '{$ 4印刷} `
[-z "$ todaydata"]であれば、その後、
    yesterdaydata = `猫fund_log /ファンド_ $ {fund_code} .logに| grepの "$ {昨日}" | SEDさん/ // G '| awkの-F '|' '{$ 4印刷} `
    エコー$ yesterdaydata
そうしないと
    エコー$ todaydata
されます

fund_log

合計12
-rw-R  -  r--の1 ZABBIX ZABBIX 546 1月15日夜02時30 fund_001071.log
-rw-R  -  r--の1 ZABBIX ZABBIX 546月15日14:30 fund_003986.log
-rw-R  -  r--の1 ZABBIX ZABBIX 546 1月15日夜02時30 fund_007244.log

fund.py

爬虫類は、勝利に関連する日付に基づいて基金に関連するネットのパラメータを実現します

#!は/ usr / binに/ envをパイソン
「」」
#著者:chenglee
#作成日時:火2020年1月14日午前8時16分54秒PM CST
#ファイル名:ji.py
#概要:
「」」
# -  *  - コーディング:UTF-8  -  *  - 
#URLます。http:?//fund.eastmoney.com/f10/F10DataApi.aspxタイプ= 2020年1月1日= lsjz&コード= 007244&SDATE&EDATE = 2020年1月15日&20 =当り

インポート要求
BS4のインポートからBeautifulSoup
prettytableインポートから*


デフGET_URL(URL、のparams =なし、プロキシ=なし):
    RSP = requests.get(URL、のparams =のparams、プロキシ=プロキシ)
    rsp.raise_for_status()
    リターンrsp.text


DEF get_fund_data(コード、開始= ''、末端= ''):
    レコード= { 'コード':コード}
    URL = 'http://fund.eastmoney.com/f10/F10DataApi.aspx'
    paramsは= { 'タイプ': 'lsjz'、 'コード':コード、 'ページ':1、 'あたり':65535、 'SDATE':スタート、 'EDATE' 末端}
    HTML = GET_URL(URL、のparams)
    スープ= BeautifulSoup(HTML、 'html.parser')
    記録= []
    タブ= soup.findAll( 'TBODY')[0]
    tab.findAllでTR( 'TR')のために:
        もしtr.findAll( 'TD')とlen((tr.findAll( 'TD')))== 7:
            レコード[ '日'] = STR(tr.select( 'TD:n番目の型(1)'。)[0] .getText()ストリップ())
            レコード[ 'NetAssetValue'] = STR(tr.select( 'TD:n番目の型(2)'。)[0] .getText()ストリップ())
            レコード[ 'ChangePercent'] = STR(tr.select( 'TD:n番目の型(4)'。)[0] .getText()ストリップ())
            records.append(record.copy())
    リターンレコード


デフデモ(コード、開始、終了):
    表= PrettyTable()
    table.field_names = [ 'コード'、 '日付'、 'NAV'、 '変更']
    table.align [ '変更'] = 'R'
    レコード= get_fund_data(コード、開始、終了)
    レコード内のレコードの:
        table.add_row([レコードの[ 'コード']、レコードの[ '日付']、レコードの[ 'NetAssetValue']、レコードの[ 'ChangePercent']])
    戻りテーブル


__name__ == "__main__" の場合:
    印刷デモ( '001071'、 '2020年1月1日'、 '2020年1月15日')

データを下に登ると、それがそうであるかのようなものです

fund.sh

濾過は、爬虫類は、そのコースを実行するのcrontabに投げ込まれ、私の定義は、5分ごとに取得することである、取得するために呼び出します。

#************************************************* ************************
#>ファイル名:fund.sh
#>著者:chenglee
#>メイン:[email protected]
#>ブログ:http://www.cnblogs.com/chenglee/
#>作成日時:火2020年1月14日午前8時27分06秒PM CST
#************************************************* ************************
#!/ binに/ bashの
今日= `日付+ "%Y-%M-%D"`
1日目= `猫fund.py | grepを印刷| | -f1 | '(' カット-d -f2は、 ')' カットが-d sedの "S | '||グラム" | SEDさん/ // G '| awkの-Fは '' '`' {$ 2}印刷します
2日目= `猫fund.py | grepを印刷| | -f1 | '(' カット-d -f2は、 ')' カットが-d sedの "S | '||グラム" | SEDさん/ // G '| awkの-Fは '' '`' {$ 3}印刷します

実行機能(){
    幹部2 < "fund.code"
    しばらく読み取りLINE2 <&2
    行う
        fund_code = `猫fund.py | grepを印刷| | -f1 | '(' カット-d -f2は、 ')' カットが-d sedの "S | '||グラム" | SEDさん/ // G '| awkの-Fは '' '`' {$ 1}印刷します
        fund.py -i "| $ {fund_code} | | $ {} LINE2グラムS" をセッド
        パイソンfund.py> fund_log /ファンド_ $ {} .logにLINE2
    行われ
}
関数main(){
    [$ 2日目= $今日!]であれば、その後、
        fund.py -i "| $ {2日目} | | $ {今日}グラムS" をセッド
    されます
    [もし!-d "fund_log"];その後、
        MKDIR fund_log
    されます
    ランニング
}
睡眠関数(){
    CD / ZABBIX / ZABBIXエージェント/スクリプト
    メイン
}
睡眠

操作のほとんどカジュアル

1.認証にZABBIX

注:それを動作させるためにしたい、自動化操作にZABBIX投げるための時間は、あなたがそれに賃金を与えていないので、それはあなたと一緒に大笑いその後、あなたはそれまたはストライキを信じる「アクセス許可が拒否されました」。

chmodコマンド-R ZABBIX:ZABBIX / ZABBIX / ZABBIXエージェント/スクリプト/
chmodの+ X /zabbix/zabbix-agent/script/*.sh
chmodの+ X /zabbix/zabbix-agent/script/*.py

configure 2. ZABBIX-agentd

注:これらの値は、上記の監視に押されるようにしている、プラスファンドの後ろにあなたがそう簡単に、コードを監視することです。

3.時限爆弾

注:5分ごとに一度登るために、最新のデータの分析を下にクロールし、定期的な爬虫類を実行します。

* / 5 * * * * SHの/zabbix/zabbix-agent/script/fund.sh

それは何が起こっているのか実行した後、この方法のように、ファンドは、関連するログディレクトリ内の関連するデータのログを生成します

注:上記、大丈夫、ZABBIX設定されている、と述べたので、今それが設定されたアラームとなっています。

ZABBIX大シチュー鍋

注:これは、ZABBIXサーバで設定されます。

アラームモードデュアルプッシュ。

1.爪

1.1ネイルアラームシェル

注:爪は、いくつかのpythonモジュールが要求装備されていないあなたの爪ロボットアドレスを認可し、変更することを忘れないでください、ピップインストール要求がうまくロードされ、関連するディレクトリにファイルを投げ、バックグラウンドのプッシュを設定する必要があります。

[608135bcf753 alertscripts @ルート]#PWD
/data/zabbix-4.2.5/share/zabbix/alertscripts
[root@608135bcf753 alertscripts]# cat dingding.py 
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url="https://oapi.dingtalk.com/robot/send?access_token=8b8c40dfe9c7e98bc575dd963aac459f880"
#需要更换你机器人的地址
def msg(text):
    json_text= {
     "msgtype": "text",
     "text": {
         "content": text
     },
     "at": {
         "atMobiles": [
             "186..." #需要@群里谁
         ],
         "isAtAll": False #是否全部@,True为是,False为否
     }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
    text = sys.argv[1]
    msg(text)

1.2告警媒介类型

1.3动作

 警示度

 操作

消息传送指定

 

 1.4 用户

报警媒介

2. 邮件

注:邮件不用配置后台哈,邮件这块我用的是zoho域名邮箱, zoho是什么?呃,水平有限不知道怎么解释。登登登....百度一下,你就知道。

基本上操作与钉钉无异。

触发器:{fund:funds_001071.diff()}=1

当发现当前值与上一个值有差异时(有差异代表已更新), 触发。

3.成果

页面动态展示

当发现更新,钉钉提醒

当发现更新,邮件提醒

おすすめ

転載: www.cnblogs.com/chenglee/p/12196729.html