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).