営業日は通常、コーヒーとドメイン成長値の快適なビューから始まりました。 もちろん、このようなメトリックは、会社の成功も、大文字化も、会社がホストする顧客のタイプも示しません。 しかし、それにもかかわらず、間接的に会社の成長または劣化のダイナミクスを評価することは可能です-NSサーバー上のドメインの数が増えているが、落ちていない場合、これは良いことです。 実践が示しているように、これは何らかの形で、市場の状況を反映しています。
firststat.ruの最初のバージョン
考え直すことなく、彼らはドメインのNSサーバーの値を収集し、統計を作成するテーブルを備えたスクリプトを投げました。 すべてのサーバー上のすべてのドメインを要約し、それらを単にサーバーの数で割ったため、テーブルの関連性は最良ではありませんでした。 しかし、これにより、格付けを引き上げる際に企業関係者がいることを止められませんでした=)。 この実装では、興味深いことは何もありませんでした。ある夜、それについて話すのは怠inでした。
firststat.ruの2番目のバージョン
約1年前、 pavelodintsovは、自律システムによるドメインの分布に関する興味深い統計を送信しました。
また、これらの統計を収集するコードへのリンク。 コレクション自体は、さまざまなbash、perl、sqliteスクリプトの起動として設計されました。 同時に、アルゴリズムは非常にシンプルで興味深いものでした。原則として、才能のあるスペシャリストからのPavelによるものでした。
- ゾーンru、su、rfのドメインのリストがレジストラからリクエストされました
- ドメインごとにAレコードがリクエストされました
- BGPのフルビューを受け取り、ASにネットワークコンプライアンスを適用しました
- これらのデータに基づいて、自律アドレスによるドメインの分布に関する統計が収集されました
アルゴリズムが改善されました-Pythonで完全に書き直され、履歴テーブルが導入され、DNSからのすべてのレコードのコレクションとストレージが追加されました。 また、 firststat.ruデータを表示する簡単なラッパーを作成しました。外部から時間と関心があれば、間違いなく改善できます。
統計収集
元のプロジェクト: https : //github.com/pavel-odintsov/ru_open_statistics
Pythonで書き直されたフォーク: https : //github.com/AlexeyManikin/domain_statistic
動作するにはPythonモジュールが必要です。
- Mysqldb
- dnspython
- サブネツリー
- psutil> = 2.2
また、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番号とその説明の対応表、国
- id-AS番号
- 説明-説明
- 国-国
domain : ドメインの現在の状態が格納されているテーブル。ほとんどのフィールドは名前から明らかだと思う
- domain_name-FQDN
- 登録者-ドメインの登録者
- tld-クイック検索のゾーン
- register_date-登録日
- register_date_end-登録終了日
- free_date-ドメインのリリース日
- 委任-ドメインは委任されているかどうか
- a1 ... a4-ドメインレコード
- ns1 ... ns4-NSドメインレコード、正確にはDNSによって指定されたもの
- mx1 ... mx4-MXドメインレコード
- txt-TXTドメインレコード
- asn1 ... asn4-対応するAレコードのAS番号
- aaaa1 ... aaaa4-AAAA(ipv6)ドメインレコード
- cname-CNAMEドメインレコード
domain_history :ドメイン内のすべてのフィールドに加えて、ドメインテーブル内のレコードに対する変更の履歴が含まれます。フィールドもあります。
- domain_id-ドメイン内のエントリへのリンク
- date_start-この情報が関連した日付
- date_end-情報が実際でなくなった日付
以下の表には、集約された情報が含まれています。
- domain_count_statistic-日ごとの異なるゾーンのドメインの数
- as_count_statistic-日ごとの AS上のドメインの数
- mx_count_statistic -MXを使用しているドメインの日別数
- ns_count_statistic-日ごとの NSサーバー上のドメインの数
- registrant_count_statistic-レジストラの日ごとの統計
- a_count_statistic - 1日あたり 1つのIPのドメイン数に関する統計
- cname_count_statistic -CNAMEによる毎日の統計
すべての統計は、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-サイトの改訂
私たちは改善を願っています。 誰かがあなたのアプリケーションのためにデータベースにアクセスする必要がある場合-書き込み、開いて