Grafana: рдЯреЛрдХрди рдпреВрдЖрд░рдПрд▓ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдЬрдире░ 2016  ┬╖  95рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: grafana/grafana

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдЯреЛрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдкрд╛рд╕ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ iframes рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

arebackenauth help wanted prioritimportant-longterm prioritunscheduled typfeature-request

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕рд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб рд╣реИ, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЧреНрд░реЗрдлрд╝рд╛рдирд╛ рддрдХ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдПрдХ рд╕рдорд╛рди рдирд╕ рдореЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╣реЗрд░реЛрдХреВ рдирдП рдЕрд╡рд╢реЗрд╖ рдФрд░ рд╢реВрдиреНрдп-рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред

рдПрдХ url + рдЯреЛрдХрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдкрд░рд╛-рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реИред
рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХреЛрдИ рднреА рд░рд╛рд╢рд┐ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧреАред рдпрд╣реА рдЙрдирдХреА рдЧрд▓рддреА рд╣реИред
рдкреНрд░рд▓реЗрдЦрди / рдпреВрдЖрдИ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреВрд╕рд░реА рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╡реЗ рднреНрд░рдорд┐рдд рд╣реЛрдВрдЧреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИред

рд╕рднреА 95 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдмрд╣реБрдд рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рднреА рдЯреЛрдХрди рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рджреГрд╢реНрдпрдорд╛рди рдбреЗрдЯрд╛ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛

рд╣рд╛рдВ, рд▓реЗрдХрд┐рди рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдХреНрдпрд╛ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдпрд╣ рд╕рд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб рд╣реИ, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЧреНрд░реЗрдлрд╝рд╛рдирд╛ рддрдХ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдПрдХ рд╕рдорд╛рди рдирд╕ рдореЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╣реЗрд░реЛрдХреВ рдирдП рдЕрд╡рд╢реЗрд╖ рдФрд░ рд╢реВрдиреНрдп-рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред

рдПрдХ url + рдЯреЛрдХрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдкрд░рд╛-рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реИред
рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдХреЛрдИ рднреА рд░рд╛рд╢рд┐ рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдирд╣реАрдВ рдмрдЪрд╛рдПрдЧреАред рдпрд╣реА рдЙрдирдХреА рдЧрд▓рддреА рд╣реИред
рдкреНрд░рд▓реЗрдЦрди / рдпреВрдЖрдИ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдмрд┐рдирд╛, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджреВрд╕рд░реА рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдВ рд╡реЗ рднреНрд░рдорд┐рдд рд╣реЛрдВрдЧреЗ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо / рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрд╡рд░реЛрдзрдХ рд╣реИред

Grafana рдореЗрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдкреАрдЖрд░ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрдиреНрдп рд╕рд╛рдорд╛рди рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ

рдЕрдЪреНрдЫрд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг @adamlwgriffiths рд╡рд╣реА рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

рдЕрднреА рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реИрдХ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ

рдЗрд╕рдХреЗ рд▓рд┐рдП +10 !!
рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдореЗрдВ рдирд┐рд╣рд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо + рдкрд╛рд╕рд╡рд░реНрдб + рджрд┐рдирд╛рдВрдХ рдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП x рдирдВрдмрд░ рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж рдЯреЛрдХрди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИ рддреЛ рдореИрдВ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛

рдпрджрд┐ рдЖрдк рдЯреЛрдХрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рддрд╛рд░реАрдЦ рдЬрдорд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╣реИрд╢ рдФрд░ рд╕рдВрдмрджреНрдз рдЦрд╛рддреЗ рдХреЛ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣реИрд╢ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдкрд░реНрдпрд╛рдкреНрдд рдмрдбрд╝реА рдЦреЛрдЬ рд╕реНрдерд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@adamlwgriffiths ,

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдВрдмреА рдЕрд╡рдзрд┐ рдореЗрдВ - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ / org / рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдХреЛ рдПрдХ рдирдИ рдкрджреНрдзрддрд┐ рдХреЗ рдмрдЬрд╛рдп рд╕рдореЗрдХрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдЧрд░ HTML рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднреВрдорд┐рдХрд╛рдПрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд░рджреНрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЗрд╡рд▓ рд╢реБрджреНрдз рдПрдкреАрдЖрдИ рдХреЗ рдмрдЬрд╛рдп рд╡реЗрдм рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

IMO API рдЯреЛрдХрди рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддрд░рд╣ рд╣реА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХ рдордирдорд╛рдирд╛ рдЕрд▓рдЧрд╛рд╡ рд╣реИ рдЬрд┐рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдкреНрд░рддрд┐-рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рд▓рдЧрддрд╛ рд╣реИред рдПрдкреАрдЖрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рд╕рднреА рд▓реЙрдЧрд┐рди рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдореБрдЭреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рд▓рд╛рдЧреВ рд╣реЛ рдЧрдИ рд╣реИ? рдореИрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рд╕реЗ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред

@comcomservices рдЯреЛрдХрди рдкрд░ рд╣реА рдЕрдиреБрд╡рд░реНрддреА

рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рд╣реИ, рдореЗрд░рд╛ рджреГрдврд╝ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдХрдард┐рди рд╣реИ, рдФрд░ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рдХреА рдкреВрд░реА рд╕рдордЭ рдХреЗ рдмрд┐рдирд╛, рдЗрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреЛрдХрди рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдмрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдЬрд┐рддрдиреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЙрддрдиреА рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИред
рдЬрд╣рд╛рдВ рдмреЗрддрд░рддреАрдм рддрд╛рд░ рдХрд┐рд╕реА рднреА рд▓рдВрдмрд╛рдИ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдмрдбрд╝рд╛ рди рд╣реЛ рдЬрд╛рдП, рдЬрд┐рд╕рд╕реЗ рдмрд▓ рдХреЛ рдмрд▓ рдорд┐рд▓ рд╕рдХреЗред

@adamlwgriffiths рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА рдЬрд╛рддреА рд╣реИ, рдореЗрд░реА рдЗрд╕рдореЗрдВ рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдкреГрд╖реНрдарднреВрдорд┐ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдирдВрдж рд▓реЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдПрдХ рдЯреЛрдХрди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ .. рдмрд╕ рдЗрд╕ рдЧреЛ рд╕рд╛рдорд╛рди рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛, рд╕реА ++ рдФрд░ asm рдХрд░ рд░рд╣рд╛ рдерд╛ рд╡реИрд╕реЗ рднреА рдмрд╣реБрдд рд▓рдВрдмрд╛ ... рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реВрдВрдЧрд╛ рдФрд░ рдпрд╣ рдореЗрд░реА рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рд╣реИ

рдореИрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░ рд╣реВрдБ! рдХрд┐рд╕реА рд╕рд╛рдЗрдЯ рдкрд░ рдЯреЛрдХрди рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ @adamlwgriffiths рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдКрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рддреЗ рд╣реБрдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЙрд╕ рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдЙрд╕ рдЯреЛрдХрди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐ рдЯреЛрдХрди рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрдм рдореВрд▓ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реЛред рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг - рдлрд┐рд░ рд╕реЗ, рдЕрдЧрд░ рдореИрдВ рдореБрджреНрджреЗ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ - рд╕рдВрддрд░реА рдХреЗ рд░рд╛рд╡реЗрди-рдЬреЗрдПрд╕ ; рдпрд╣ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ URL рдмрдирд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдореВрд▓ (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ) рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдЧрд╛ред рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдЪрд┐рдВрддрд╛ рдХрдо рд╣реЛрдЧреА?

screen shot 2016-03-24 at 10 57 18 am

@ Germanaz0 рдХреНрдпрд╛ рдЖрдкрдХрд╛ рдСрдЯреЛ-рд▓реЙрдЧрд┐рди JS рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ? рдореИрдВ рдорд╛рд╕реНрдЯрд░ рдмреНрд░рд╛рдВрдЪ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХреБрдЫ рд╕рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдмреИрдХрдПрдВрдб рдбреИрд╢рдмреЛрд░реНрдб рдкреЗрдЬ рдХреЛ рд╣рд┐рдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЙрдЧрд┐рди рд╕реНрдХреНрд░реАрди рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЕрднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рд╕реБрдкрд░ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЬреЗрдПрд╕ рдХреЛрдб рдореЗрдВ рд╕рд╣реА рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкреНрд▓рдЧрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@rca рд╣рд╛рдБ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╛рдзрд╛рди рдХрд░рдирд╛ рдмрд╣реБрдд рд╣реА рдЖрд╕рд╛рди рд╣реИ https://gist.github.com/Germanaz0/d41b5f60dd8097405b6b

рдЖрдкрдХреЛ рдПрдХ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ {рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛: _USERNAME_, рдкрд╛рд╕: _PASS_, redirect_to: _URL_TO_REDIRECT} рдХреЗ рд╕рд╛рде json рдХрд╛ рдЖрдзрд╛рд░ = base64ред

рдЖрдк рдЙрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд▓реЙрдЧрд┐рди рдкреЗрдЬ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВрдЧреЗред

@ Germanaz0 , рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгреА рднреЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВрдиреЗ рдПрдХ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдмрддрд╛рдпрд╛, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореБрдЭреЗ рд▓реЙрдЧрд┐рди рдкреГрд╖реНрда рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рдЕрдкрдирд╛рдпрд╛ рдФрд░ рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд▓реЙрдЧрд┐рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛; рдореЗрд░рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╣рд╛рдБ рд╣реИ: https://github.com/zymbit/grafana/tree/auto-login-by-cookie-redirect

рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХреЗ рдпреЛрдЧреНрдп рд╣реИ? рдореИрдВ рдЗрд╕реЗ рдПрдХ рдорд░реНрдЬ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ mods рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ рд╣реВрдБред

рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?
@rca рдХреНрдпрд╛ рдЖрдкрдиреЗ PR рдмрдирд╛рдпрд╛?

@ рдкреАрдЖрд░ рд╕реЗ рдПрдХ рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП +1

@ рдЬрд░реНрдордирдЬрд╝0 , рдЖрдк рдЕрдкрдиреА .js рдлрд╝рд╛рдЗрд▓ рд╕рд╣рд┐рдд рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣реИрдВ?

@rca рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди рдирд┐рдпрдВрддреНрд░рдХ рдореЙрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ? рдореИрдВ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдФрд░ рдПрдХ рдЕрдкреНрд░рд╛рдкреНрдд рдХрд┐рдпреЛрд╕реНрдХ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

BTW рдЕрдЧрд░ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдХрд┐рдпреЛрд╕реНрдХ, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЗ рдСрд░реНрдЯрдкреНрд░реЛрдХреНрд╕реА рдХреЛ рдЪрдмрд╛рдПрдВ ред рдЗрд╕ рдФрд░ рдЕрдкрд╛рдЪреЗ рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЬреЛ рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред

@scottfuhrman рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣рд╛рдБ рдореЗрд░рд╛ рдЙрдкрдпреЛрдЧ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:

рдореИрдВ рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдирд╣реАрдВ рдерд╛, рдмрд▓реНрдХрд┐ рдПрдХ рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рдмрд╛рд╣рд░реА рдкреГрд╖реНрда рдкрд░ рдПрдХ рдЖрдЗрдлреНрд░реЗрдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯ рдмрд╣реБрдд рд╕рд╛рдл-рд╕реБрдерд░реЗ рд╣реИрдВред

screen shot 2016-12-14 at 10 24 06 am

рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕ рдкреГрд╖реНрда рдкрд░ рдЖрдк рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рд░реНрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

<div id='grafana-dashboard' class="col-lg-12"></div>


<script type="text/javascript">
    GrafanaEmbed = {
        grafanaUrl: 'https://your.grafana.example.com',
        dashboard: 'dashboad-name',
        queryParams: {
            dashnav: 0,
            // this is a base64-encoded string of username:password
            // for example on a *NIX machine (and Mac OS X):
            // $ echo "kiosk1:supersecret" | base64
            // a2lvc2sxOnN1cGVyc2VjcmV0Cg==
            auth: 'a2lvc2sxOnN1cGVyc2VjcmV0Cg==',
            theme: 'light'
        }
    };

    (function() {
        var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
        d.src = GrafanaEmbed.grafanaUrl + '/public/app/features/dashboard/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
    })();
</script>

рдЙрдореНрдореАрдж рд╣реИ рдХреА рдпрд╣ рдорджрдж рдХрд░реЗрдЧрд╛ред

+1

рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдлрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рдерд╛ рдЬрдм рддрдХ рдореИрдВ рдПрдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рдСрд░реНрдЯрдкреНрд░реЛрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрдм рддрдХ рд╣рдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд╛ рдХреЛ рдЕрдХреНрд╖рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддрдм рддрдХ рдореБрдЭреЗ рдПрдХ рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб рд╣реЛрдиреЗ рдХреА рдмрд╛рдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддреА рд╣реИ рдЬрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд┐рдпреЛрд╕реНрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ?

@torkelo рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @ over64 рдХреЛ рднрд░реНрддреА рдХрд┐рдпрд╛ рд╣реИред

рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ? рдореВрд▓ рд░реВрдк рд╕реЗ рдЬреЛ рдореБрдЭреЗ рдЪрд╛рд╣рд┐рдП рд╡рд╣ URL рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдПрдХ рдЯреЛрдХрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЛ рдмрд╛рдпрдкрд╛рд╕ / рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ?

рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЕрдиреБрд╕рдВрдзрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рд╕рдордЭ рдЧрдпрд╛ред рдЖрдкрдХреА рдпреЛрдЬрдирд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рддреИрдпрд╛рд░ рд╣реИрдВ :)

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдФрд░ рдореИрдВ рдЗрд╕рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ

рдареАрдХ рд╣реИред @ рдУрд╡рд░ 64 рдХреБрдЫ рджреЗрдЦ рд▓реЗрдВрдЧреЗ рдФрд░ рдХреБрдЫ рд╕реБрдЭрд╛рдПрдВрдЧреЗред

@torkelo рдХреНрдпрд╛ рдЖрдк @ over64 рдХреЗ PR рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдХреЛрдИ рдЖрд╕рд╛рди рдХрд╛рдо? рдореИрдВ @ Germanaz0 рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ :(

рдпрд╣ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдПрдХ iframe рдХреЗ рднреАрддрд░ рд╕реНрдиреИрдкрд╢реЙрдЯ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдкрд░ рдЕрд╡рд░реБрджреНрдз рд╣реИред рдПрдореНрдмреЗрдбреЗрдб рд╕реНрдиреИрдкрд╢реЙрдЯ url рдХреЛ рд▓реЙрдЧрд┐рди рдХреБрдВрдЬреА / рдЯреЛрдХрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрд╝рд░рд╛ рд╕реБрдирд┐рдП рд╕рднреА,

рдЗрд╕ рдереНрд░реЗрдб рдореЗрдВ рд╣рд╛рд▓ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕рдореНрдорд╛рди рдХреЗ рд╕рд╛рде рд╣реИрдВ:

  • рд╕реБрд░рдХреНрд╖рд╛
  • рдПрдХ iframe рдХреЗ рднреАрддрд░ рдПрдореНрдмреЗрдб рдХрд░рдирд╛

рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХреГрдкрдпрд╛ рдореЗрд░реА рдкреБрд░рд╛рдиреА рдЯрд┐рдкреНрдкрдгреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ :

рдФрд░ рдПрдХ iframe рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: https://github.com/grafana/grafana/issues/3752#issuecomment -267062843

рдЗрд╕ рд╢рд╛рдЦрд╛ (рдпрджреНрдпрдкрд┐ рдХрд╛рдлреА рдкреБрд░рд╛рдиреА) рдореЗрдВ рдкреНрд░рд╡рдЪрди рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдПрдХ iframe рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЯреЛрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред

@torkelo рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рдЙрдкрд░реЛрдХреНрдд рддрддреНрд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

@rca рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рд╡рд╣ рдПрдореНрдмреЗрдб

@zoell рдпрд╣

@rca рдУрд╣ рдзрдиреНрдпрд╡рд╛рджред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╢рд╛рдЦрд╛ рдореЗрдВ рдореБрдЭреЗ рд╡рд╣ рдлрд╛рдЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реАред рдХреНрдпрд╛ рд╡рд╣ рдХрд╣реАрдВ рдФрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ?

@zoell , рдореИрдВ рдЙрд╕ рд░реЗрдкреЛ рдХреЛ рдХрд╛рдВрдЯрд╛ рдХрд░реВрдБрдЧрд╛ рдФрд░ рдЙрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

@rca рдзрдиреНрдпрд╡рд╛рдж рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

@rca рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рдЕрднреА рднреА рдЙрд╕ рд╢рд╛рдЦрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╣реАрдВ рдвреВрдБрдв рд╕рдХрддрд╛ рд╣реВрдБ рдЬрд┐рд╕рдХрд╛ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ред

@TinaRen @zoell рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рдЧреЗрдВрдж рдХреЛ рдЧрд┐рд░рд╛ рджрд┐рдпрд╛, рдорд╛рдлреАред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрднреА рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рде рдореЗрдВ рд╣реИ! ЁЯШм

рдореИрдВ рдЗрд╕ рдкрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдБ:

https://github.com/rca/grafana

рдФрд░ рдлрд╝рд╛рдЗрд▓ рдпрд╣рд╛рдБ рд╣реИ:

https://github.com/rca/grafana/blob/embedding/public/app/features/dashboard/embed.js

рдпрджрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ public_gen/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд╣реАрдВ рдмрди рд░рд╣реА рд╣реИ рдФрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВред

рдзрдиреНрдпрд╡рд╛рдж!

рдХреНрдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЛ рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдПрдХреНрд╕реЗрд╕ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ? (рдПрдХ рд╣реА рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдЯ рдкрд░ рд╕рдВрдХреАрд░реНрдг рдкреИрдирд▓ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП)

рдореИрдВ рдПрдХ рдЙрдЪрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдХреЛ рдЫреБрд░рд╛ рд▓реЗрддреЗ рджреЗрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдКрдкрд░ рдХреА рддрд░рдл рдЬрд╛ рд╕рдХреЗред рд╣рдордиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди (# 7431) рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд┐рдпрд╛, рдЙрд╕реЗ рдХрднреА рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ :(

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдУрд░ рд╕реЗ рдХрд┐рд╕реА рдиреЗ рдЗрд╕ рдкрд░ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛрдЧрд╛ред

Grafana рдХреЗ auth.proxy рдФрд░ Nginx рдХреЗ ngx_http_secure_link_module рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ http://grafana/?user=nayar&md5=2tutcea9nfdsfdsfdsw&expires=1505386800 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ

рдПрдХ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдХреБрдХреА рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИред

рд▓рд╛рдн:

  • рд▓рд┐рдВрдХ рдХреБрдЫ рд╕рдордп + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
  • рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рдкрд╛рд╕рдХреА + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
  • рдкрд╛рд╕рд╡рд░реНрдб + рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдореЗрд░рд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдЗрд╕ рддрд░рд╣ рд╣реИ

server {
    listen 3001 default_server;
#   listen [::]:3001 default_server;

    server_name _;

        location / {
        set $user "";
        set $state "";

        if ($args ~ "^user=(.+)&md5") {
                    set $user $1;
                    set $state "${state}U";
                }

        secure_link $arg_md5,$arg_expires;
                secure_link_md5 "$secure_link_expires$uri$user grafanarocks";

                if ($secure_link = "") { 
                    set $state "${state}S1";
                }

                if ($secure_link = "0") { 
                    set $state "${state}S2";
                }

                add_header X-uristate "$state";

                if ($state = "US1") { return 403; }
                if ($state = "US2") { return 410; }

                add_header X-uri "$user";

                proxy_set_header X-WEBAUTH-USER $user;

                proxy_pass http://127.0.0.1:3000;
            }
    }

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭрд╕реЗ рдмреЗрдЭрд┐рдЭрдХ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ

рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, @Nayarред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдореЗрд░реА рдЪрд┐рдВрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдкрд╕рдВрдж рдХрд░реВрдБрдЧрд╛ рдЬреЛ рдореВрд▓ рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛред

рдореИрдВрдиреЗ рдПрдХ рд╕реНрдЯреЙрдХ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ред рдмрд╕ рд╕рдХреНрд╖рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реЗрдпрд░ nginx recompile рдерд╛ рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИред

рдиреИрдпрд░, рдХреНрдпрд╛ рдЖрдк рдореБрдЭреЗ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЬреЛ рд╕рдорд╛рдзрд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рдВрдЧрдарди рдореЗрдВ, рд╡реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ

рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ (рдФрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ) рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ред

рд╕рдмрд╕реЗ рддреЗрдЬ рд╕рдорд╛рдзрд╛рди:

1) рдПрдХ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ (рдзреНрд╡рдЬ) рдЬреЛрдбрд╝реЗрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдЖрдкрдХреЛ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП url рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

Proos: API рдХреБрдВрдЬрд┐рдпрд╛рдБ рдХреЗрд╡рд▓ Org Admins рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред


2) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдФрд░ рдпреВрдЖрд░рдПрд▓ рдХреБрдВрдЬреА (рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рдмрдирд╛рддреЗ рд╣реИрдВред

рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рдУрдЙрде рд╕реЗрдЯрдЕрдк рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИрдВ рдЬрд╣рд╛рдВ рдЕрдЧрд░ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдпрд╛ рдпреВрдЖрд░рдПрд▓ рдХреБрдВрдЬреА рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╡реЗ рдЧреНрд░рд╛рдлрд╛рдирд╛ (рдУрдЙрде рд╕рд┐рд╕реНрдЯрдо рд╕реЗ) рдХреЛ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдпрд╛ рдпреВрдЖрд░рдПрд▓ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдУрд╣ рд▓реЙрдЧрд┐рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╣реИ рдЬрдм рд╣рдо рдЕрдВрддрддрдГ рдЙрдиреНрд╣реЗрдВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╢рдорди рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдУрдЖрд░рдЬреА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреНрд░рдлрд╛рдирд╛ рд╕рд░реНрд╡рд░ рдкреНрд░рд╡реЗрд╢ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рдЪрд╛рд░ @DanCech ? рдПрдХ AllowUrlLogin рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВ?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдкреАрдЖрдИ рдХреБрдВрдЬреА рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕рд╣реА рддрд░реАрдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рдореЗрдВ рдпреВрдЖрд░рдПрд▓ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛, рдЧреИрд░-рдкреНрд░рд╡реЗрд╢ рд▓реЙрдЧрд┐рди рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ) рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреНрд░рд╛рдордХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╕рдорд╛рди рдмреИрдХрдПрдВрдб рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдФрд░ рд╡рд┐рдХрд▓реНрдк рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо рдЗрд╕реЗ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ред

рдЬрд╣рд╛рдБ рддрдХ рдУрдЙрде рд▓реЙрдЧрд┐рди рдкреНрд░рд╢реНрди рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдУрдЙрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рднреА рдкрд╛рд╕рд╡рд░реНрдб рд╕рдХреНрд╖рдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдкрд╛рд╕рд╡рд░реНрдб рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдУрде рдЕрдХрд╛рдЙрдВрдЯ рдХреЗ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕ рддрд░рд╣ рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдореЗрдВ рдЙрд╕ рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдУрдЙрде рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд▓реВрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдУрдЙрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬреЗрдВред

рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рдирд╛рдо рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред "рд▓реЙрдЧрд┐рди URL" рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреИрд╢рдмреЛрд░реНрдб рддрдХ рд╕реАрдорд┐рдд рд▓рд╛рдЗрд╡ рд▓рд┐рдВрдХ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

@mattttt рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ

рдЪреВрдВрдХрд┐ рдмрд╛рдж рдореЗрдВ рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯ рдореЗрдВ url рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛, рдЧреИрд░-рдкреНрд░рд╡реЗрд╢рдХреЛрдВ рдХреЛ рд▓реЙрдЧрд┐рди рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛)

рдореИрдВ рдЗрд╕ рд▓реЙрдЧрд┐рди рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЗрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдХреЛрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЗрд╕реЗ рдХрд┐рд╕реА рдореВрд▓ рднреВрдорд┐рдХрд╛ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдСрд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╛рдзрд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЗ рдореЗрдВ рдЙрд╕ рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдЕрдкрдиреЗ рд▓реЙрдЧрд┐рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдУрдЙрде рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд▓реВрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдУрдЙрде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рднреЗрдЬреЗрдВред

рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рди рдпреВрдЖрд░рдПрд▓ / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдк рдЯреЛрдХрди рдХреЛ "рд░рд┐рд╡рд╛рдЗрдЬрд┐рдВрдЧ" рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╡реЗ рдЕрдкрдиреА рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрднреА рднреА рдУрд╣реВрдд рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ, рддреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЛ рдХрднреА рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ред

@hemsush рдЗрд╕ рдмреНрд▓реЙрдЧ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ Grafana 2.0 рд╕реЗ рдКрдкрд░ рдХреА рдУрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: https://grafana.com/blog/2015/12/07/grafana-authproxy-have-it-your-way/

рдореИрдВ рдЗрд╕ рд▓реЙрдЧрд┐рди рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рдЗрд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдВрдХреЛрдЪ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ (рдЗрд╕реЗ рдХрд┐рд╕реА рдореВрд▓ рднреВрдорд┐рдХрд╛ рдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛)ред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕реЗ рдПрдХ рд╕рд╛рдЭрд╛ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛ рдФрд░ рд╕реБрд░рдХреНрд╖рд╛ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдЧрд╛ рдЬреЛ рдкреВрд░реА рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдХрд┐рд╕реА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдСрд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЗ рдХреЗ рд╕рд╛рде рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓реЙрдЧрд┐рди рдпреВрдЖрд░рдПрд▓ / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдк рдЯреЛрдХрди рдХреЛ "рд░рд┐рд╡рд╛рдЗрдЬрд┐рдВрдЧ" рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╡реЗ рдЕрдкрдиреА рдкрд╣реБрдВрдЪ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрднреА рднреА рдУрд╣реВрдд рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ, рддреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЛ рдХрднреА рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓рддрд╛ред

рдореЗрд░рд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрди рд▓рд┐рдВрдХреНрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рджреГрд╢реНрдп "рдЕрдирд╛рдо" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╡реЗ рдЬрд╛рджреБрдИ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдЧ рдЗрди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рд╕реАрдорд┐рдд рд╡реНрдпреВрдЕрд░ рдЦрд╛рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддрд▓рд╛рдХ рджреЗрдЧрд╛ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддреЛрдВ рд╕реЗред рдпрд╣ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рдореБрджреНрджреЗ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░ рджреЗрдЧрд╛, рдЬреЛрдЦрд┐рдо рд╕реНрддрд░ рдХреЛ рдХрдо рдХрд░ рджреЗрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдВрдХ рдХреЛ рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдСрд░реНрдЧрди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рд╕рдХреНрд░рд┐рдп рдПрдХреНрд╕реЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдкреНрд░рдмрдВрдзрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡

1) рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ "рд╡реНрдпреВрдЕрд░ URL рдЯреЛрдХрди" рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрдВ, рдЬрд┐рд╕реЗ рдЖрдк рдПрдкреАрдЖрдИ рдХреАрдЬрд╝ рдкреЗрдЬ рд╕реЗ рдЬреЛрдбрд╝ / рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рдо рдмрд╛рдж рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдкреЗрдЬ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдирдИ рддрд╛рд▓рд┐рдХрд╛ url_token рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ рдФрд░ рд╡реЗ рдПрдкреАрдЖрдИ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рд╣реЛрдВрдЧреЗ рдЬреИрд╕реЗ рдПрдкреА рдХреАрдЬ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ url рдореЗрдВ "рдФрд░ url-Cort-token =" рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИтАЭред
2) рдкреАрдПрдирдЬреА рд░реЗрдВрдбрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдЯреЛрдХрди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк (рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ URL рдЯреЛрдХрди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдХреНрд╡реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдбреИрд╢рдмреЛрд░реНрдб / рдкреИрдирд▓ рдХреЛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ)
3) рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдбрдореА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдмрдирд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "URL рдЯреЛрдХрди" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреИрд╢рдмреЛрд░реНрдб рдФрд░ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрдорддрд┐ рдЬрд╛рдБрдЪ рдореЗрдВ url рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдЪреЗрдХ / рдЬреЙрдЗрди рдХрд░рдиреЗ рд╕реЗ рдирдлрд░рдд рд╣реЛрдЧреАред

4) рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ url рдЯреЛрдХрди рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рд╕рднреА рд╕рдВрдЧрдардиреЛрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА (рдФрд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХреЛрдИ рдХреНрд╡реЗрд░реА рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ) (рдЬрдм рддрдХ рдХрд┐ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рд╡рд┐рдЪрд╛рд░ @bergquist @DanCech

рдкреАрдПрдирдЬреА рд░реЗрдВрдбрд░ рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдЯреЛрдХрди рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк (рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ URL рдЯреЛрдХрди рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рднреА рдХреНрд╡реЗрд░реА рдХреЛ рдХреЗрд╡рд▓ рдореМрдЬреВрджрд╛ рдбреИрд╢рдмреЛрд░реНрдб / рдкреИрдирд▓ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗ)

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдкреАрдПрдирдЬреА рдкреНрд░рддрд┐рдкрд╛рджрди рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрд╣ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХрд░реЗрдЧрд╛ рдФрд░ рдпрд╣ рдЕрд╕рд▓реА рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдЬрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗ рдЯреЛрдХрди рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдореВрд╣реЛрдВ рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб рдлрд╝реЛрд▓реНрдбрд░ рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрд╕ рдЯреЛрдХрди / рд▓реЙрдЧрд┐рди рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЯреЛрдХрди (рдЯреАрд╡реА рд▓реЙрдЧ рдЗрди / рд╡реНрдпреВ рдореЛрдб / рдЯреАрд╡реА рдореЛрдб) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ Viewer рднреВрдорд┐рдХрд╛ рдореЗрдВ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ url рдЯреЛрдХрди рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдкрд╛рд╕ рд╕рднреА рд╕рдВрдЧрдардиреЛрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдЧреА (рдФрд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХреЛрдИ рдХреНрд╡реЗрд░реА рдЬрд╛рд░реА рдХрд░ рд╕рдХрддрд╛ рд╣реИ) (рдЬрдм рддрдХ рдХрд┐ рдПрдкреАрдЖрдИ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдирдП рдЯреЛрдХрди рдмрдирд╛рддреЗ рд╕рдордп рдЬрд╛рдирдХрд╛рд░реА рдФрд░ рдЪреЗрддрд╛рд╡рдиреА рдЬреЛрдбрд╝рдирд╛ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЯреЛрдХрди рдмрд╛рдВрдзрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдпрджрд┐ рдпреВрдЖрд░рдПрд▓ рдЯреЛрдХрди рдПрдХ рд╕рдореВрд╣ рдХреЗ рд╕рджрд╕реНрдп рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИрдВ рддреЛ рд╡рд┐рд╢реЗрд╖ рдбреИрд╢рдмреЛрд░реНрдб рдЖрджрд┐ рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рд╕рд╛рде рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпреВрдЖрд░рдПрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд▓рдЪреАрд▓рд╛рдкрди рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрдорддрд┐ рдЪреЗрдХ рдореЗрдВ рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЖрдк рд╕рдореВрд╣ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд░реНрд╢рдХ рдПрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдпреВрдЖрд░рдПрд▓ рдЯреЛрдХрди рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЪреЗрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рддред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ, рддреЛ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдмреИрдХрдПрдВрдб рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб, рдкреИрдирд▓, рд╕рдордп рд╕реАрдорд╛ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ var рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдп рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмреИрдХрдПрдВрдб рдкрд░ рдмрдирд╛рдП рдЧрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ var рдорд╛рди рд╡реИрдз рд╣реИрдВред

рдПрдХ "рд╕рд╛рдорд╛рдиреНрдп" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЯреЛрдХрди рдмрд╛рдВрдзрдиреЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдпрд╛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдЯреЛрдХрди рдЬрд╛рдирддрд╛ рд╣реИ (рднрд▓реЗ рд╣реА рдЦрд╛рддрд╛ рдмрдВрдж рд╣реИ) рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпрд╛ рдЯреЛрдХрди рдХреЛ рд╣рдЯрд╛рдХрд░ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдиреБрдорддрд┐ рдЪреЗрдХ рдореЗрдВ рдмрд╣реБрдд рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЖрдк рд╕рдореВрд╣ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджрд░реНрд╢рдХ рдПрдХ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╣реИ рдпрд╛ рдПрдХ рдпреВрдЖрд░рдПрд▓ рдЯреЛрдХрди рд╣реИ рд▓реЗрдХрд┐рди рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЪреЗрдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рддред

рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рдЪреЗрдХ рдХреЛ рд╕рдорд╛рди рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рддреЛ рдпрд╣ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЯреЛрдХрди / рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рдореВрд╣, рдбреИрд╢рдмреЛрд░реНрдб рдЖрджрд┐ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП UI рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╣реА рдХрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рд╣реИ, рддреЛ рдирд┐рдпрдорд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣рд╛рдВ рдХреЛрдИ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рдмреИрдХрдПрдВрдб рдкрд░ рд▓реЗ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб, рдкреИрдирд▓, рд╕рдордп рд╕реАрдорд╛ рдФрд░ рдЯреЗрдореНрдкреНрд▓реЗрдЯ var рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдп рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдмреИрдХрдПрдВрдб рдкрд░ рдмрдирд╛рдП рдЧрдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдкрд╣реБрдВрдЪ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ var рдорд╛рди рд╡реИрдз рд╣реИрдВред

рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХреЗ рд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрднрд╡ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рд╕рднреА рд╕рдорд╛рдзрд╛рди рдЦрд░рд╛рдм рдЯреНрд░реЗрдбреЛрдВ рдСрдл рдХреА рддрд░рд╣ рдорд╣рд╕реВрд╕ рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рддрдХ рдХрдо рд╕реЗ рдХрдо keept рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рддрдХ рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдПрдХреНрд╕реЗрд╕ рд╣рд▓ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ред

рдореИрдВ рднреА username+passwd+ldap auth рдореЛрдб рдореЗрдВ рдПрдореНрдмреЗрдб рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдорд┐рд▓рд╛ ...
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдЕрдкрдбреЗрдЯ?

рдореБрдЭреЗ рджрд░реНрд╢рдХ рдЯреЛрдХрди рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╣рд╛рдпрддрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред

рд╣реИрд▓реЛ рджреЛрд╕реНрддреЛрдВ!
рдореИрдВ рдПрдХ рдбреИрд╢рдмреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдорд╛рдгрд┐рдд рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдмреИрдХрдПрдВрдб рдФрд░ JSF рдореЗрдВ рдПрдХ рдлреНрд░рдВрдЯ рдПрдВрдб рд╣реИ, рдореИрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реАрдзреЗ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛, рдореИрдВ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ, рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдирдорд╕реНрддреЗ,

рдмрд╕ рдПрдХ рд╡рд┐рдЪрд╛рд░, рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдмреЗрд╕рд┐рдХ рдСрдереЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреАрдЖрдИ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
? curl https://admin:admin<strong i="7">@localhost</strong>:3000/api/user/cookie
рдФрд░ рдПрдХ JSON рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
{"user_name":"admin","cookie_name":"grafana_,session":"a0b1c2d3e4","remember":"da27ef425e9e0d"}

рдпрд╣ https рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдореИрдВ рдЗрд╕ рд╕реБрдЭрд╛рд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдХреАрдЬрд╝ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд╕реБрдВрджрд░ рдЪрд╛рд░реНрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдореИрдВ рдЖрдкрдХреЗ рдХреЛрдб рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ( рдмрд╣реБрдд рд╕рдореНрдорд╛рди рд╕реЗ ) рдпрд╣ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред
рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп:
user.Rands+user.Password, setting.CookieRememberName, user.Login, days, setting.AppSubUrl+"/"

SetSuperSecureCookie рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдирдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ SetSuperSecureCookie рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ, рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

func (ctx *Context) NewFunc(secret, name, value string, others ...interface{}) {
   key := pbkdf2.Key([]byte(secret), []byte(secret), 1000, 16, sha256.New)
   text, err := com.AESGCMEncrypt(key, []byte(value))
   return hex.EncodeToString(text)
}

рдЬрд╡рд╛рдм рд╡рд┐рд╕реНрддреГрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЬреИрд╕реЗ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИ:

func getUserUserProfile(userId int64) Response {
    query := m.GetUserProfileQuery{UserId: userId}

    if err := bus.Dispatch(&query); err != nil {
        return ApiError(500, "Failed to get user", err)
    }

    cook:= array
    result := {
        user_name: user.name,
                cookie_name:   cookie.name,
        session: s.session,
                remember: cokie.remember

    }

    return Json(200, &result)
}

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдПрдХ рдЬрд╛рджреВрдЧрд░ рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдХреЛрдбрд┐рдВрдЧ рд▓реЗрдЧреЛ рдирд╣реАрдВ рдЦреЗрд▓ рд░рд╣реА рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИред рдореИрдВ рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

GrafanaCon рджреМрд░рд╛рди @DanCech рд╡рд┐рдЪрд╛рд░ рдПрдХ GUID рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ред рдЖрдЬ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рдорд╛рдиред рдРрд╕реА рдХреБрдВрдЬреА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ / рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдПрдкреАрдЖрдИ рдЯреЛрдХрди рдХреЗ рд░реВрдк рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реИред рдбреИрд╢рдмреЛрд░реНрдб рджреГрд╢реНрдп рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЛ рдирд┐рд░реНрдорд╛рддрд╛ / updater рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

URL https://play.grafana.com/playlists/public/<hash> рдЬреИрд╕рд╛ рдХреБрдЫ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИ

рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдмрд╛рдд рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ (рдбреИрд╢рдмреЛрд░реНрдб) рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИред

рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдбреИрд╢рдмреЛрд░реНрдб рдПрд╕рдПрд▓ / рдПрдиреЛрдЯреЗрд╢рди рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░-рд╕рд╛рдЗрдб рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ GrafanaCon рд╕реЗ рд╣рдорд╛рд░реА рдмрд╛рддрдЪреАрдд рдХреЛ рд╢рд╛рдВрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ :)

рдзрдиреНрдпрд╡рд╛рдж @bergquist , рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рд╛рдорд╛рди рдХреЛ рдиреАрдЪреЗ рд▓рд┐рдЦреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрдмрдХрд┐ рдпрд╣ рдЕрднреА рднреА рддрд╛рдЬрд╝рд╛ рд╣реИ!

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

рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрд╕рдбреА рдХрд╛рд░реНрдб рдпрд╛ рдпреВрдПрд╕рдмреА рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЧреНрд░реЗрдлрд╛рдирд╛ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдЕрдВрддрд┐рдо рд▓рдХреНрд╖реНрдп рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдПрд╕рдбреА рдХрд╛рд░реНрдб рдпрд╛ рдпреВрдПрд╕рдмреА рдЫрд╡рд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдХреЛ рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╣реБрдкреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреВрджрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдЧреНрд░реЗрдлрд╛рдирд╛ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

@DanCech рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдореБрдЭреЗ рддрд▓рд╛рд╢ рд╣реИред

рдЙрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЕрдЧрд▓рд╛ рд╡рд┐рдХрд╛рд╕ рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ "рд╕реНрдХреНрд░реАрди" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдерд╛, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ "рд╕реНрдХреНрд░реАрди" рдмрдирд╛ рд╕рдХреЗ, рдЬрд┐рд╕рдореЗрдВ рддрдм рдПрдХ рдЧреБрдкреНрдд рд╣реИрд╢реЗрдб рдпреВрдЖрд░рдПрд▓ рдерд╛ рдЬрд┐рд╕реЗ рд╡рд╣ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред

@DanCech рдпрд╣ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ!

рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ,

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬрд░реНрдордиреЗрдЬрд╝ 0 рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓реЗ рдЧрдП рдореВрд▓ рдореБрджреНрджреЗ рд╕реЗ рдереЛрдбрд╝рд╛ рджреВрд░ рд╣реИ

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдЯреЛрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдкрд╛рд╕ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ iframes рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдФрд░ adamlwgriffiths рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдбреИрд╢рдмреЛрд░реНрдб рд╣реИ, рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдиреЗ рдбреИрд╢рдмреЛрд░реНрдб рд╕реЗ рдЧреНрд░реЗрдлрд╝рд╛рдирд╛ рддрдХ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдПрдХ рд╕рдорд╛рди рдирд╕ рдореЗрдВ рдХрд┐ рдХреИрд╕реЗ рд╣реЗрд░реЛрдХреВ рдирдП рдЕрд╡рд╢реЗрд╖ рдФрд░ рд╢реВрдиреНрдп-рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддрд╛ рд╣реИред рдПрдХ url + рдЯреЛрдХрди рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдкрд░рд╛-рдкрд╛рдареНрдпрдХреНрд░рдо рд╣реИред

Germanaz0 рдПрдХ js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддрд╛ рд╣реИ

рдЕрднреА рд╣рдордиреЗ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдПрдХ рдЫреЛрдЯреА рд╕реА рд╣реИрдХ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрд╕реНрдерд╛рдпреА рд╕рдорд╛рдзрд╛рди рд╣реИ

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рд╕рд╛рдЗрдЯ рдореЗрдВ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдЪрд╛рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд▓реЗрд▓рд┐рд╕реНрдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдореБрдЭреЗ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛?

рдпрджрд┐ рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рд╢рд░реНрдд рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ http://docs.grafana.org/tutorials/authproxy/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

@DanCech рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрдЧреАред рд╣рдо рдХреЗрд╡рд▓ рдЙрди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ URL рд╣реИред

@gzzo рдЬреЛ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдкрд░ рдирд┐рд░реНрднрд░ рд╣реИ

рдореИрдВ рдЗрд╕ рдлреАрдЪрд░ рдХреЛ Grafana рдореЗрдВ рднреА рдвреВрдВрдв рд░рд╣рд╛ рд╣реВрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ Microsoft Power BI рдПрдореНрдмреЗрдб рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдиреАрдЪреЗ рд▓рд┐рдВрдХ рджреЗрдЦреЗрдВред
https://github.com/Microsoft/PowerBI-JavaScript/wiki/Embedding-Basics
https://microsoft.github.io/PowerBI-JavaScript/demo/v2-demo/ind.net.html

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░ PowerBi рд╕рдорд╛рдзрд╛рди OAuth2 рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
Grafana рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб OAuth2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛ рдФрд░ CORS рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛ред

@Nayar рдореИрдВ

5.4 рд░рд┐рд▓реАрдЬ рд╣реЛрдиреЗ рдХрд╛ рдореБрдЭреЗ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╛рд░ рд╣реИред

Grafana рдХреЗ auth.proxy рдФрд░ Nginx рдХреЗ ngx_http_secure_link_module рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ http://grafana/?user=nayar&md5=2tutcea9nfdsfdsfdsw&expires=1505386800 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ

рдПрдХ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдХреБрдХреА рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИред

рд▓рд╛рдн:

  • рд▓рд┐рдВрдХ рдХреБрдЫ рд╕рдордп + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
  • рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рдкрд╛рд╕рдХреА + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
  • рдкрд╛рд╕рд╡рд░реНрдб + рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдореЗрд░рд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдЗрд╕ рддрд░рд╣ рд╣реИ

server {
  listen 3001 default_server;
#     listen [::]:3001 default_server;

  server_name _;

        location / {
      set $user "";
      set $state "";

      if ($args ~ "^user=(.+)&md5") {
                    set $user $1;
                    set $state "${state}U";
                }

      secure_link $arg_md5,$arg_expires;
                secure_link_md5 "$secure_link_expires$uri$user grafanarocks";

                if ($secure_link = "") { 
                    set $state "${state}S1";
                }

                if ($secure_link = "0") { 
                    set $state "${state}S2";
                }

                add_header X-uristate "$state";

                if ($state = "US1") { return 403; }
                if ($state = "US2") { return 410; }

                add_header X-uri "$user";

                proxy_set_header X-WEBAUTH-USER $user;

                proxy_pass http://127.0.0.1:3000;
            }
    }

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭрд╕реЗ рдмреЗрдЭрд┐рдЭрдХ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ

рд╣рд╛рдп рдирд╛рдпрд░,
рдореИрдВ рд╕рд╛рд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдЧреНрд░рд╛рдлреНрдЯрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЗрд░реЗ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд╛рдж рд╣реИ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдкреЗрдЬ рдореЗрдВ 'рдЧреНрд░рд╛рдлрд╛рдирд╛' рд▓рд┐рдВрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╣ рдмрд┐рдирд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдореЗрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВред
рдЬрдм grafana рдХреЛ рдкреНрд░реЙрдХреНрд╕реА_рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореЗрд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрд╡реЗрджрди рджреНрд╡рд╛рд░рд╛ рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди X-XSRF-TOKEN рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИред

рдореИрдВ рд╕рд░реНрд╡рд░ config рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдБред рдЖрдкрдХреА рдорджрдж рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреАред

@torkelo / @bergquist рдмрд╕ рдПрдХ рд╕рд┐рд░-рдЕрдк - рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реНрдХреНрд░реАрдирд▓реА рдореЗрдВ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ ред рдпрд╣ рдЬреАрд╡рд┐рдд рд╣реИ рдФрд░ рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рджреЛрд╕реНрддреЛрдВ!

@torkelo / @bergquist рдмрд╕ рдПрдХ рд╕рд┐рд░-рдЕрдк - рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕реНрдХреНрд░реАрдирд▓реА рдореЗрдВ рдЗрд╕рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ ред рдпрд╣ рдЬреАрд╡рд┐рдд рд╣реИ рдФрд░ рдорд╣рд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдХрдбрд╝реА рдореЗрд╣рдирдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рджреЛрд╕реНрддреЛрдВ!

@vpetersson рдореИрдВ

@GimpMaster рд╣рдо рд╕рд┐рд░реНрдл рд╣реЗрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП iframes рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдЦрд┐рд▓рд╛рдбрд╝реА / рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд▓рд┐рдЦрд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рд╣рдо рдкреЗрдЬ рд▓реЛрдб рдореЗрдВ рдСрд░реНрдЯрд┐рдХрд▓ рд╣реИрдбрд░ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред

рдореИрдВрдиреЗ рдЕрднреА-рдЕрднреА рд╕реНрдХреНрд░реАрди рдкрд░ рдЙрд╕ @GimpMaster рд▓рд┐рдВрдХ рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб рдХреЛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди ModHeader рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ Bearer API рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╢реАрд░реНрд╖рдХ рдЬреЛрдбрд╝рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдПрдХреНрд╕рдЯреЗрдВрд╢рдиреНрд╕ рдХреЛ рд╕реНрд▓реАрдк 10 рдПрд╕ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдПрдХ рдХрд┐рдпреЛрд╕реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рд╕реЗред рдпрд╣ рд╕рдорд╛рдзрд╛рди iframes рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕реЗ рд╣рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

@Nayar рдореИрдВрдиреЗ _unsecure_ рдПрдХреНрд╕реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕реБрдЭрд╛рдП рдЧрдП ngnix рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХреНрд╡реЗрд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ X-WEBAUTH-USER рдореЗрдВ рдбрд╛рд▓рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рд╕реЗрд╢рди рдЖрдИрдбреА рдорд┐рд▓рддреА рд╣реИ рдФрд░ рд╣рдо рджреВрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж!

рдореИрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП md5 рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ md5 рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдмрдирд╛рдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рд╡рд┐рд╕реНрддреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╡рд╣рд╛рдБ md5 рдмрдирд╛рдиреЗ рдкрд░ рдХреЛрдИ рдЪрд╛рд▓ рд╣реИ?

рдХреНрдпрд╛ рдЯреЛрдХрди 6. рдХреБрдХреА / рд╣реЗрдбрд░ / ... grafana 6. * рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдореИрдВ рд░рд┐рдХреНрдд PHP рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓рд┐рдВрдХ рдкреИрдирд▓ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ

index.php

<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script language="javaScript">
$( document ).ready(function() {
$.ajax({
        type: "GET",
        //url: "http://page.test;/grafana/",
        url: "http://page.test;/grafana/d/o24Tt1Cik/dashboard-test?orgId=1",
        contentType: "application/json",
        xhrFields: {
            withCredentials: false
        },
        beforeSend: function(request) {
                     request.setRequestHeader("X-WEBAUTH-USER", "admin");
                },
        headers: {
            // Set any custom headers here.
        "X-WEBAUTH-USER" : "admin"
        },
        success: function(data){
                var iframeDoc = $("#monitoringframe").get(0).contentDocument;
                iframeDoc.open();
                iframeDoc.write(data);
                iframeDoc.close();
//$("#monitoringframe").attr('srcdoc',data)
        },
        error : function(err) {
            console.log('Error!', err)
        }
    });
});

</script>
<iframe name="monitoringframe" id="monitoringframe" src="about:blank" sandbox="allow-forms allow-popups allow-same-origin allow-scripts" width=100% height=600 border="0" frameborder="0" />
</body>
</html>

рдирдЧреНрдиреЗрдХреНрд╕

 server {
  listen 80;
  server_name page.test;
  root /var/www/page;
  index index.html index.htm index.php;

        location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
        location /grafana/ {

                proxy_pass http://localhost:3000/;

       }

}

grafana.ini

[auth.proxy]
# Defaults to false, but set to true to enable this feature
enabled = true
# HTTP Header name that will contain the username or email
header_name = X-WEBAUTH-USER
# HTTP Header property, defaults to `username` but can also be `email`
header_property = username
# Set to `true` to enable auto sign up of users who do not exist in Grafana DB. Defaults to `true`.
auto_sign_up = true
# If combined with Grafana LDAP integration define sync interval
ldap_sync_ttl = 60
# Limit where auth proxy requests come from by configuring a list of IP addresses.
# This can be used to prevent users spoofing the X-WEBAUTH-USER header.
# Example `whitelist = 192.168.1.1, 192.168.1.0/24, 2001::23, 2001::0/120`
whitelist = 127.0.0.1, ::1/120
# Optionally define more headers to sync other user attributes
# Example `headers = Name:X-WEBAUTH-NAME Email:X-WEBAUTH-EMAIL`
headers =

[auth.basic]
;enabled = true

рдореИрдВрдиреЗ рдЕрдкрдиреЗ nginx config рдХреЛ рдЗрд╕ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдФрд░ "url рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ = myUser" рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЕрдирдзрд┐рдХреГрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХреА

location /grafana/ {

                error_log /var/www/grafana/error.log;
                access_log /var/www/grafana/access.log;

                set $user "";

                if ($args ~ "^user=(.+)") {
                    set $user $1;
                }

                add_header X-uri "$user";

                proxy_set_header X-WEBAUTH-USER $user;

                proxy_pass http://localhost:3000/;

       }

recorte

@ mr0bles рджрд╕реНрддрд╛рд╡реЗрдЬреА рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ "X-WEBAUTH-USER рд╕рд╛рде рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ - рдЖрдорддреМрд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ X-WEBAUTH-USER рдЧрд░рд╛рдлрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

@ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдореИрдВ рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рддрд╛ рд╣реВрдВ рдФрд░ рдореЗрд░рд╛ рдПрдкреАрдЖрдИ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рдпреВрдЬрд░ рдСрдбрд░ рдХреА рдЬрд░реВрд░рдд рд╣реИ (рдкреЗрдЬ рдХреЗ рд╕рднреА рдпреВрдЬрд░ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ)

@Nayar рдХреЗ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ X-WEBAUTH-USER рдХреЛ рдмрд┐рдирд╛ рд╣рд╛рд░реНрдбрдХреЛрдб рдХреЗ рд╣реЗрдбрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 6.0 рдпрд╛ 6.1 рдореЗрдВ рдХреБрдЫ рдЯреВрдЯ рдЧрдпрд╛ред
рдореИрдВрдиреЗ Apache2 рдореЗрдВ 6.1 (рдХрд▓ 5.3 рдмрдЬреЗ рд╕реЗ) рдореЗрдВ рдкреНрд░реЙрдХреНрд╕реА рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ @r0bles рдХреЗ рд╕рдорд╛рди рд╕реНрдХреНрд░реАрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЧреНрд░реИрдлрд╛рдирд╛ рдкреНрд░реЙрдХреНрд╕реА рд╣реЗрдбрд░ рдХреЛ рд╕рдордЭрдиреЗ рд▓рдЧрддрд╛ рд╣реИ: рдпрд╣ рд╢реБрд░реВ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдж рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ 401 рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рддреА рд╣реИред

@ рдмрд┐рдЯрдмреНрд▓реЗрдб рд╣рдореЗрдВ рдЖрдкрдХреЗ рд╕рдорд╛рди рдХреЛрдИ рдЕрдиреНрдп рд░рд┐рдкреЛрд░реНрдЯ рдирд╣реАрдВ рдорд┐рд▓реА рд╣реИред рдХреГрдкрдпрд╛ рдирдпрд╛ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдЦреЛрд▓реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

Grafana рдХреЗ auth.proxy рдФрд░ Nginx рдХреЗ ngx_http_secure_link_module рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ http://grafana/?user=nayar&md5=2tutcea9nfdsfdsfdsw&expires=1505386800 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ

рдПрдХ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдХреБрдХреА рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИред

рд▓рд╛рдн:

  • рд▓рд┐рдВрдХ рдХреБрдЫ рд╕рдордп + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
  • рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рдкрд╛рд╕рдХреА + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
  • рдкрд╛рд╕рд╡рд░реНрдб + рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдореЗрд░рд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдЗрд╕ рддрд░рд╣ рд╣реИ

server {
  listen 3001 default_server;
#     listen [::]:3001 default_server;

  server_name _;

        location / {
      set $user "";
      set $state "";

      if ($args ~ "^user=(.+)&md5") {
                    set $user $1;
                    set $state "${state}U";
                }

      secure_link $arg_md5,$arg_expires;
                secure_link_md5 "$secure_link_expires$uri$user grafanarocks";

                if ($secure_link = "") { 
                    set $state "${state}S1";
                }

                if ($secure_link = "0") { 
                    set $state "${state}S2";
                }

                add_header X-uristate "$state";

                if ($state = "US1") { return 403; }
                if ($state = "US2") { return 410; }

                add_header X-uri "$user";

                proxy_set_header X-WEBAUTH-USER $user;

                proxy_pass http://127.0.0.1:3000;
            }
    }

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭрд╕реЗ рдмреЗрдЭрд┐рдЭрдХ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╛рдиреНрдп X-WEBAUTH-USER рд╢реАрд░реНрд╖рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реЗрдбрд░ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдХреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  client_max_body_size 10m;
  root /foo/public;

  location /grafana/ {
    auth_request /gauth;
    auth_request_set $user $upstream_http_user;

    proxy_set_header X-WEBAUTH-USER $user;
    proxy_pass http://localhost:4000/;
  }

  location / {
    try_files $uri @app;
  }

  location <strong i="23">@app</strong> {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-SSL-Client-Cert $ssl_client_cert;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect  off;
  }
}

рддреЛ рд╕рдорд╛рдзрд╛рди Cort_request nginx рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ (/ рдЧреМрде рдЕрдиреБрд░реЛрдз) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ User рдкреНрд░рддрд┐рд╕рд╛рдж рд╣реЗрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ, рдЗрд╕ рдмреАрдЪ, рдЖрдк рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ: https://github.com/guysoft/FullPageOS/issues/175

рдпрд╣рд╛рдБ Grafana рдХреА рдЬреЗрдиреЗрд░рд┐рдХ OAuth рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ PHP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдореЗрд░рд╛ рдХрд╛рдо рд╣реИ: https://github.com/nbayramberdiyev/grafana-generic-oauth

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░реЗрдЧрд╛ред

рдмрд╕ рдпрд╣ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ http рдмреЗрд╕рд┐рдХ рд░рд┐рд╕реЛрд░реНрд╕ https://github.com/grafana/grafana/issues/13706#issuecomment -540958284

рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧрд┐рди рдЯреЛрдХрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд▓реЙрдЧрд┐рди рдкрд╛рд╕ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ iframes рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрд╢рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@ рдЖрд░рд╕реАрдП рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЖрдкрдХреЗ рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рдПрдореНрдмреЗрдб рдХрд░рддрд╛ рд╣реВрдВред рдЬреЗрдПрд╕, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк oauth рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдбрдмрд▓ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд┐рдирд╛ рдПрдореНрдмреЗрдбреЗрдб рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ

  1. рдПрдХрд▓ рдСрдЙрде рдкреНрд░рджрд╛рддрд╛ рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рд▓реЙрдЧрд┐рди рддрдВрддреНрд░ рдХреЗ рд╕рд╛рде рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рд╕реЗрдЯрдЕрдк рдХрд░реЗрдВ
  2. GF_AUTH_OAUTH_AUTO_LOGIN рдХреЛ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ
  3. рдПрдХ рдЙрдкрдкрд╛рда рдореЗрдВ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рд╣реЛрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХ рд░рд┐рд╡рд░реНрд╕ рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЗ рдореБрдЦреНрдп рдРрдк рдХреЗ рд░реВрдк рдореЗрдВ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХреЛ рдЙрд╕реА рдореЗрдЬрдмрд╛рди рдореЗрдВ рдкрд░реЛрд╕рд╛ рдЬрд╛рдП
  4. рдЕрдкрдиреЗ рдореБрдЦреНрдп рдРрдк рдФрд░ grafana рдХреЛ рдПрдХ рд╣реА oauth рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд╣реБрдХ рдХрд░реЗрдВ (oauth рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд▓рд┐рдП рд╡реЗ рд╕рдорд╛рди "рдРрдк" рд╣реЛрдВрдЧреЗ)
  5. рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдПрдореНрдмреЗрдб рдХрд░реЗрдВ
  6. рдЬрдм iframe рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ oauth рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧрд╛ (рдЬреЛ рдХрд┐ рдЖрдкрдХреЗ рдореБрдЦреНрдп рдРрдк рдХреЗ рд╕рдорд╛рди рдбреЛрдореЗрди рдкрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рд╕реЗ рд╕рдлрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдПрдХ рд╣реА рдСрд░реНрдЯрд┐рдХрд▓ рдХреБрдХреА рд╕рд╛рдЭрд╛ рдХрд░рдирд╛)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреБрдЫ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП security.cookie_samesite=none рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ iframe рдореЗрдВ, oauth рдкреНрд░рджрд╛рддрд╛ (рдЕрд▓рдЧ рдбреЛрдореЗрди) рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдмреИрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) grafana рдбреЛрдореЗрдиред рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдПрдХ samesite рдХреБрдХреА рдХреЛ lax рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдиреЗ рд░рд╣рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛ред https://bugzilla.mozilla.org/show_bug.cgi?id=1452527 рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдЕрдкрдирд╛ oauth_state рдЦреЛ рджреЗрддрд╛ рд╣реИред none рд▓рд┐рдП рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ)

@seanlaff рдореИрдВрдиреЗ AWS рдХреЙрдЧреНрдирд┐рдЯреЛ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╣реЗрдбрд░ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЖрдЗрдлреНрд░реЗрдо (рдПрдХреНрд╕-рдлреНрд░реЗрдо-рдСрдкреНрд╢рдВрд╕: рдЗрдирдХрд╛рд░) рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдХреЛрдИ рд╕реБрдЭрд╛рд╡?

Grafana рдХреЗ auth.proxy рдФрд░ Nginx рдХреЗ ngx_http_secure_link_module рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ
рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓рд┐рдВрдХ http://grafana/?user=nayar&md5=2tutcea9nfdsfdsfdsw&expires=1505386800 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реИрдВ
рдПрдХ рдмрд╛рд░ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рддреНрд░ рдХреБрдХреА рд╕реЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЧреНрд░рд╛рдлреНрдЯрд╛рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рд╡рд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИред
рд▓рд╛рдн:

  • рд▓рд┐рдВрдХ рдХреБрдЫ рд╕рдордп + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рдж рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
  • рд▓рд┐рдВрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдФрд░ рдкрд╛рд╕рдХреА + рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╣реИрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
  • рдкрд╛рд╕рд╡рд░реНрдб + рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдореЗрд░рд╛ рдирдЧреНрдиреЗрдХреНрд╕ рдХреЙрдиреНрдлрд┐рдбреЗрдВрд╕ рдЗрд╕ рддрд░рд╣ рд╣реИ

server {
    listen 3001 default_server;
#   listen [::]:3001 default_server;

    server_name _;

        location / {
        set $user "";
        set $state "";

        if ($args ~ "^user=(.+)&md5") {
                    set $user $1;
                    set $state "${state}U";
                }

        secure_link $arg_md5,$arg_expires;
                secure_link_md5 "$secure_link_expires$uri$user grafanarocks";

                if ($secure_link = "") { 
                    set $state "${state}S1";
                }

                if ($secure_link = "0") { 
                    set $state "${state}S2";
                }

                add_header X-uristate "$state";

                if ($state = "US1") { return 403; }
                if ($state = "US2") { return 410; }

                add_header X-uri "$user";

                proxy_set_header X-WEBAUTH-USER $user;

                proxy_pass http://127.0.0.1:3000;
            }
    }

рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рд╕рд╣рд╛рдпрддрд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдореБрдЭрд╕реЗ рдмреЗрдЭрд┐рдЭрдХ рд╕рдВрдкрд░реНрдХ рдХрд░реЗрдВ

рдпрд╣ рд╕рдорд╛рдзрд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдореЗрдВ рдорд╛рдиреНрдп X-WEBAUTH-USER рд╢реАрд░реНрд╖рдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рд╣реЗрдбрд░ рднрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдХреАрдЬрд╝ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВ, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рдЕрдЧрд▓реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдЖ:

server {
  listen 80 default_server;
  listen [::]:80 default_server;

  client_max_body_size 10m;
  root /foo/public;

  location /grafana/ {
    auth_request /gauth;
    auth_request_set $user $upstream_http_user;

    proxy_set_header X-WEBAUTH-USER $user;
    proxy_pass http://localhost:4000/;
  }

  location / {
    try_files $uri @app;
  }

  location <strong i="24">@app</strong> {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-SSL-Client-Cert $ssl_client_cert;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_redirect  off;
  }
}

рддреЛ рд╕рдорд╛рдзрд╛рди Cort_request nginx рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдореЗрд░рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХреНрд╕реЗрд╕ рдХрдВрдЯреНрд░реЛрд▓ (/ рдЧреМрде рдЕрдиреБрд░реЛрдз) рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ User рдкреНрд░рддрд┐рд╕рд╛рдж рд╣реЗрдбрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдХреИрд╕реЗ iframe рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?
рдореИрдВ Grafana рдФрд░ NGINX рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ
рдЗрд╕рд▓рд┐рдП рдХреГрдкрдпрд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХрддрдо рд╡рд┐рд╡рд░рдг рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ

рдХреИрд╕реЗ iframe рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

@pgsekaran рдпрд╣ рд╕рдорд╛рдзрд╛рди iframe рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдлреНрдЯрди рд▓реЙрдЧрд┐рди рдХреЗ рдмрд┐рдирд╛ grafana UI рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрдк рдкреНрд░реЙрдХреНрд╕реА рд╣реИ рдЬреЛ рдЧреНрд░реИрдлрд╛рдирд╛ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ,
рддреНрд╡рд░рд┐рдд рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ iframe.i рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреНрдп рдРрдк рдХреЗ рд╕рд╛рде Grafana рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЗ рд╕рд╛рде рдХреЛрдИ рд▓рд┐рдВрдХ рд╣реИ, рддреЛ рдореЗрд░реЗ рдРрдк рдореЗрдВ Grafana рдЬреЛрдбрд╝реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдкрдпреЛрдЧ рдкреНрд░рдмрдВрдзрди рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реВрдВред
рд╕рд╛рджрд░ рдЧреБрдирдЧреБрдирд╛рдирд╛
рдордВрдЧрд▓рд╡рд╛рд░, 23 рдЬреВрди, 2020, 09:54:57 рдЕрдкрд░рд╛рд╣реНрди GMT + 5: 30, рдХреЙрдиреНрд╕реНрдЯреЗрдВрдЯрд┐рди рдХреЛрд▓реЛрдЯреНрдпреБрдХ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @githubub рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ:

рдХреИрд╕реЗ iframe рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП?

@pgsekaran рдпрд╣ рд╕рдорд╛рдзрд╛рди iframe рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдРрдк рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рдлреНрдЯрди рд▓реЙрдЧрд┐рди рдХреЗ рдмрд┐рдирд╛ grafana UI рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдРрдк рдкреНрд░реЙрдХреНрд╕реА рд╣реИ рдЬреЛ рдЧреНрд░реИрдлрд╛рдирд╛ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИред

-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рдЙрддреНрддрд░ рд╕реАрдзреЗ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред

рдлрд┐рд░ рднреА рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

@pgsekaran рдХреЗ рдкрд╛рд╕ iframe рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЖрдзрд╛рд░рд┐рдд рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдзрд╛рд░рднреВрдд, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЯреЛрдХрди рд╣реИред
ive рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдорд╣рд╛рди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ehhg
https://blog.yadamiel.com/tutorials/embed-and-authenticate-grafana-in-a-iframe

@pgsekaran рдХреЗ рдкрд╛рд╕ iframe рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдЖрдзрд╛рд░рд┐рдд рд▓реЙрдЧрд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдкрд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдзрд╛рд░рднреВрдд, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЯреЛрдХрди рд╣реИред
ive рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рд▓рд┐рдЦрд╛ рд╣реИ, рдорд╣рд╛рди рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ehhg
https://blog.yadamiel.com/tutorials/embed-and-authenticate-grafana-in-a-iframe

рдирдорд╕реНрддреЗ,

рдореБрдЭреЗ NGINX рдФрд░ iframe рдХреЛ рдСрдЯреЛ рд▓реЙрдЧрд┐рди рдХреЗ рд╕рд╛рде рд╕реЗрдЯрдЕрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛

рд╕рдЯреАрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ https://github.com/grafana/grafana/issues/16319#issuecomment -483272921 рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╕рддреНрд░ рдЖрдИрдбреА рдкрд╣рд▓реА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЖрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреЗрдЬ "рдХрдВрдХрд╛рд▓" рд╢рд╛рдорд┐рд▓ рд╣реИред рдмрд╛рдж рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдСрдЯреЛ рд▓реЙрдЧрд┐рди рдЯреЛрдХрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реЗ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдбреИрд╢рдмреЛрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб рдореЗрдВ рдХреНрд░реЛрдорд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ Grafana рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рд╣рдо рдХрд┐рдпреЛрд╕реНрдХ-рдореЛрдб рдорд╢реАрдиреЛрдВ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП auth.generic_oauth ( auth.basic 5.x) рдХрд╛ рдЙрдкрдпреЛрдЧ рдордиреБрд╖реНрдпреЛрдВ рдФрд░ auth.proxy рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:

/usr/bin/chromium --app="https://server.localdomain/grafana/d/000000004/002-the-big-picture?orgId=1&refresh=5m&autologin=lHOrdypkhxzNYb2lRaIjbNPlOCZw9gWE"

рдЬреИрд╕рд╛ рдХрд┐ рджреВрд╕рд░реЛрдВ рдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдкрд╣рд▓реЗ url http://prometheus.localdomain/grafana/login?autologin=lHOrdypkhxzNYb2lRaIjbNPlOCZw9gWE (рдЬреЛ рдЕрдм grafana_session рдХреБрдХреА рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдлрд┐рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреИрд╢рдмреЛрд░реНрдб рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди ... рдХрд┐рдпреЛрд╕реНрдХ рдореЛрдб mode рдФрд░ iframes mode modeтЩВя╕П

рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдХрд╕реНрдЯрдо рдХреБрдХреА рдХреЗ рд╕рд╛рде autologin рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред рд╣рд╛рдВ, рдЖрдк GUI рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ рдЖрдЙрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдХреНрдпреЛрдВрдХрд┐ рдХрд╕реНрдЯрдо рдХреБрдХреА рдХреЛ рд╣рдЯрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рддрдВрддреНрд░ рдХреЗрд╡рд▓ рдХрд┐рдпреЛрд╕реНрдХ-рдореЛрдб рдорд╢реАрдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред

рддреЛ рдпрд╣рд╛рдБ Grafana рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП nginx config рд╣реИ:

# this maps tokens to grafana users
map $arg_autologin $autologin {
    lHOrdypkhxzNYb2lRaIjbNPlOCZw9gWE "display-1";
    default "";
}

server {
    listen 80;

    server_name server.localdomain;

    # add_header cannot be used in an "if"-context
    # so we set it to an empty string here as 
    # `add_header Set-Cookie "";` just removes the complete
    # header from the response
    set $setCookieHeader "";

    # when the autologin query param is not set, use
    # the value from the cookie named `grafana_autologin`
    if ($arg_autologin = "") {
        set $arg_autologin $cookie_grafana_autologin;
    }

    # when either the autologin query param or the `grafana_autologin`
    # cookie was set, place the autologin token and the cookie path
    # in the variable. `path=/` is needed to allow deeplinking
    if ($arg_autologin != "") {
        set $setCookieHeader "grafana_autologin=$arg_autologin;path=/";
    }

    location /grafana/ {
        rewrite  ^/grafana/(.*)  /$1 break;

        # now send the Set-Cookie header when an autologin token was provided
        add_header Set-Cookie $setCookieHeader;

        # look up the autologin token in the map above and set the grafana user
        proxy_set_header X-WEBAUTH-USER $autologin;
        proxy_pass http://localhost:3000;
    }
}
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
1 / 5 - 1 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

utkarshcmu picture utkarshcmu  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tuxinaut picture tuxinaut  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

sslupsky picture sslupsky  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

royemmerich picture royemmerich  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Azef1 picture Azef1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ