
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдореИрдВ рдЖрдкрдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛрд▓рдВрдЧ рдкрд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рд▓рд┐рдЦрдирд╛ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдпрд╣ рджрд┐рдЦрд╛рдПрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рднреМрдЧреЛрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрддрд╛ рд╣реИред
0. рдЕрд╕реНрд╡реАрдХрд░рдг
рдореИрдВ рддреБрд░рдВрдд, рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд░реВрдкрд░реЗрдЦрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рджрд╛рдпрд░реЗ рдФрд░ рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдХреЛрдИ рд╕рд╡рд╛рд▓ рди рд╣реЛ:
- рд╣рд╛рдВ, рдпрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рджреГрд╢реНрдп рдирд╣реАрдВ рд╣реИред рдпрд╣ рджреВрд░рд╕реНрде рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рджреГрд╢реНрдп рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдЙрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреВрд░рд╕реНрде рд╕рд░реНрд╡рд░ рдиреЗ рдХрдиреЗрдХреНрд╢рди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрд╕ рдорд╢реАрди рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдирдХреНрд╢реЗ рдкрд░ рд╕рдм рдХреБрдЫ рджрд┐рдЦрд╛рдПрдЧрд╛ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╡рд╛рд▓рд╛ рд╕рд░реНрд╡рд░, рдЬрд╣рд╛рдВ рдЕрдм рддрдХ рдЖрдкрдХреЗ рдорд╢реАрди рдкрд░ рдЕрдкрдбреЗрдЯ рдбрд╛рдЙрдирд▓реЛрдб рд╣реЛ рд░рд╣реЗ рд╣реИрдВред
- рд╣рд╛рдВ, рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдЕрдЬреНрдЮрд╛рдд рдЙрдкрдХрд░рдг рд╣реИрдВ рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрдИрдкреА рдХреЛ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА рднреА рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд╕рдЯреАрдХ рдЬреАрдкреАрдПрд╕ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрдирдХреЗ рднреВрдЧреЛрд▓ рдХрд╛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рд╣реИред
- whois рдЖрдИрдкреА рдкрддреЗ рдХреЗ рджреЗрд╢ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдореИрдВ Grafan рдХреЗ рд▓рд┐рдП рдкреНрд▓рдЧрдЗрди рдХреА рд╕реАрдорд╛ рд╕реЗ рдЬреБрдбрд╝рд╛ рдерд╛, рдЬреЛ рдХреЗрд╡рд▓ рджреЗрд╢реЛрдВ рдХреЛ рд╣реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╣рд░реЛрдВ рдХреЛ рдирд╣реАрдВред
1. рд╣рдо "рдмреИрдХ-рдПрдВрдб" рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рдирд┐рд░реНрдпрд╛рддрдХ
рддреЛ, рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рдПрдХ рдирд┐рд░реНрдпрд╛рддрдХ рд▓рд┐рдЦрдирд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдПрдХрддреНрд░ рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рднреЗрдЬ рджреЗрдЧрд╛ред рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ: рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рдкрд╛рд╕ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд┐рд░реНрдпрд╛рддрдХреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЧреЛ рдХреЛ рдЪреБрдирд╛, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ "рдЕрдзрд┐рдХ рджреЗрд╢реА" рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдЙрд╕ рдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ), рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрд╡рдпрдВ рдореИрдВ рдЕрдкрдиреЗ DevOps рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдЧреАрдд, рдЪрд▓реЛ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛред рдЖрдЗрдП "рдмреЙрдЯрдо-рдЕрдк" рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ: рдкрд╣рд▓рд╛, рдЖрдИрдкреА рджреНрд╡рд╛рд░рд╛ рджреЗрд╢ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдФрд░ рджреВрд░рд╕реНрде рдЖрдИрдкреА рдкрддреЗ рдХреА рд╕реВрдЪреА, рдФрд░ рдлрд┐рд░ рдпрд╣ рд╕рдм рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рднреЗрдЬрдирд╛ред
1.1ред рд╣рдо рджреЗрд╢ рдХреЛ рдЖрдИрдкреА рдкрддреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
рдЦреИрд░, рдорд╛рдереЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рд╣реИ, рдореИрдВрдиреЗ рджрд╛рд░реНрд╢рдирд┐рдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдмрд╕ freegeoip.net рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдкреАрдЖрдИ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рддрдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЪреБрдХрд╛ рдерд╛, рдФрд░ рдЕрдм рд╡реЗ рдореБрдлреНрдд рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддрд┐ рдорд╛рд╣ 10,000 рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ (рдЬреЛ рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ) )ред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ: рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рд╣реИ http://api.ipstack.com/<IP>?access_key=<API_KEY>
, рдЬреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ country_code
рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдмрд╕ рд╣рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛ рджреЗрдЧрд╛ - рдЬреЛ рдХрд┐ рд╣рдореЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рддреЛ, рдЖрдЗрдП рджреЗрд╢ рдХреЛ рдЖрдИрдкреА рджреНрд╡рд╛рд░рд╛ рдЦреАрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдХреЗрдЬ рд▓рд┐рдЦреЗрдВред
рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдХрд╛рдореЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдЬрдиреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ 'рдЕрдирдкреИрдХреНрдб' рд╣реЛрдЧрд╛ред ... рдФрд░ рдлрд╝рдВрдХреНрд╢рди рд╣реА, рдЬреЛ рд╣рдореЗрдВ рджреЗрд╢ рдХреЛрдб рд▓реМрдЯрд╛рдПрдЧрд╛ред рдкреИрд░рд╛рдореАрдЯрд░ legacy=1
рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдЫрдбрд╝реЗ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд░рдирд╛ рд╣реИ; рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдк рдЙрдирдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдпрд╣рд╛рдВ рд╣рдо github.com/shirou/gopsutil/net
рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ ESTABLISHED
рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдХрдиреЗрдХреНрд╢рди рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВрдЧреЗ, рд╕реНрдерд╛рдиреАрдп IP рдкрддреЗ рдФрд░ рдкрддреЛрдВ рдХреЛ рдПрдХ рдХрд╕реНрдЯрдо рдмреНрд▓реИрдХ рд▓рд┐рд╕реНрдЯ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)
рдлрд╝рдВрдХреНрд╢рди рд░рд┐рдЯрд░реНрдирд┐рдВрдЧ рдореИрдк рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ [рд╕реНрдЯреНрд░рд┐рдВрдЧ] int: рджреЗрд╢ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ред 1.3ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рд╕рдм рдХреБрдЫ рднреЗрдЬреЗрдВ
рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рд╡рд╣ рдЦреБрдж рд╕рдм рдХреБрдЫ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдХреЗрд╡рд▓ рдкреЛрд░реНрдЯ рдХреЛ рд╕реБрдиреЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдПрдХрддреНрд░рд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреЗрдВрдЧреЗред
github.com/prometheus/client_golang/prometheus
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рдХрд╛рд░ Gauge
рдХрд╛ рдПрдХ рдореАрдЯреНрд░рд┐рдХ рдмрдирд╛рдПрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк Counter
рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╕ рддрдм рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп rate
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рд╢рд╛рдпрдж рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдЗрд╕ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рд▓рд┐рдЦ рд░рд╣рд╛ рдерд╛ (рдЫрд╣ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ) рдореИрдВ рд╕рд┐рд░реНрдл рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдФрд░ Gauge
рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдерд╛:
location = prometheus.NewGaugeVec( prometheus.GaugeOpts{ Name: "job_location", Help: "Location connections number", }, []string{"location"}, )
рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реИрдВ:
for code, number := range c.ConnectionsByCode { location.With(prometheus.Labels{"location": code}).Set(float64(number)) }
рд╣рдо рдПрдХ рдЕрд▓рдЧ рдЧреЛрд░реЛрдЗрди рдореЗрдВ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдм рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдПрдХ рдореЗрдВ рдкреЛрд░реНрдЯ рдХреЛ рдмрд╛рдВрдзрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд▓реЗрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВ:
prometheus.MustRegister(location) http.Handle("/metrics", prometheus.Handler()) log.Fatal(http.ListenAndServe(*addr, nil))
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рднреА рдХреЛрдб GitHub рдкрд░ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдпрд╣рд╛рдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЙрдкреА рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ред
2. "рдлреНрд░рдВрдЯ-рдПрдВрдб": рдЧреНрд░рд╛рдлрд╛рдирд╛
рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рдмрддрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
- job_name: 'GeoIPExporter' scrape_interval: 10s static_configs: - targets: ['127.0.0.1:9300']
(рдпрд╛ рд╕реЗрд╡рд╛ рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕)ред рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рдПрдХ HUP
рд╕рдВрдХреЗрдд рднреЗрдЬрдХрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
$ pgrep "^prometheus$" | xargs -i kill -HUP {}
рд╣рдо рдЗрд╕реЗ рдпреВрдЖрдИ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ:

рдареАрдХ рд╣реИ, рдЕрдм рдЧреНрд░рд╛рдлрди рдХреА рдмрд╛рд░реА рд╣реИред рд╣рдо grafana-worldmap-panel
рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
$ grafana-cli plugins install grafana-worldmap-panel
рдЗрд╕рдХреЗ рдмрд╛рдж, рдпреВрдЖрдИ рдореЗрдВ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВ рдФрд░ рдРрдб рдкреИрдирд▓ -> рд╡рд░реНрд▓реНрдбрдореИрдк рдкреИрдирд▓ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЯреИрдм рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рджрд░реНрдЬ рдХрд░реЗрдВ:
sum(job_location) by (location)
рдФрд░ рдХрд┐рдВрд╡рджрдВрддреА рдкреНрд░рд╛рд░реВрдк рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: {{location}}
ред рд╕рдм рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЕрдЧрд▓рд╛, рд╡рд░реНрд▓реНрдбрдореИрдк рдЯреИрдм рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

рдФрд░ рд╡рд╣ рд╕рдм рд╣реИ! рд╣рдорд╛рд░реЗ рдирдХреНрд╢реЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред
рдРрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЖрдк рдЧреНрд░рд╛рдлрди рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рдирдХреНрд╢рд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реИрдВред
рдпрд╣ рдХрд░реЗрдВ
рдмреЗрд╢рдХ, рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рд╕реНрдерд╛рдиреАрдп рд╕рдмрдиреЗрдЯ рдХреЗ рдкрддреЗ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред рд╡реИрд╕реЗ, рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдФрд░ рдЗрд╕ рдирд┐рд░реНрдпрд╛рддрдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ - рдЧрд┐рдЯрд╣рдм рдкрд░ рднрдВрдбрд╛рд░ рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рд▓рд┐рдВрдХ