Isi- Latar belakang
- Koleksi statistik
- Tampilan statistik
- Visualisasi dan statistik
- Pindai
- Kesimpulan
Latar belakang
Hai habr, telegram sekarang berada di puncak popularitas, semua skandal, intrik, kunci berputar di sekelilingnya, sehubungan dengan mana telegram meluncurkan versi proksi sendiri yang disebut MTProto Proxy, yang dirancang untuk membantu mem-bypass kunci. Namun, layanan pemantauan yang disediakan oleh telegram MTProto Proxy tidak memungkinkan mengamati statistik secara real time dan mengumpulkannya untuk memantau perubahannya, oleh karena itu kami akan menyelesaikan masalah sendiri.
Koleksi statistik
Halaman Proxy MTProto resmi di
Docker Hub menyatakan bahwa kita dapat menggunakan perintah
docker exec mtproto-proxy curl http://localhost:2398/stats
untuk mendapatkan statistik langsung dari MTProto Proxy yang ada dalam wadah, sehingga kode kita akan terlihat seperti ini.
package main import ( "io/ioutil" "net/http" "strings" "time" ) type User struct { Num string } var Users User func CurrenUsers() (err error) {
total_special_connections
diindikasikan pada
Docker Hub yang sama dengan jumlah koneksi klien yang masuk
Tampilan statistik
Selanjutnya, kita perlu menampilkan jumlah pengguna saat ini dalam bentuk yang sederhana dan nyaman, kita akan menampilkannya ke browser.
package main import ( "html/template" "io/ioutil" "net/http" "strings" "time" ) type User struct { Num string } type HTML struct { IndexPage string } var Users User var IndexTemplate = HTML{ IndexPage: `<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous"> <title>Stats</title> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> </head> <body> <div class="container-fluid"> <div class="row justify-content-center text-center" style="margin-top: 20%"> <h1>Count of current users of MTProto Proxy: {{.Num}}</h1> </div> </div> </body> </html>`, } func CurrenUsers() (err error) {
apa itu initinit bagaimanapun akan dipanggil sebelum memanggil utama
Sekarang, pergi ke alamat IP Proxy MTProto kami, kami dapat melihat jumlah klien saat ini.

Visualisasi dan statistik
Ada banyak pilihan untuk memvisualisasikan dan memelihara statistik
Datadog ,
Zabbix ,
Grafana ,
Graphite . Saya akan menggunakan Datadog. Menggunakan perintah
go get -u github.com/DataDog/datadog-go/statsd
mengimpor perpustakaan
statsd
dan menggunakannya dalam kode.
package main import ( "html/template" "io/ioutil" "net/http" "os" "strconv" "strings" "time" "github.com/DataDog/datadog-go/statsd" ) var ( datadogIP = os.Getenv("DDGIP") tagName = os.Getenv("TGN") t, _ = strconv.Atoi(os.Getenv("TIMEOUT")) timeout = time.Duration(t) * time.Second ) type User struct { Num string } type HTML struct { IndexPage string } var Users User var IndexTemplate = HTML{ IndexPage: `<!DOCTYPE html> <html> <head> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" integrity="sha384-9gVQ4dYFwwWSjIDZnLEWnxCjeSWFphJiwGPXr1jddIhOegiu1FwO5qRGvFXOdJZ4" crossorigin="anonymous"> <title>Stats</title> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> </head> <body> <div class="container-fluid"> <div class="row justify-content-center text-center" style="margin-top: 20%"> <h1>Count of current users of MTProto Proxy: {{.Num}}</h1> </div> </div> </body> </html>`, } func (u User) convert() int64 { num, _ := strconv.Atoi(u.Num) return int64(num) } func CurrenUsers() (err error) {
Masih mengumpulkan semua dalam gambar buruh pelabuhan
FROM telegrammessenger/proxy COPY mtproto_proxy_stat . RUN echo "$(tail -n +2 run.sh)" > run.sh && echo '#!/bin/bash\n./mtproto_proxy_stat & disown' | cat - run.sh > temp && mv temp run.sh CMD [ "/bin/sh", "-c", "/bin/bash /run.sh"]
Pindai
Pertama, kita perlu memulai wadah dengan agen Datadog
docker run -d --name dd-agent -v /var/run/docker.sock:/var/run/docker.sock:ro -v /proc/:/host/proc/:ro -v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro -e DD_DOGSTATSD_NON_LOCAL_TRAFFIC=true -e DD_API_KEY=_ datadog/agent:latest
PENTING sehingga kami dapat mengirim agen data kami, Anda harus menetapkan
true
untuk variabel lingkungan
DD_DOGSTATSD_NON_LOCAL_TRAFFIC
Selanjutnya, menggunakan
docker inspect dd-agent
kita perlu melihat IP wadah untuk mengirim data ke sana

dan mulai Proxy MTProto kami dengan menghubungkannya dengan jembatan ke wadah agen
docker run -d -p 443:443 -p 80:80 -e WORKERS=16 -e DDGIP=172.17.0.2 -e TGN=mtproto:main --link=dd-agent --name=mtproto --restart=always -v proxy-config:/data trigun117/mtproto_proxy_stat
Dan dalam beberapa menit kita sudah dapat membuat grafik dengan memilih metrik dan sumber yang diinginkan (tag yang ditentukan saat memulai wadah dengan Proxy MTProto)

dan tampilkan statistik kami di atasnya
Contoh hidupKesimpulan
Bagi saya sendiri, saya menemukan alat-alat baru untuk pekerjaan yang mudah dengan data, berkenalan dengan variasi besar mereka dan memilih sesuatu yang sesuai dengan selera saya.
Terima kasih atas perhatian Anda, saya sarankan semua orang membagikan pendapat, komentar, dan saran mereka di komentar.
Repositori Github