aaarticlea/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIwLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIzNTRweCIgaGVpZ2h0PSI1Ny44cHgiIHZpZXdCb3g9IjAgMCAzNTQgNTcuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzU0IDU3Ljg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojRTZFN0U4O30KCS5zdDF7ZmlsbDp1cmwoI1NWR0lEXzFfKTt9Cgkuc3Qye2ZpbGw6dXJsKCNTVkdJRF8yXyk7fQoJLnN0M3tmaWxsOnVybCgjU1ZHSURfM18pO30KCS5zdDR7ZmlsbDp1cmwoI1NWR0lEXzRfKTt9Cgkuc3Q1e2ZpbGw6dXJsKCNTVkdJRF81Xyk7fQo8L3N0eWxlPgo8Zz4KCTxnPgoJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik05OS45LDMxLjJjLTAuNCwxMC4xLTguMywxNy45LTE4LjIsMTcuOWMtMTAuNCwwLTE4LjItOC40LTE4LjItMTguNmMwLTEwLjMsOC40LTE4LjcsMTguNi0xOC43CgkJCWM0LjYsMCw5LjEsMiwxMyw1LjZsLTMsMy43Yy0yLjktMi41LTYuNS00LjMtMTAtNC4zYy03LjUsMC0xMy43LDYuMi0xMy43LDEzLjhjMCw3LjcsNS44LDEzLjcsMTMuMiwxMy43CgkJCWM2LjcsMCwxMS45LTQuOSwxMi45LTExLjFINzkuNXYtNC40aDIwLjRWMzEuMnoiLz4KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTE3LjMsMjguN2gtMi44Yy0zLjEsMC01LjYsMi41LTUuNiw1LjZ2MTQuNWgtNVYyNGg0LjF2Mi4xYzEuMy0xLjMsMy41LTIuMSw1LjktMi4xaDUuNEwxMTcuMywyOC43eiIvPgoJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNDQuNCw0OC44aC00LjJ2LTMuMWMtMy4zLDMuMi04LjQsNC43LTEzLjYsMi40Yy0zLjktMS43LTYuNy01LjItNy41LTkuNGMtMS41LTgsNC43LTE1LjIsMTIuNi0xNS4yCgkJCWMzLjMsMCw2LjMsMS4zLDguNSwzLjVWMjRoNC4zVjQ4Ljh6IE0xMzkuMywzOC4yYzEuMi01LjEtMi43LTkuNi03LjYtOS42Yy00LjMsMC03LjgsMy41LTcuOCw3LjhjMCw0LjgsNC4zLDguNiw5LjIsNy43CgkJCUMxMzYuMSw0My42LDEzOC42LDQxLjIsMTM5LjMsMzguMnoiLz4KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTU0LjQsMjIuNlYyNGg3Ljl2NC40aC03Ljl2MjAuNWgtNC45VjIyLjdjMC01LjUsMy45LTguNyw4LjgtOC43aDZsLTIsNC43aC00CgkJCUMxNTYuMSwxOC43LDE1NC40LDIwLjQsMTU0LjQsMjIuNnoiLz4KCQk8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTg4LjYsNDguOGgtNC4ydi0zLjFjLTMuMywzLjItOC40LDQuNy0xMy42LDIuNGMtMy45LTEuNy02LjctNS4yLTcuNS05LjRjLTEuNS04LDQuNy0xNS4yLDEyLjYtMTUuMgoJCQljMy4zLDAsNi4zLDEuMyw4LjUsMy41VjI0aDQuM1Y0OC44eiBNMTgzLjUsMzguMmMxLjItNS4xLTIuNy05LjYtNy42LTkuNmMtNC4zLDAtNy44LDMuNS03LjgsNy44YzAsNC44LDQuMyw4LjYsOS4yLDcuNwoJCQlDMTgwLjMsNDMuNiwxODIuOCw0MS4yLDE4My41LDM4LjJ6Ii8+CgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTIxNS4yLDM0LjF2MTQuN2gtNVYzNC4xYzAtMy4xLTIuNS01LjYtNS42LTUuNmMtMy4xLDAtNS42LDIuNS01LjYsNS42djE0LjdoLTVWMjRoNC4xdjIuMQoJCQljMS44LTEuNiw0LjItMi41LDYuNy0yLjVDMjEwLjYsMjMuNiwyMTUuMiwyOC4zLDIxNS4yLDM0LjF6Ii8+CgkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTI0NC40LDQ4LjhoLTQuMnYtMy4xYy0zLjMsMy4yLTguNCw0LjctMTMuNiwyLjRjLTMuOS0xLjctNi43LTUuMi03LjUtOS40Yy0xLjUtOCw0LjctMTUuMiwxMi42LTE1LjIKCQkJYzMuMywwLDYuMywxLjMsOC41LDMuNVYyNGg0LjNWNDguOHogTTIzOS4zLDM4LjJjMS4yLTUuMS0yLjctOS42LTcuNi05LjZjLTQuMywwLTcuOCwzLjUtNy44LDcuOGMwLDQuOCw0LjMsOC42LDkuMiw3LjcKCQkJQzIzNi4xLDQzLjYsMjM4LjYsNDEuMiwyMzkuMywzOC4yeiIvPgoJPC9nPgoJPGc+CgkJPGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNjkuMDEwNCIgeTE9IjY1Ljc1NTUiIHgyPSIyNjkuMDEwNCIgeTI9IjEzLjQ4ODciPgoJCQk8c3RvcCAgb2Zmc2V0PSIwIiBzdHlsZT0ic3RvcC1jb2xvcjojRkZGMTAwIi8+CgkJCTxzdG9wICBvZmZzZXQ9IjEiIHN0eWxlPSJzdG9wLWNvbG9yOiNGMDVBMjgiLz4KCQk8L2xpbmVhckdyYWRpZW50PgoJCTxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yNzguNCw0OC44aC0xOC43di0zN2g1djMxLjloMTMuN1Y0OC44eiIvPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfMl8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMjkyLjEwNDQiIHkxPSI2NS43NTU1IiB4Mj0iMjkyLjEwNDQiIHkyPSIxMy40ODg3Ij4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRjEwMCIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QTI4Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3QyIiBkPSJNMzA1LDQ4LjhoLTQuMnYtMy4xYy0yLjIsMi4xLTUuMiwzLjUtOC42LDMuNWMtNy4xLDAtMTIuOS01LjgtMTIuOS0xMi45YzAtNyw1LjctMTIuOCwxMi45LTEyLjgKCQkJYzMuMywwLDYuMywxLjMsOC41LDMuNXYtMy4xaDQuM1Y0OC44eiBNMzAwLjEsMzYuM2MwLTQuMy0zLjUtNy44LTcuOS03LjhjLTQuMywwLTcuOCwzLjUtNy44LDcuOGMwLDQuNCwzLjUsNy45LDcuOCw3LjkKCQkJQzI5Ni42LDQ0LjIsMzAwLjEsNDAuNywzMDAuMSwzNi4zeiIvPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfM18iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMzIyLjA0NjgiIHkxPSI2NS43NTU1IiB4Mj0iMzIyLjA0NjgiIHkyPSIxMy40ODg3Ij4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRjEwMCIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QTI4Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3QzIiBkPSJNMzM0LjksMzYuM2MwLDcuMS01LjgsMTIuOS0xMi45LDEyLjljLTMuMywwLTYuNC0xLjQtOC42LTMuNXYzLjFoLTQuMnYtMzVoNC45djEyLjZjMi4xLTEuOCw0LjgtMyw3LjktMwoJCQlDMzI5LjEsMjMuNCwzMzQuOSwyOS4yLDMzNC45LDM2LjN6IE0zMjkuOCwzNi4zYzAtNC4zLTMuNS03LjgtNy44LTcuOHMtNy44LDMuNS03LjgsNy44YzAsNC4zLDMuNSw3LjgsNy44LDcuOAoJCQlTMzI5LjgsNDAuNiwzMjkuOCwzNi4zeiIvPgoJCTxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfNF8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iMzQ0Ljc5MTQiIHkxPSI2NS43NTU1IiB4Mj0iMzQ0Ljc5MTQiIHkyPSIxMy40ODg3Ij4KCQkJPHN0b3AgIG9mZnNldD0iMCIgc3R5bGU9InN0b3AtY29sb3I6I0ZGRjEwMCIvPgoJCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QTI4Ii8+CgkJPC9saW5lYXJHcmFkaWVudD4KCQk8cGF0aCBjbGFzcz0ic3Q0IiBkPSJNMzUyLDI1LjZsLTIuMiwzLjZjLTEuMS0wLjYtMi44LTEuNi00LjgtMS42Yy0xLjksMC0zLjYsMC45LTMuNiwyLjVjMCwxLjcsMS45LDIuMyw0LjQsMy4yCgkJCWM0LDEuNCw3LjUsNC4xLDcuNSw4LjJjMCw0LjEtMy41LDcuNi04LjYsNy42Yy0zLjEsMC02LjItMS4yLTguMy0yLjVsMi00LjFjMS40LDAuOCw0LjEsMS45LDYuMiwxLjljMi41LDAsMy42LTEuNSwzLjYtMi45CgkJCWMwLTEuNy0xLjYtMi42LTUtNGMtMi41LTEtNi41LTIuNi02LjUtNy4xYzAtNC4xLDMuNS02LjksOC4zLTYuOUMzNDcuNiwyMy40LDM0OS45LDI0LjQsMzUyLDI1LjZ6Ii8+Cgk8L2c+Cgk8bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzVfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjI2LjYwMjciIHkxPSI2OS45Mzc4IiB4Mj0iMjYuNjAyNyIgeTI9IjE2LjczMjQiPgoJCTxzdG9wICBvZmZzZXQ9IjAiIHN0eWxlPSJzdG9wLWNvbG9yOiNGRkYxMDAiLz4KCQk8c3RvcCAgb2Zmc2V0PSIxIiBzdHlsZT0ic3RvcC1jb2xvcjojRjA1QTI4Ii8+Cgk8L2xpbmVhckdyYWRpZW50PgoJPHBhdGggY2xhc3M9InN0NSIgZD0iTTM1LjgsMzhjLTAuMi0wLjItMC41LTAuMy0wLjctMC4xYy0wLjEsMC0wLjEsMC4xLTAuMiwwLjFjLTAuMiwwLjEtMC40LDAuMi0wLjcsMC4zYy0wLjIsMC4xLTAuNSwwLjEtMC44LDAuMgoJCWMtMC4xLDAtMC4zLDAtMC40LDBjLTAuMSwwLTAuMSwwLTAuMiwwYy0wLjEsMC0wLjEsMC0wLjIsMGMtMC4xLDAtMC4xLDAtMC4yLDBjLTAuMSwwLTAuMiwwLTAuMiwwYzAsMCwwLDAsMCwwbDAsMGwtMC4xLDAKCQljMCwwLTAuMSwwLTAuMSwwYy0wLjEsMC0wLjEsMC0wLjIsMGMtMC42LTAuMS0xLjItMC4zLTEuNy0wLjVjLTAuNi0wLjMtMS4xLTAuNi0xLjYtMS4xYy0wLjUtMC40LTAuOS0xLTEuMy0xLjYKCQljLTAuMy0wLjYtMC42LTEuMy0wLjctMmMtMC4xLTAuMy0wLjEtMC43LTAuMS0xLjFjMC0wLjEsMC0wLjIsMC0wLjNjMCwwLDAsMCwwLDBsMCwwbDAtMC4xYzAsMCwwLTAuMSwwLTAuMWMwLTAuMiwwLTAuNCwwLjEtMC42CgkJYzAuMy0xLjUsMS0zLDIuMi00LjJjMC4zLTAuMywwLjYtMC41LDEtMC44YzAuMy0wLjIsMC43LTAuNCwxLjEtMC42YzAuNC0wLjIsMC44LTAuMywxLjItMC40YzAuNC0wLjEsMC44LTAuMiwxLjItMC4yCgkJYzAuMiwwLDAuNCwwLDAuNiwwYzAuMSwwLDAuMSwwLDAuMSwwbDAuMiwwbDAuMSwwYzAsMCwwLDAsMCwwbDAsMGwwLjIsMGMwLjUsMCwwLjksMC4xLDEuNCwwLjJjMC45LDAuMiwxLjgsMC41LDIuNiwxCgkJYzEuNiwwLjksMywyLjMsMy45LDRjMC40LDAuOCwwLjcsMS44LDAuOSwyLjdjMCwwLjIsMC4xLDAuNSwwLjEsMC43bDAsMC4ybDAsMC4yYzAsMC4xLDAsMC4xLDAsMC4yYzAsMC4xLDAsMC4xLDAsMC4ybDAsMC4ybDAsMC4yCgkJYzAsMC4xLDAsMC4zLDAsMC40YzAsMC4zLDAsMC41LTAuMSwwLjhjMCwwLjMtMC4xLDAuNS0wLjEsMC44QzQzLDM2LjgsNDMsMzcsNDIuOSwzNy4zYy0wLjEsMC41LTAuMywxLTAuNSwxLjUKCQljLTAuNCwxLTAuOSwxLjktMS41LDIuN2MtMS4yLDEuNy0yLjksMy4xLTQuOCwzLjljLTEsMC40LTIsMC43LTMsMC45Yy0wLjUsMC4xLTEsMC4xLTEuNiwwLjJsLTAuMSwwbC0wLjEsMGwtMC4yLDBsLTAuMywwbC0wLjEsMAoJCWMwLjEsMCwwLDAsMCwwbC0wLjEsMGMtMC4zLDAtMC42LDAtMC44LDBjLTEuMS0wLjEtMi4yLTAuMy0zLjMtMC42Yy0xLjEtMC4zLTIuMS0wLjctMy4xLTEuMmMtMi0xLTMuNy0yLjUtNS4xLTQuMgoJCWMtMC43LTAuOS0xLjMtMS44LTEuOC0yLjhjLTAuNS0xLTAuOS0yLTEuMi0zYy0wLjMtMS0wLjUtMi4xLTAuNS0zLjJsMC0wLjJsMC0wLjFsMCwwbDAtMC4xbDAtMC4ybDAsMGwwLTAuMWwwLTAuMWwwLTAuM2wwLDAKCQljMCwwLDAsMCwwLDBsMC0wLjFjMC0wLjEsMC0wLjMsMC0wLjRjMC0wLjUsMC4xLTEuMSwwLjEtMS42YzAuMS0wLjUsMC4yLTEuMSwwLjMtMS42YzAuMS0wLjUsMC4yLTEuMSwwLjQtMS42CgkJYzAuMy0xLjEsMC43LTIuMSwxLjEtMy4xYzAuOS0yLDIuMS0zLjcsMy41LTUuMWMwLjQtMC4zLDAuNy0wLjcsMS4xLTFjMC40LTAuMywwLjgtMC42LDEuMi0wLjljMC40LTAuMywwLjgtMC41LDEuMy0wLjcKCQljMC4yLTAuMSwwLjQtMC4yLDAuNy0wLjNjMC4xLDAsMC4yLTAuMSwwLjMtMC4xYzAuMS0wLjEsMC4yLTAuMSwwLjMtMC4xYzAuNC0wLjIsMC45LTAuNCwxLjQtMC41YzAuMSwwLDAuMi0wLjEsMC40LTAuMQoJCWMwLjEsMCwwLjItMC4xLDAuNC0wLjFjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjJjMC4xLDAsMC4yLTAuMSwwLjQtMC4xYzAuMSwwLDAuMi0wLjEsMC40LTAuMWMwLjEsMCwwLjIsMCwwLjQtMC4xbDAuMiwwbDAuMiwwCgkJYzAuMSwwLDAuMiwwLDAuNC0wLjFjMC4xLDAsMC4zLDAsMC40LTAuMWMwLjEsMCwwLjMsMCwwLjQsMGMwLjEsMCwwLjIsMCwwLjMsMGwwLjIsMGwwLjEsMGwwLjEsMGMwLjEsMCwwLjMsMCwwLjQsMGwwLjIsMAoJCWMwLDAsMC4xLDAsMCwwbDAsMGwwLjEsMGMwLjEsMCwwLjIsMCwwLjQsMGMwLjUsMCwwLjksMCwxLjQsMGMwLjksMCwxLjgsMC4xLDIuNywwLjNjMS44LDAuMywzLjQsMC45LDQuOSwxLjYKCQljMS41LDAuNywyLjksMS42LDQsMi42YzAuMSwwLjEsMC4xLDAuMSwwLjIsMC4yYzAuMSwwLjEsMC4xLDAuMSwwLjIsMC4yYzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzAuMSwwLjEsMC4zLDAuMywwLjQsMC40CgkJYzAuMSwwLjEsMC4zLDAuMywwLjQsMC40YzAuNSwwLjUsMSwxLjEsMS40LDEuNmMwLjgsMS4xLDEuNSwyLjEsMiwzLjJjMCwwLjEsMC4xLDAuMSwwLjEsMC4yYzAsMC4xLDAuMSwwLjEsMC4xLDAuMgoJCWMwLjEsMC4xLDAuMSwwLjIsMC4yLDAuNGMwLjEsMC4xLDAuMSwwLjIsMC4yLDAuNGMwLjEsMC4xLDAuMSwwLjIsMC4yLDAuNGMwLjIsMC41LDAuNCwwLjksMC41LDEuNGMwLjIsMC43LDAuNCwxLjMsMC42LDEuOQoJCWMwLjEsMC4yLDAuMywwLjQsMC41LDAuM2wwLDBjMC4yLDAsMC40LTAuMiwwLjQtMC40YzAtMC42LDAtMS4zLTAuMS0yLjFjLTAuMS0xLTAuMy0yLjEtMC42LTMuM2MtMC4zLTEuMi0wLjgtMi42LTEuNS00CgkJYy0wLjctMS40LTEuNi0yLjktMi44LTQuM2MtMC41LTAuNi0xLTEuMS0xLjUtMS42YzAuOC0zLjItMS02LTEtNmMtMy4xLTAuMi01LjEsMS01LjgsMS41Yy0wLjEtMC4xLTAuMi0wLjEtMC40LTAuMgoJCUMzOSw3LjQsMzguNSw3LjIsMzcuOSw3Yy0wLjYtMC4yLTEuMS0wLjMtMS43LTAuNWMtMC42LTAuMS0xLjItMC4zLTEuOC0wLjNjLTAuMSwwLTAuMiwwLTAuMywwQzMyLjgsMS44LDI4LjksMCwyOC45LDAKCQljLTQuMywyLjgtNS4yLDYuNi01LjIsNi42YzAsMC4xLDAuMSwwLjEsMC4xLDAuMmMtMC4zLDAuMS0wLjYsMC4yLTAuOSwwLjNjLTAuMywwLjEtMC43LDAuMi0xLDAuM2MtMC4zLDAuMS0wLjcsMC4zLTEsMC40CgkJYy0wLjcsMC4zLTEuMywwLjYtMS45LDFjLTAuNiwwLjQtMS4zLDAuNy0xLjksMS4yYzAsMCwwLDAtMC4xLDBjMC0wLjEsMC0wLjEsMC0wLjFjLTYtMi4zLTExLjQsMC41LTExLjQsMC41CgkJYy0wLjUsNi40LDIuNCwxMC40LDMsMTEuMmMtMC4xLDAuNC0wLjMsMC44LTAuNCwxLjJjLTAuNCwxLjQtMC44LDIuOS0xLDQuNWMwLDAuMi0wLjEsMC40LTAuMSwwLjdDMS42LDMwLjUsMCwzNi4yLDAsMzYuMgoJCWM0LjYsNS4zLDEwLDUuNywxMCw1LjdjMCwwLDAsMCwwLDBjMC43LDEuMiwxLjUsMi40LDIuNCwzLjVjMC40LDAuNSwwLjgsMC45LDEuMiwxLjNjLTEuNyw0LjgsMC4yLDguOSwwLjIsOC45CgkJYzUuMiwwLjIsOC42LTIuMyw5LjMtMi44YzAuNSwwLjIsMSwwLjMsMS42LDAuNWMxLjYsMC40LDMuMiwwLjYsNC44LDAuN2MwLjQsMCwwLjgsMCwxLjIsMGwwLjIsMGwwLjEsMGwwLjMsMGwwLjMsMGMwLDAsMCwwLDAsMAoJCWMyLjQsMy41LDYuNyw0LDYuNyw0YzMuNC0zLjYsMy4yLTcuMiwzLjItNy4yYzAsMC0wLjEtMC4xLTAuMS0wLjFjMC43LTAuNSwxLjMtMSwxLjktMS41YzEuMi0xLjEsMi4zLTIuNCwzLjItMy43CgkJYzAuMS0wLjEsMC4yLTAuMywwLjItMC40YzMuNCwwLjIsNS45LTIuMSw1LjktMi4xYy0wLjYtNC0zLjEtNS43LTMuMS01LjdjMCwwLTAuMSwwLTAuMSwwYzAtMC4yLDAtMC41LDAuMS0wLjdjMC0wLjQsMC0wLjgsMC0xLjIKCQlsMC0wLjNsMC0wLjFsMC0wLjFjMC0wLjEsMC0wLjEsMC0wLjFsMC0wLjJsMC0wLjNjMC0wLjEsMC0wLjIsMC0wLjNjMC0wLjEsMC0wLjIsMC0wLjNsMC0wLjNsMC0wLjNjLTAuMS0wLjQtMC4xLTAuOC0wLjItMS4yCgkJYy0wLjQtMS41LTEtMy0xLjgtNC4zYy0wLjgtMS4zLTEuOC0yLjUtMi45LTMuNWMtMS4xLTEtMi40LTEuOC0zLjctMi40Yy0xLjMtMC42LTIuNy0xLTQuMS0xLjFjLTAuNy0wLjEtMS40LTAuMS0yLTAuMWwtMC4zLDAKCQlsLTAuMSwwYzAsMC0wLjEsMC0wLjEsMGwtMC4xLDBsLTAuMywwYy0wLjEsMC0wLjIsMC0wLjMsMGMtMC4zLDAtMC43LDAuMS0xLDAuMWMtMS40LDAuMy0yLjcsMC43LTMuOCwxLjQKCQljLTEuMSwwLjctMi4xLDEuNS0yLjksMi41Yy0wLjgsMS0xLjQsMi0xLjksMy4xYy0wLjQsMS4xLTAuNywyLjItMC43LDMuM2MwLDAuMywwLDAuNiwwLDAuOGMwLDAuMSwwLDAuMSwwLDAuMmwwLDAuMgoJCWMwLDAuMSwwLDAuMywwLDAuNGMwLjEsMC42LDAuMiwxLjEsMC4zLDEuNmMwLjMsMSwwLjgsMiwxLjQsMi44YzAuNiwwLjgsMS4zLDEuNSwyLjEsMmMwLjgsMC41LDEuNiwwLjksMi40LDEuMQoJCWMwLjgsMC4yLDEuNiwwLjMsMi4zLDAuM2MwLjEsMCwwLjIsMCwwLjMsMGMwLDAsMC4xLDAsMC4xLDBjMCwwLDAuMSwwLDAuMSwwYzAuMSwwLDAuMiwwLDAuMiwwYzAsMCwwLDAsMC4xLDBsMC4xLDAKCQljMCwwLDAuMSwwLDAuMSwwYzAuMSwwLDAuMiwwLDAuMywwYzAuMSwwLDAuMiwwLDAuMy0wLjFjMC4yLDAsMC4zLTAuMSwwLjUtMC4xYzAuMy0wLjEsMC42LTAuMiwwLjktMC40YzAuMy0wLjEsMC41LTAuMywwLjgtMC41CgkJYzAuMS0wLjEsMC4xLTAuMSwwLjItMC4yQzM2LDM4LjcsMzYsMzguMywzNS44LDM4TDM1LjgsMzh6Ii8+CjwvZz4KPC9zdmc+Cg==" alt="格拉法纳实验室" width="280" />

Grafana包含对Prometheus的内置支持。

添加数据源Grafana

  1. 单击顶部标题中的Grafana图标打开侧边菜单。
  2. 在Dashboards链接下的侧边菜单中,您应找到一个名为的链接Data Sources。
  3. 单击+ Add data source顶部标题中的按钮。
  4. Prometheus从“ 类型”下拉列表中选择。

注意:如果您没有Data Sources在侧边菜单中看到该链接,则表示您当前的用户没有Admin当前组织的角色。

数据源选项

名称 描述
名称 数据源名称。这是您在面板和查询中引用数据源的方式。
默认 默认数据源意味着它将为新面板预先选择。
网址 你的Prometheus服务器的http协议,ip和端口(默认端口通常是9090)
访问 服务器(默认)=需要从Grafana后端/服务器访问URL,需要从浏览器访问Browser = URL。
基本认证 启用Prometheus数据源的基本身份验证。
用户 您的Prometheus用户的名称
密码 数据库用户的密码
刮伤间隔 这将用作Prometheus步骤查询参数的下限。默认值为15秒。

查询编辑器

通过单击标题>编辑(或在鼠标e悬停在面板上时按键)打开编辑模式下的图形。

 
名称 描述
查询表达式 Prometheus查询表达式,查看Prometheus文档。
图例格式 使用名称或模式控制时间系列的名称。例如,{{hostname}}将替换为标签的标签值hostname。
最小步骤 设置Prometheus步骤选项的下限。步骤控制Prometheus查询引擎执行范围查询时跳转的大小。遗憾的是,没有正式的prometheus文档链接到这个非常重要的选项。
解析度 控制步骤选项。小步骤可以创建高分辨率图形,但在较大的时间范围内可能会很慢,降低分辨率可以加快速度。1/2将尝试设置步骤选项,为每个其他像素生成1个数据点。值1/10将尝试设置步骤选项,以便每10个像素有一个数据点。
指标查找 在此输入字段中搜索度量标准名称。
格式为 在表格,时间序列或热图之间切换。表格格式仅适用于“表格”面板。热图格式适用于在热图面板上显示具有直方图类型的度量。在引擎盖下,它将累积直方图转换为常规,并按桶绑定排序系列。

注意:Grafana稍微修改查询的请求日期,以使它们与动态计算的步骤对齐。这可确保度量数据的一致显示,但可能会导致图表右边缘的数据间隙很小。

模板

您可以在其位置使用变量,而不是在度量标准查询中对服务器,应用程序和传感器名称等硬编码进行硬编码。变量显示为仪表板顶部的下拉选择框。这些下拉菜单可以轻松更改仪表板中显示的数据。

查看模板文档,了解模板功能和不同类型的模板变量。

查询变量

Query类型的变量允许您查询Prometheus以获取度量标准,标签或标签值的列表。Prometheus数据源插件提供了可在Query输入字段中使用的以下功能。

名称 描述
label _ names() 返回标签名称列表。
label _ values(label) 返回label每个指标中的标签值列表。
label _ values(metric,label) 返回label指定度量标准中的标签值列表。
度量(公制) 返回与指定metric正则表达式匹配的度量标准列表。
查询 _ 结果(查询) 返回一个Prometheus查询结果列表query。

有关度量标准名称,标签名称和标签值的详细信息,请参阅Prometheus文档。

使用区间和范围变量

支持$__range,$__range_s并且$__range_ms只能从Grafana V5.3

可以在查询变量中使用一些全局内置变量; $__interval,$__interval_ms,$__range,$__range_s和$__range_ms,看到全球内置变量以获取更多信息。query_result当您需要过滤变量查询时,这些可以方便地与函数一起使用,因为label_values函数不支持查询。

确保将变量的refresh触发器设置为On Time Range Change在更改仪表板上的时间范围时获取正确的实例。

用法示例:

根据仪表板中显示的时间范围内的平均QPS,使用最繁忙的5个请求实例填充变量:

Query: query_result(topk(5, sum(rate(http_requests_total[$__range])) by (instance)))
Regex: /"([^"]+)"/

在仪表板中显示的时间范围内使用具有特定状态的实例填充变量,使用更精确的$__range_s:

Query: query_result(max_over_time(<metric>[${__range_s}s]) != <state>)
Regex:

在查询中使用变量

有两种语法:

  • $<varname> 示例:rate(http_requests_total {job =〜“\ $ job”} [5m])
  • [[varname]] 示例:rate(http_requests_total {job =〜“[[job]]”} [5m])

为什么两种方式?第一种语法更易于读写,但不允许您在单词的中间使用变量。启用“ 多值”或“ 包含所有值”选项后,Grafana会将标签从纯文本转换为正则表达式兼容字符串。这意味着你必须使用=~而不是=。

注释

注释允许您在图表上叠加丰富的事件信息。您可以通过仪表板菜单/注释视图添加注释查询。

Prometheus支持两种查询注释的方法。

  • 常规度量标准查询
  • 针对挂起和触发警报的Prometheus查询(有关详细信息,请参阅在运行时检查警报)

步骤选项可用于限制从查询返回的事件数。

将Grafana指标纳入普罗米修斯

从4.6.0开始,Grafana在/metrics端点上公开了Prometheus的指标。我们还在Grafana中捆绑了一个仪表板,以便您可以更快地开始查看指标。您可以通过转到数据源编辑页面并单击仪表板选项卡来导入捆绑的仪表板。在那里你可以找到一个Grafana仪表板和一个Prometheus仪表板。导入并开始查看所有指标!

使用Provisioning配置数据源

现在可以使用Grafana的配置系统使用配置文件配置数据源。您可以在配置文档页面上阅读有关其工作原理以及可以为数据源设置的所有设置的更多信息

以下是此数据源的一些配置示例。

apiVersion: 1

datasources:
- name: Prometheus
type: prometheus
access: proxy
url: http://localhost:9090
 

在Grafana使用普罗米修斯的更多相关文章

  1. 普罗米修斯+grafana监控k8s

    其实现原理有点类似ELK.node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过 ...

  2. 当ABAP遇见普罗米修斯

    Jerry每次在工作场合中同Prometheus(普罗米修斯)打交道时,都会"出戏",因为这个单词给我的第一印象,并不是用go语言实现的微服务监控利器,而是名导雷德利·斯科特(Ri ...

  3. 普罗米修斯Prometheus监控安装

    普罗米修斯Prometheus监控安装 架构: 服务端:192.168.0.204 客户端:192.168.0.206 环境准备:所有节点安装go 语言环境 rz go1.12.linux-amd64 ...

  4. 监控神器-普罗米修斯Prometheus的安装

    搬砖党的福音:普罗米修斯-监控神器 功能: 在业务层用作埋点系统 Prometheus支持多种语言(Go,java,python,ruby官方提供客户端,其他语言有第三方开源客户端).我们可以通过客户 ...

  5. 一步步教你用Prometheus搭建实时监控系统系列(一)——上帝之火,普罗米修斯的崛起

    上帝之火 本系列讲述的是开源实时监控告警解决方案Prometheus,这个单词很牛逼.每次我都能联想到带来上帝之火的希腊之神,普罗米修斯.而这个开源的logo也是火,个人挺喜欢这个logo的设计. 本 ...

  6. Prometheus普罗米修斯快速入门

    欢迎来到普罗米修斯! Prometheus是一个监控平台,通过从监控目标的抓取HTTP端点上获取指标. 本指南将展示如何使用和安装Promethues,配置和监视第一个资源.还将下载并安装导出器Exp ...

  7. (2012年旧文)纪念史蒂夫乔布斯---IT界的普罗米修斯

    谈苹果与乔布斯系列一  IT界的普罗米修斯 纪念PC界的先驱 史蒂夫乔布斯 2012-4-5 清明节,纪念IT时代的开创人—伟大的史蒂夫 乔布斯. 没有乔布斯,计算机还是属于一群科技人士的工具,没有漂 ...

  8. 记录一次k8s环境尝试过程(初始方案,现在已经做过很多完善,例如普罗米修斯)

    记录一次Team k8s环境搭建过程(初始方案,现在已经做过很多完善,例如普罗米修斯) span::selection, .CodeMirror-line > span > span::s ...

  9. 普罗米修斯!Ubuntu下prometheus监控软件安装使用

    *Prometheus* 是一个开源的服务监控系统和时间序列数据库 官方网站:prometheus.io 一.安装prometheus cd /usr/local/        #进入安装目录 wg ...

随机推荐

  1. DoubleArrayTrie

    /** * DoubleArrayTrie: Java implementation of Darts (Double-ARray Trie System) * * <p> * Copyr ...

  2. 常用方法 Entitys转换为DataTable

    效率比较屁,将近可以用 public static DataTable EntitiesToDataTable<T>(List<T> entitys) { Type t = t ...

  3. 04-树5 Root of AVL Tree (25 分)

    An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...

  4. X86 下的SSDT HOOK

    目录 SSDTHOOK 1.SSDTHOOK 原理. 1.x32下的SSDT HOOK 2.SSDT HOOK代码 3.结果 4.总结 SSDTHOOK 1.SSDTHOOK 原理. x32下,直接获 ...

  5. mongo helper

    import datetime import pymongo import click # 数据库基本信息 db_configs = { 'type': 'mongo', 'host': '127.0 ...

  6. SAS 获取系统选项设置的过程步 PROC OPTIONS OPTION=()

    PROC OPTIONS OPTION=(VALIDVARNAME LS);RUN;

  7. Salt Highstate数据结构定义

    作者言 这篇文档详细解释了SLS文件中,每个部分的名称与含义,以及SLS中的数据处理后的数据结构. 我只是SaltStack的初学者,如果文中有错误的地方,请不吝赐教.在学习的过程,我做了一些实验,犯 ...

  8. java 查找数组中最接近的一个数字

    public static Integer getNumberThree(Integer[] intarray,Integer number){ int index = Math.abs(number ...

  9. 【Laravel基础】laravel基础之相关概念,自定义服务提供者:Contracts, ServiceContainer, ServiceProvider, Facades关系

    Contracts, ServiceContainer, ServiceProvider, Facades关系 概念 Contracts 合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现 ...

  10. Android如何屏蔽home键和recent键

    最近在做一个项目的时候,进入一个 Activity后需要暂时屏蔽掉home键和recent键(back键可以在onKeyDown里面处理),网上找了半天,都是针对旧版本android的方法,andro ...