Saya telah menginstal Graphite via Puppet ( https://forge.puppetlabs.com/dwerder/graphite ) dengan nginx dan PostgresSQL. Ketika saya mengirim data secara manual, ia membuat metrik tetapi semua titik datanya adalah "Tidak Ada" (alias nol). Ini terjadi juga jika saya menjalankan example-client.py yang dikirim dengan Graphite.
echo "jakub.test 42 $(date +%s)" | nc 0.0.0.0 2003 # Carbon listens at 2003
# A minute or so later:
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | head -n1
Sun May 4 12:19:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | tail -n1
Mon May 5 12:09:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | grep -v None | wc -l
0
Dan:
$ python /opt/graphite/examples/example-client.py
# Wait until it sends two batches of data ...
$ whisper-fetch.py /opt/graphite/storage/whisper/system/loadavg_15min.wsp | grep -v None | wc -l
0
Menurut ngrep, ini adalah data yang tiba ke port [dari upaya selanjutnya] (baris 3):
####
T 127.0.0.1:34696 -> 127.0.0.1:2003 [AP]
jakub.test 45 1399362193.
####^Cexit
23 received, 0 dropped
Ini adalah bagian yang relevan dari /opt/graphite/conf/storage-schemas.conf
:
[default]
pattern = .*
retentions = 1s:30m,1m:1d,5m:2y
Apakah ada yang salah? Metrik dan data Carbon ditampilkan di UI. Terima kasih!
Lingkungan: Ubuntu 13.10 Saucy, graphite 0.9.12 (via pip).
PS: Saya telah menulis tentang upaya pemecahan masalah saya di sini - Graphite Shows Metrics But No Data - Troubleshooting
PEMBARUAN :
- Poin data dalam file bisikan hanya di-recored setiap 1m mnt bahkan jika kebijakan retensi menentukan presisi yang lebih tinggi seperti "1s" atau "10s".
- Penanganan masalah untuk data yang diabaikan: Gunakan skema agregasi dengan
xFilesFactor = 0.1
(alih-alih 0,5) atau atur presisi terendah ke 1m alih-alih <angka antara 1-49> dtk. - lihat komentar di bawah jawaban yang diterima atau jawaban Graphite. Menurut dokumen : "xFilesFactor
harus berupa angka titik mengambang antara 0 dan 1, dan menentukan fraksi apa dari slot tingkat retensi sebelumnya yang harus memiliki nilai bukan nol agar dapat digabungkan menjadi nilai bukan nol. Standarnya adalah 0,5. " Jadi tampaknya tanpa mempedulikan ketelitian 1s, data akan dikumpulkan menjadi 1 menit dan akhirnya menjadi Tidak ada karena kurang dari 50% dari nilai dalam periode menit adalah Non-Tidak ada.
LARUTAN
Jadi @jlawrie membawa saya ke solusinya. Ternyata data tersebut sebenarnya ada tetapi tidak teragregasi, alasannya ganda:
- Baik UI dan whisper-fetch menunjukkan data yang dikumpulkan dengan presisi tertinggi yang mencakup seluruh periode kueri, yang standarnya menjadi 24 jam. Yaitu apa pun dengan retensi <1d tidak akan pernah ditampilkan di UI atau diambil kecuali Anda memilih periode yang lebih pendek. Karena periode retensi saya untuk 1s adalah 30 menit, saya harus memilih periode <= 30 menit terakhir untuk benar-benar melihat data mentah pada presisi tertinggi yang dikumpulkan.
- Ketika menggabungkan data (dari 1 hingga 1 menit dalam kasus saya), Graphite secara default mengharuskan 50% (xFilesFactor = 0,5) titik data dalam periode memiliki nilai. Jika tidak, itu akan mengabaikan nilai yang ada dan menggabungkannya ke Tidak ada. Jadi, dalam kasus saya, saya harus mengirim data setidaknya 30 kali dalam satu menit (30 adalah 50% dari 60dt = 1 mnt) agar mereka muncul dalam nilai agregat 1-mnt. Tetapi aplikasi saya hanya mengirim data setiap 10 jadi saya hanya memiliki 6 dari kemungkinan 60 nilai.
=> solusinya adalah mengubah presisi pertama dari 1s menjadi 10s dan ingat untuk memilih periode yang lebih pendek ketika saya ingin melihat data mentah (atau memperpanjang penyimpanannya menjadi 24 jam untuk menunjukkannya secara default).
sumber
Jawaban:
Saya mengalami masalah yang sama menggunakan modul boneka yang sama. Saya tidak yakin mengapa, tetapi mengubah kebijakan penyimpanan default tampaknya untuk memperbaikinya, misalnya
sumber
'1m:1d,5m:2y
bekerja (data recored),10s:30m,1m:1d,5m:2y
tidak. Sebenarnya, dari file .wsp tampaknya granularity <1m diabaikan sejak cap waktu untuk 10-an: ... konfigurasi masih dalam interval 1 menit - "08:17:00, 08:18:00, dll."xFilesFactor
, (default) yang berlaku di sini adalah rata-rata danxFilesFactor=0.5
(lihat/opt/graphite/conf/storage-aggregation.conf
). Ketika saya mengubah kesum
dan0.1
dengan mengubah nama, data akan disimpan (meskipun poinnya masih di 1m freq):echo -e "jakub.test.10s30m+1m1d+5m2y.count 42 $(date +%s)" | nc 0.0.0.0 2003
xFilesFactor = 0.1
, gt. Metode tidak masalah (setidaknya semua rata-rata, terakhir, jumlah pekerjaan).Ada banyak cara Graphite akan kehilangan data, itulah sebabnya saya benar-benar mencoba untuk tidak menggunakannya. Biarkan saya mulai dengan yang sederhana - coba sambungkan aplikasi Anda, tunggu sebentar (secara harfiah satu detik) dan kemudian tampilkan data timestamped. Saya telah menemukan dalam banyak keadaan ini akan memperbaiki masalah itu. Hal lain yang harus Anda coba adalah mengirimkan data pada frekuensi yang jauh lebih tinggi daripada frekuensi di mana grafit mencatat data. Saya akan membahasnya sedikit lagi. Kesalahan lain yang sering terjadi adalah menggunakan utilitas whisper-resize.py, yang benar-benar tidak berhasil untuk saya. Jika data Anda belum penting, hapus saja file bisikan dan biarkan dibuat dengan pengaturan retensi baru.
File penyimpanan Graphite, file bisikan, alih-alih menyimpan data sebagai titik dengan nilai dan waktu (seperti yang Anda berikan pada program) sebenarnya menyimpannya sebagai serangkaian slot tempat nilai disimpan. Program kemudian mencoba untuk mencari tahu slot apa yang sesuai dengan periode waktu menggunakan file data retensi. Jika mendapat data yang tidak persis pas di slot, saya pikirapa yang terjadi adalah ia menggunakan rata-rata, min, atau maks tergantung pada file lain di direktori yang sama dengan file retensi. Saya menemukan bahwa cara terbaik untuk menjaga agar tidak mengacaukan segalanya adalah dengan mengirimkan data pada frekuensi yang jauh lebih tinggi daripada frekuensi di mana grafit menyimpan data. Sejujurnya menjadi super rumit - tidak hanya ada periode retensi untuk grafit, dan rata-rata algoritma yang mengisi poin (saya pikir), tetapi nilai-nilai ini juga JUGA diterapkan pada file bisikan. Hal-hal yang sangat aneh akan terjadi ketika ini tidak cocok, jadi sampai konfigurasi Anda berfungsi, saya sarankan menghapus file bisikan Anda berulang kali, dan membiarkan grafit membuatnya kembali.
Program ini benar-benar mengejutkan saya karena bertindak cukup buggy, jadi jika Anda menemukan sesuatu seperti ini jangan menganggap itu salah Anda.
sumber