AS、IP、NS、MXおよびその他のパラメーターによるドメインの分布の統計

1stat.ruはずっと前に動作を停止しました-率直に言って、私たちにとっては悲劇でした(今では何らかの形で動作しているようです)。



営業日は通常、コーヒーとドメイン成長値の快適なビューから始まりました。 もちろん、このようなメトリックは、会社の成功も、大文字化も、会社がホストする顧客のタイプも示しません。 しかし、それにもかかわらず、間接的に会社の成長または劣化のダイナミクスを評価することは可能です-NSサーバー上のドメインの数が増えているが、落ちていない場合、これは良いことです。 実践が示しているように、これは何らかの形で、市場の状況を反映しています。







firststat.ruの最初のバージョン



考え直すことなく、彼らはドメインのNSサーバーの値を収集し、統計を作成するテーブルを備えたスクリプトを投げました。 すべてのサーバー上のすべてのドメインを要約し、それらを単にサーバーの数で割ったため、テーブルの関連性は最良ではありませんでした。 しかし、これにより、格付けを引き上げる際に企業関係者がいることを止められませんでした=)。 この実装では、興味深いことは何もありませんでした。ある夜、それについて話すのは怠inでした。



firststat.ruの2番目のバージョン



約1年前、 pavelodintsovは、自律システムによるドメインの分布に関する興味深い統計を送信しました。







また、これらの統計を収集するコードへのリンク。 コレクション自体は、さまざまなbash、perl、sqliteスクリプトの起動として設計されました。 同時に、アルゴリズムは非常にシンプルで興味深いものでした。原則として、才能のあるスペシャリストからのPavelによるものでした。







アルゴリズムが改善されました-Pythonで完全に書き直され、履歴テーブルが導入され、DNSからのすべてのレコードのコレクションとストレージが追加されました。 また、 firststat.ruデータを表示する簡単なラッパーを作成しました。外部から時間と関心があれば、間違いなく改善できます。







統計収集



元のプロジェクト: https : //github.com/pavel-odintsov/ru_open_statistics

Pythonで書き直されたフォーク: https : //github.com/AlexeyManikin/domain_statistic



動作するにはPythonモジュールが必要です。

また、MySQLサーバーも必要です。負荷の大部分がかかるため、高速のDNSリゾルバーが非常に望ましいです。 6,000,000+ドメインごとにすべてのレコード(A、AAAA、SOA、TXT、MX、SRV、NS)を要求する必要があります。 最初は、同様のプロジェクトから情報を収集して、結果の正確性を検証しました。



プロジェクトの構造を説明するのは意味がないと思います。コードは理解するのに十分単純です。

update_as_info.py-ASによるデータの更新

update_domain.py-ドメインごとにデータを更新します

update_statistic.py-データベース内の統計を集約します



DB構造



以下は、データを取得するときに役立つ可能性のあるフィールドを持つテーブルです。



as_list :AS番号とその説明の対応表、国



domainドメインの現在の状態が格納されているテーブル。ほとんどのフィールドは名前から明らかだと思う



domain_history :ドメイン内のすべてのフィールドに加えて、ドメインテーブル内のレコードに対する変更の履歴が含まれます。フィールドもあります。



以下の表には、集約された情報が含まれています。



すべての統計は、domainおよびdomain_historyテーブルから選択できますが、クエリは非常に長くなります。 別のテーブルの作成を高速化することにしました。



サーバー負荷



ホスティングの共同設立者として、多くの説得の後、彼らは私にサーバーを割り当てました=)したがって、私は2016年1月から継続的に統計の収集を開始しましたが、再起動後にオンにするのを忘れることがありました。

このすべては、32 Gb RAMを搭載した2 xIntel®Xeon®Server CPU E5-2620 0 @ 2.00GHzで実行されます。

すべてのドメインのデータを収集して統計を集計するには、約11時間かかります。 現在、domain_historyテーブルには41436250レコードが含まれており、データベースの合計サイズは23ギガバイトです。 pdnsストリームと並列プロセッサの数は実験的に選択され、150個のストリームの処理を停止しました。



CPU、LA負荷、およびメモリ消費のグラフを以下に示します。















統計収集スクリプトを実行する





Dockerを実行する最も簡単なオプション。 Dockerとgitをインストールする



sudo apt-get update sudo apt-get install docker.io git
      
      





リポジトリをダウンロード



  cd /home git clone https://github.com/AlexeyManikin/domain_statistic.git
      
      





画像を収集する



  cd domain_statistic/docker docker-compose build
      
      





コンテナを打ち上げる



  docker-compoces up -d
      
      







ベースへのアクセス



興味がある場合は、データベースのコピーを作成し、ReadOnlyモードでデータベースへのアクセスを開いて、プレイできます(制限は300接続です)。 habraeffectがある場合-それは愚かです=)。

サーバー:manikin.beget.ru

ポート:3310

ユーザー:amanikin_stat

パスワード:openstatistic

ベース:domain_statistic



コンソールの使用方法がわからない場合は、 PhpMyAdminをインストールしますpma.amanikin.ru



便利になった興味深いSQL:



 #  ,    MX NS- mysql> SELECT count(*) FROM domain WHERE mx1 LIKE 'ns1.%'; +----------+ | count(*) | +----------+ | 1064 | +----------+ 1 row in set (22.05 sec) #  mysql> SELECT count(*) FROM domain WHERE ns1 LIKE 'mx%'; +----------+ | count(*) | +----------+ | 436 | +----------+ 1 row in set (0.01 sec) #  ,   ,        mysql> SELECT count(*) FROM domain WHERE register_date_end <= '2016.05.27'; +----------+ | count(*) | +----------+ | 231235 | +----------+ 1 row in set (27.99 sec) #     ,  LIKE,  ,     FULLTEXT INDEX. #  ,    domain,   6 . ,     habrahabr   mysql> SELECT domain_name FROM domain WHERE MATCH (domain_name) AGAINST ('+habrahabr*' IN BOOLEAN MODE); +---------------+ | domain_name | +---------------+ | habrahabrs.ru | | habrahabr.ru | | habrahabra.ru | | habrahabr.su | | habrahabru.ru | +---------------+ 5 rows in set (2.18 sec) #  ,     LIKE   . #  - ,    ns    beget mysql> SELECT count(*) FROM domain USE INDEX(ns_all_ft) WHERE MATCH (ns1,ns2,ns3,ns4) AGAINST('+beget*' IN BOOLEAN MODE) +----------+ | count(*) | +----------+ | 224715 | +----------+ 1 row in set (2.18 sec) #     ru     tld = 'ru'
      
      





またはhabrahabr.ruドメインのDNSの変更方法



サンプリング結果
 mysql> select * from domain_history where domain_id = '1717034' \G *************************** 1. row *************************** id: 1717033 domain_id: 1717034 date_start: 2015-07-31 date_end: 2015-09-18 domain_name: habrahabr.ru registrant: registrator-ru tld: ru register_date: 2006-04-18 00:00:00 register_date_end: 2016-04-18 00:00:00 free_date: 2016-05-19 00:00:00 delegated: Y a1: 178.248.233.33 a2: NULL a3: NULL a4: NULL ns1: ns1.habradns.net. ns2: ns2.habradns.net. ns3: ns3.habradns.net. ns4: NULL mx1: alt1.aspmx.l.google.com. mx2: alt2.aspmx.l.google.com. mx3: aspmx.l.google.com. mx4: aspmx2.googlemail.com. txt: mailru-verification: 78856df53544c6fd v=spf1 include:spf.habramail.net include:aspmx.googlemail.com ~all asn1: 197068 asn2: NULL asn3: NULL asn4: NULL aaaa1: NULL aaaa2: NULL aaaa3: NULL aaaa4: NULL cname: NULL nserrors: *************************** 2. row *************************** id: 15762868 domain_id: 1717034 date_start: 2015-09-18 date_end: 2016-04-12 domain_name: habrahabr.ru registrant: registrator-ru tld: ru register_date: 2006-04-18 00:00:00 register_date_end: 2016-04-18 00:00:00 free_date: 2016-05-19 00:00:00 delegated: Y a1: 178.248.233.33 a2: NULL a3: NULL a4: NULL ns1: ns1.habradns.net. ns2: ns2.habradns.net. ns3: ns3.habradns.net. ns4: NULL mx1: alt1.aspmx.l.google.com. mx2: alt2.aspmx.l.google.com. mx3: aspmx.l.google.com. mx4: aspmx2.googlemail.com. txt: google-site-verification=kdqnhqj_7jlohipxgkwxizyedshff0askqtc2ovh1em mailru-verification: 78856df53544c6fd v=spf1 include:spf.habramail.net include:aspmx.googlemail.com ~all asn1: 197068 asn2: NULL asn3: NULL asn4: NULL aaaa1: NULL aaaa2: NULL aaaa3: NULL aaaa4: NULL cname: NULL nserrors: *************************** 3. row *************************** id: 35689334 domain_id: 1717034 date_start: 2016-04-12 date_end: 2099-01-01 domain_name: habrahabr.ru registrant: registrator-ru tld: ru register_date: 2006-04-18 00:00:00 register_date_end: 2017-04-18 00:00:00 free_date: 2017-05-19 00:00:00 delegated: Y a1: 178.248.233.33 a2: NULL a3: NULL a4: NULL ns1: ns1.habradns.net. ns2: ns2.habradns.net. ns3: ns3.habradns.net. ns4: NULL mx1: alt1.aspmx.l.google.com. mx2: alt2.aspmx.l.google.com. mx3: aspmx.l.google.com. mx4: aspmx2.googlemail.com. txt: google-site-verification=kdqnhqj_7jlohipxgkwxizyedshff0askqtc2ovh1em mailru-verification: 78856df53544c6fd v=spf1 include:spf.habramail.net include:aspmx.googlemail.com ~all asn1: 197068 asn2: NULL asn3: NULL asn4: NULL aaaa1: NULL aaaa2: NULL aaaa3: NULL aaaa4: NULL cname: NULL nserrors: 3 rows in set (0.04 sec)
      
      







アーカイブ形式の完全なSQLダンプはリンクで言うことができます(サイズ2.2G)



同様のプロジェクト



http://1stat.ru/

http://statonline.ru/

http://stat.nic.ru/

https://myip.ms/view/best_hosting/RUS

その他...



誰かが訪問の統計を使用し、誰かが彼がどのように信じているか不明であり、誰かが多くの広告を持っています。 いずれにせよ、サービスのソースは見つかりませんでした。



参照資料



ウェブサイト-http://firststat.ru

リポジトリ-https://github.com/AlexeyManikin/domain_statistic

クリエイター:

pavelodintsov-アイデアとプロトタイプの作成者

redfenix -Python実装、データ収集とストレージ、サイトプロトタイプ

ilin-サイトの改訂



私たちは改善を願っています。 誰かがあなたのアプリケーションのためにデータベースにアクセスする必要がある場合-書き込み、開いて



All Articles